最近开发了一个VC程序,服务器端采用的是oracle 11g 的数据库,遇到了一些问题,希望csdn上有高手能给予解答
1.客户端程序A,接收网络上传输的数据,处理后 插入 数据库中的一张表,数据量有点大,大概1个小时1万多条数据。有的时候在这个 A 程序启动的时候,会遇到 ORA24550 的错误,google了很久这个错误,也没有找到解决办法。 但是 如果 A 程序启动后 几分钟 不出现这个 错误,那这个程序就能稳定的运行了。(最长是2天事件,实际测试的结果。)2.为了防止 客户端程序 意外被终止,导致程序没有 释放数据库连接语句,然后连接就一直存在的情况, 我生成一个 profile 文件,语句如下:
CREATE PROFILE "AA" LIMIT
CPU_PER_SESSION DEFAULT
CPU_PER_CALL DEFAULT
CONNECT_TIME DEFAULT
IDLE_TIME 10
SESSIONS_PER_USER DEFAULT
LOGICAL_READS_PER_SESSION DEFAULT
LOGICAL_READS_PER_CALL DEFAULT
PRIVATE_SGA DEFAULT
COMPOSITE_LIMIT DEFAULT
PASSWORD_LIFE_TIME DEFAULT
PASSWORD_GRACE_TIME DEFAULT
PASSWORD_REUSE_MAX DEFAULT
PASSWORD_REUSE_TIME DEFAULT
PASSWORD_LOCK_TIME DEFAULT
FAILED_LOGIN_ATTEMPTS DEFAULT
PASSWORD_VERIFY_FUNCTION DEFAULT
然后将客户端登陆的用户 授予了这个 权限: alter user rfid profile AA
profile里我设置了 IDLE_TIME 10. 是不是当我 客户端 10分钟内都没有操作数据库的话, 这个连接就会被 数据库自动释放掉了呢?
1.客户端程序A,接收网络上传输的数据,处理后 插入 数据库中的一张表,数据量有点大,大概1个小时1万多条数据。有的时候在这个 A 程序启动的时候,会遇到 ORA24550 的错误,google了很久这个错误,也没有找到解决办法。 但是 如果 A 程序启动后 几分钟 不出现这个 错误,那这个程序就能稳定的运行了。(最长是2天事件,实际测试的结果。)2.为了防止 客户端程序 意外被终止,导致程序没有 释放数据库连接语句,然后连接就一直存在的情况, 我生成一个 profile 文件,语句如下:
CREATE PROFILE "AA" LIMIT
CPU_PER_SESSION DEFAULT
CPU_PER_CALL DEFAULT
CONNECT_TIME DEFAULT
IDLE_TIME 10
SESSIONS_PER_USER DEFAULT
LOGICAL_READS_PER_SESSION DEFAULT
LOGICAL_READS_PER_CALL DEFAULT
PRIVATE_SGA DEFAULT
COMPOSITE_LIMIT DEFAULT
PASSWORD_LIFE_TIME DEFAULT
PASSWORD_GRACE_TIME DEFAULT
PASSWORD_REUSE_MAX DEFAULT
PASSWORD_REUSE_TIME DEFAULT
PASSWORD_LOCK_TIME DEFAULT
FAILED_LOGIN_ATTEMPTS DEFAULT
PASSWORD_VERIFY_FUNCTION DEFAULT
然后将客户端登陆的用户 授予了这个 权限: alter user rfid profile AA
profile里我设置了 IDLE_TIME 10. 是不是当我 客户端 10分钟内都没有操作数据库的话, 这个连接就会被 数据库自动释放掉了呢?
解决方案 »
- 資料欄的插入值過大
- oracle函数查找
- 既然大家都是高手,谁帮我解决一下,为什么我的中文版oracle9的sqlplus和DBA studio不能正确显示中文记录?
- 如何在procedure执行时,查询到当前SESSION中的_b_tree_bitmap_plans的设置?
- Oracle中如何调用存储过程呢?急,谢谢帮忙!!!!!!!!!!!!!!!!
- 求一sql语句
- oracle 8i 到 oracle 9i 后数据库连接出现问题?
- 关于Oracle的空字符串的问题
- 有谁会PSP(PL/SQL PAGE)啊?我有问题请教。
- 几个菜鸟问题。高手们可以牛刀小试~~up有分
- 在线等。。。。java中jdbc插入时将String转换成CLOB
- sql 语句查询一个表中不同的记录有多少条?
ORA-24550: unhandled signal #number received. string
Cause: Serious error: signal received
Action: Refer to the platform-specific signal code, and see if the application code caused the error. Otherwise, record all error state and notify Oracle Support Services.
应该是你应用程序的问题 和数据库没有关系
参考一下
http://forums.tangosol.com/forums/thread.jspa?threadID=964562
2
是的 下面是官方文档上的解释
IDLE_TIME
Specify the permitted periods of continuous inactive time during a session, expressed in minutes. Long-running queries and other operations are not subject to this limit.
现在有新的问题:
我设置了 IDLE_TIME 后
客户端10分钟没后数据库操作,连接就断开了
但是 10分钟后,再次操作数据库就会弹出消息框报错。
但是我程序里每次执行 sql 语句的时候都会有如下的判断:
if(!m_Db.IsOpen())
{
m_Db.OpenEx(_T("DSN=rfid_server;UID=rfid;PWD=123") ,CDatabase::noOdbcDialog);
}这样应该就能重新连接了吧,为什么还是会报错呢?
SQL Error: ORA-02396: 超出最大空闲时间, 请重新连接
至于你说的
if(!m_Db.IsOpen())
{
m_Db.OpenEx(_T("DSN=rfid_server;UID=rfid;PWD=123") ,CDatabase::noOdbcDialog);
}
这一段程序为什么没有起作用
你可以在程序运行的过程中下个断点
调试一下看看有没有执行到这一步