• 主页
  • Oracle 基础和管理
  • Oracle 高级技术
  • Oracle 认证与考试
  • 职位交流

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

ks9960 2005-07-12 02:41:16
一个长期运行的proc程序中,如何检测数据库连接的状态了?比如我可以检测出连接异常,然后重连。
...全文
625 点赞 收藏 15
写回复
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的信息可以得到连接状态
回复 点赞
发动态
发帖子
Oracle
创建于2007-09-28

6420

社区成员

5.4w+

社区内容

Oracle开发相关技术讨论
社区公告
暂无公告