a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > Oracle > 正文

proc oracle 連接釋放不了的問題

2024-08-29 13:54:03
字體:
來源:轉載
供稿:網友
轉自:http://www.91linux.com/html/article/database/Oracle/20081205/14333.html

PRoc oracle 連接釋放不了的問題
筆者公司的應用系統每隔一段時間,oracle連接就達到上限了;懷疑是應用沒有正確的釋放oracle連接;說來慚愧,proc斷斷續續的用了幾年,可能是以前公司的代碼寫得太好了,從沒有去關心基本的proc連接、釋放是怎么處理的,這問題逼得我得去熟悉這方面的東西了;弄了兩天才找到問題的根源,其中大半時間是熟悉原系統的代碼、定位問題,其他時間是找網上的資料看、做相關的測試;

經過分析,將問題定位在了數據庫打開、關閉的相關函數;后臺c++應用的根本沒有成功的釋放oracle 連接,數據庫操作函數如下:

sql_context db_open(const char* usr, const char* pwd)
{

EXEC SQL BEGIN DECLARE SECTION;
sql_context ctx;
char username[64];
char passwd[64];
EXEC SQL END DECLARE SECTION;

struct sqlca sqlca;
EXEC SQL ENABLE THREADS;
EXEC SQL CONTEXT ALLOCATE :ctx;
EXEC SQL CONTEXT USE :ctx;

strcpy(username,usr);
strcpy(passwd,pwd);

EXEC SQL CONNECT :username IDENTIFIED BY :passwd;

if (sqlca.sqlcode)
{
printf( "連接oracle數據庫失敗!");
return NULL;
}

return ctx;
}

int db_close(sql_context ctx)
{
struct sqlca sqlca;
EXEC SQL CONTEXT FREE :ctx;
if( SQLCODE != 0 )
{
printf( "斷開數據庫連接失敗!%d:%s/n",SQLCODE,sqlca.sqlerrm.sqlerrmc );
return -1;
}
return 0;
}

經過測試,發現以上db_close根本沒有釋放數據庫連接;經過和網上示范程序的對比,終于發現了問題:

原來oracle 的sql context,需要 release之后,才能正確釋放數據庫連接;如果不做release,free context不會報任何錯誤(即db_close中并不返回-1),但是數據庫連接卻不會釋放(對oracle的這個處理機制,汗一個-_-|||,或者說明我的proc比較弱吧,可能還有別的解決辦法);

把db_close改成如下,問題解決:

int db_close(sql_context ctx)
{
struct sqlca sqlca;

EXEC SQL CONTEXT USE :ctx;
EXEC SQL COMMIT WORK RELEASE;
EXEC SQL CONTEXT FREE :ctx;

if( SQLCODE != 0 )
{

printf( "斷開數據庫連接失敗!%d:%s/n",SQLCODE,sqlca.sqlerrm.sqlerrmc );
return -1;
}
return 0;
}


注意,以上CONTEXT FREE 執行成功或者失敗,SQLCODE 都是0 !!!



本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/workhardupc100/archive/2009/12/30/5108876.aspx
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 99国产精品99久久久久久 | 久久色视频 | 欧美国产一区二区在线观看 | 毛片国产 | 国产激情视频 | 精品国产欧美一区二区三区成人 | 久久久精品欧美一区二区免费 | 在线中文字幕视频 | 欧美亚韩| 亚洲v日韩v综合v精品v | 九九天堂| 欧美精品一区二区三区四区五区 | 亚洲av一级毛片 | 久99久在线观看 | 日本黄色免费观看 | 国产精品伦一区二区三级视频 | 国产一区亚洲 | 欧美成人精品 | 一级一级特黄女人精品毛片 | 亚洲高清视频在线观看 | 一级高清视频 | 伊人国产精品 | 国产偷v国产偷v亚洲 | 天天干一干 | 欧美一区二区三区免费 | 成人免费看 | 日本一级中文字幕久久久久久 | 网址国产| 人人插| 欧美a在线 | 免费av在线网站 | 欧美a在线 | 国产精品第一国产精品 | 国产99久久精品一区二区永久免费 | 亚洲成人精品区 | 午夜视频91 | gav成人免费播放视频 | 日本免费看 | 欧美在线资源 | 国产精品特级毛片一区二区三区 | 再深点灬舒服灬太大了添少妇视频 |