亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2786 | 回復(fù): 3
打印 上一主題 下一主題

ora10,Pro*c下子進(jìn)程調(diào)用數(shù)據(jù)庫問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2008-09-03 11:18 |只看該作者 |倒序瀏覽
求助
大約fork到760個進(jìn)程的時候,數(shù)據(jù)庫就拒絕連接了
程序基本上就是主程序fork一個子進(jìn)程,然后子進(jìn)程操作數(shù)據(jù)庫后退出
-12549:ORA-12549: TNSperating system resource quota exceeded

這是我的代碼

#include <sys/time.h>
#include <sys/select.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <unistd.h>
#include <netinet/in.h>
EXEC SQL INCLUDE sqlca;
EXEC   SQL   INCLUDE   oraca;  
EXEC   ORACLE   OPTION   (ORACA=YES);  
EXEC   ORACLE   OPTION   (RELEASE_CURSOR=YES);  
#define SQLCODE sqlca.sqlcode
int main(void)
{
        int conFlag=10000;
        int t;
        while(conFlag>0)
               {
                       conFlag--;
                       usleep(1000*100);
                       //sleep(1);
                /*創(chuàng)建新的連接 */
            if(fork()==0)
             {        /*子進(jìn)程代碼 */
                     printf("sleep ok[%d]\n",conFlag);
                printf("process start[%d]\n",conFlag);
                startProcess();
                printf("process quit[%d]\n",conFlag);
                exit(0);
                  
              }
         
                      else
                      {
                      }
                     
       }
      
        exit(0);
}
int  startProcess()
{
        sql_context context;
        struct sqlca sqlca; /* 需要在此定義一個局部的sqlca */
        char uid[] = "maps/maps";
        /* 以下SQL語句的執(zhí)行順序不能更改 */
        EXEC SQL ENABLE THREADS;
        EXEC SQL CONTEXT ALLOCATE :context;
        EXEC SQL CONTEXT USE :context;
        EXEC SQL CONNECT :uid;
        if(SQLCODE<0){
                printf("創(chuàng)建數(shù)據(jù)庫連接失敗,%d:%s\n", SQLCODE,sqlca.sqlerrm.sqlerrmc);
                return -1;
        }
        insert_data( context );
        EXEC SQL COMMIT WORK RELEASE;
        if(SQLCODE<0){
                printf("斷開數(shù)據(jù)庫連接失敗!%d:%s\n",SQLCODE,sqlca.sqlerrm.sqlerrmc );
                return -1;
        }
        EXEC SQL CONTEXT FREE :context;
       
        return 0;
}
int insert_data( context )
{
        struct sqlca sqlca; /* 需要在此定義一個局部的sqlca */
        int i;
        int msg_seq;
        EXEC SQL CONTEXT USE :context; /* 指定執(zhí)行SQL語句的上下文 */
        for(i=0; i<2; i++ ){
                EXEC SQL select SMP_ID_SEQ.NEXTVAL into :msg_seq from DUAL;
        if(sqlca.sqlcode!=0)
        {
                printf("取序列號失敗!%d\n",sqlca.sqlcode);
                return -1;
        }
               
                EXEC SQL insert into smp_msg_store values(:msg_seq,1,1,:i);
                if(SQLCODE!=0){
                        printf("插入紀(jì)錄失敗!%d:%s\n",SQLCODE,sqlca.sqlerrm.sqlerrmc);
                        return -1;
                }
        }
}

論壇徽章:
0
2 [報告]
發(fā)表于 2008-09-03 15:19 |只看該作者
my god,數(shù)據(jù)庫連接數(shù)太多。

你應(yīng)該使用多線程共享有限的數(shù)據(jù)庫連接,用連接池,要用就取一個,用完了就釋放。
不過這不是proc的強(qiáng)項

論壇徽章:
0
3 [報告]
發(fā)表于 2008-09-03 22:49 |只看該作者
alter system set processes = XXXXX
更大的一個數(shù),就可以了
不過正如樓上說的,用連接池吧。
proc是可以
編譯時候加上連接池選項就可以。
不過我記不清楚了。你查查proc的手冊吧

論壇徽章:
0
4 [報告]
發(fā)表于 2008-09-04 11:11 |只看該作者
嘿嘿,搞定了,其實是忘了waitpid
至于connection pool,要是java還考慮考慮,這是unix下的c,還是算了
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP