请教一个关于oracle使用内存的问题 在RH9下,我用Libsqlora8库函数对数据库进行操作访问。
系统目的:实现对文件服务器的所有操作都记录进数据库中。
系统实现流程是:
1)初始化时,链接数据库,全局变量DBH=connectdb();
2)系统分线程对访问文件服务器的操作进行记录;
3)形成SQL语句query,利用do_insert(DBH, query)函数插入数据库中。 系统在运行过程中,oracle占用的内存越来越大,不知道什么原因。是内存泄漏吗?是调用方式不对吗?希望有高手能给予指导。内存使用情况如下:
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
7506 oracle 15 0 345M 345M 343M S 0.9 17.1 7:32 0 oracle
附connectdb()和do_insert()的代码
sqlo_db_handle_t connectdb()
{
const char * cstr = _defuser;
sqlo_db_handle_t dbh;
int handle; /* handle of the interrupt handler */ /* init */
if (SQLO_SUCCESS != sqlo_init(SQLO_OFF, 1, 100))
{
DEBUG_MSG(5, g_errlog_fp, "Failed to init libsqlora8");
return -1;
} /* register the interrupt handler */
sqlo_register_int_handler(&handle, sigint_handler); /* login & connect*/
if(SQLO_SUCCESS != sqlo_connect(&dbh, cstr))
{
DEBUG_MSG(5, g_errlog_fp, "Cannot login with %s\n", cstr);
return -1;
}
return dbh;
}int do_insert(int dbh, char *query)
{
if (SQLO_SUCCESS > sqlo_exec(dbh, query))
{
DEBUG_MSG(5, g_errlog_fp, "insert query failed: %s \n", sqlo_geterror(dbh));
return 0;
}
if (SQLO_SUCCESS != ( sqlo_commit(dbh)))
{
DEBUG_MSG(5, g_errlog_fp, "commit failed : %s\n", sqlo_geterror(dbh));
return 0;
} return 1;
}
系统目的:实现对文件服务器的所有操作都记录进数据库中。
系统实现流程是:
1)初始化时,链接数据库,全局变量DBH=connectdb();
2)系统分线程对访问文件服务器的操作进行记录;
3)形成SQL语句query,利用do_insert(DBH, query)函数插入数据库中。 系统在运行过程中,oracle占用的内存越来越大,不知道什么原因。是内存泄漏吗?是调用方式不对吗?希望有高手能给予指导。内存使用情况如下:
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
7506 oracle 15 0 345M 345M 343M S 0.9 17.1 7:32 0 oracle
附connectdb()和do_insert()的代码
sqlo_db_handle_t connectdb()
{
const char * cstr = _defuser;
sqlo_db_handle_t dbh;
int handle; /* handle of the interrupt handler */ /* init */
if (SQLO_SUCCESS != sqlo_init(SQLO_OFF, 1, 100))
{
DEBUG_MSG(5, g_errlog_fp, "Failed to init libsqlora8");
return -1;
} /* register the interrupt handler */
sqlo_register_int_handler(&handle, sigint_handler); /* login & connect*/
if(SQLO_SUCCESS != sqlo_connect(&dbh, cstr))
{
DEBUG_MSG(5, g_errlog_fp, "Cannot login with %s\n", cstr);
return -1;
}
return dbh;
}int do_insert(int dbh, char *query)
{
if (SQLO_SUCCESS > sqlo_exec(dbh, query))
{
DEBUG_MSG(5, g_errlog_fp, "insert query failed: %s \n", sqlo_geterror(dbh));
return 0;
}
if (SQLO_SUCCESS != ( sqlo_commit(dbh)))
{
DEBUG_MSG(5, g_errlog_fp, "commit failed : %s\n", sqlo_geterror(dbh));
return 0;
} return 1;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货