proc程序与数据库保持长连接

ks9960 2005-07-12 02:41:16
一个长期运行的proc程序中,如何检测数据库连接的状态了?比如我可以检测出连接异常,然后重连。
...全文
687 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ks9960 2005-07-25
  • 打赏
  • 举报
回复
在顶一下,下周结帖
rual_true 2005-07-21
  • 打赏
  • 举报
回复
这个问题也在困扰着我,我一般的做法是通过EXEC SQL WHENEVER SQLERROR 来监视oracle错误,出错后的处理由调用方再重新连接数据库,也是比较麻烦的方法,希望大家能够讨论出一个通用、省事的方法。
ks9960 2005-07-21
  • 打赏
  • 举报
回复
谢谢!
是前一种.由客户端程序控制.
最开始是发觉每条sql语句都要判断执行状态,如果为ora-01012的话就重连,这样做比较麻烦。现在就只是把错误置位为数据库出错,在最后回滚,然后判断如果是ora-01012的话就重连。

有一点不清楚的地方是,oracle把20分钟没有活动的session置为inactive,那多久oracle会把这个session清理掉?还是不清理?(没找到相关的资料)
如果不清理,在置为inactive后如果有新的操作是否会恢复为active并正常执行请求?如果是这样的话那连接的保持应该是可以使用一些手段来 keep alive;
qfsb_p 2005-07-21
  • 打赏
  • 举报
回复
我觉得楼主应该描述清楚这个诊断是由客户端的程序来进行还是由数据库服务器来进行。

我个人觉得楼主说的是前一中,那么我认为比较简单的实现是有个守护线程/进程来定时对通过该连接进行一个类似ping的测试,可以考虑执行一个类似“select user from dual”的语句
ks9960 2005-07-20
  • 打赏
  • 举报
回复
顶完三次。呵呵
ks9960 2005-07-18
  • 打赏
  • 举报
回复
在顶一下
ChinaOk 2005-07-14
  • 打赏
  • 举报
回复
要不就开一个专门监视的线程、定时去检查一下了。别的还没想到啥好招。
ks9960 2005-07-14
  • 打赏
  • 举报
回复
主要是不想在每一个数据库操作的地方都作连接检查,希望能够有个统一的解决方案.
请大家都帮帮忙,提点建议.谢谢 :)
ChinaOk 2005-07-13
  • 打赏
  • 举报
回复
如果能间歇性的断开重联比较好吧。再加上发生错误立刻重联。
ChinaOk 2005-07-13
  • 打赏
  • 举报
回复
UP
!俺也刚搞!
支持一下!
楼主帮忙看看俺的问题如何?
http://community.csdn.net/Expert/topic/4141/4141308.xml?temp=.8532831

ks9960 2005-07-13
  • 打赏
  • 举报
回复
up一下
ks9960 2005-07-12
  • 打赏
  • 举报
回复
但是我想看看有没有其他更好的方法
ckc 2005-07-12
  • 打赏
  • 举报
回复
定期执行一个查询,查不到了就自动重连
ks9960 2005-07-12
  • 打赏
  • 举报
回复
你的意思是V$session中Inactive就是异常了?
而且如何确定程序使用session的sid了?
LGQDUCKY 2005-07-12
  • 打赏
  • 举报
回复
查看v$session的信息可以得到连接状态

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧