linux 下 Oracle ProC程序开发遇到的奇怪问题

herobox 2017-02-04 02:22:32
我有个自己写的系统项目,目录结构是这样的
$HOME/src/source
main1.pc main2.pc...... #主要存放的各服务的主程序

$HOME/lib #存放编译的静态库.a文件
$HOME/bin #存放编译的可执行文件
$HOME/headfile #存放各种头文件

$HOME/src/pathA
dbfuncgrp1.pc dbfuncgrp2.pc ......... #主要存放涉及数据库操作的业务工具函数等

$HOME/src/pathB
pathB1.c pathB2.c........ #以下都是存放的不同的工具函数

$HOME/src/pathC
pathC1.c pathC2.c ........

.............


现在出现了两个暂时还没能确定本质原因的问题:
1.有一个检查授权的函数,在程序启动时检查一次,以后就在程序运行过程中定期检查,主要就是执行select语句从表中获取授权码与计算的进行对比,启动时执行该函数是没问题的,我自己做了定期检查的测试也是没发现问题,但是在生产环境下执行该函数做查询时,日志中报了ORA-03113: end-of-file on communication channel 的错误.

程序是连接的同一个局域网内的远程数据库,在启动时连接一次数据库,在之后的循环中执行数据库操作.当然,在函数执行之前没有检测数据库连接及重连.
我怀疑是由于网络原因导致的相关异常,但是不明白具体原因.

2.另一个更奇怪的现象,有个数据库查询的功能函数,在程序运行很久之后,就会在该函数处崩掉.也是比较简单的select操作.
还有问题1中的授权检查函数,放在dbfuncgrp1.pc中参与编译,生成的程序在运行一段时间后就会崩掉,而放在dbfuncgrp2.pc中编译,生成的程序就可以正常的运行.而dbfuncgrp1.pc中还有其他DB函数,在主程序中调用也没问题.


我感觉这两个问题都可能与数据库连接上下文有关,但是不清楚具体的问题所在,也不知道如何去查找问题,恳请高人赐教啊!
谢谢!

...全文
213 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdsnhan 2017-02-06
  • 打赏
  • 举报
回复
引用 4 楼 herobox 的回复:
@jdsnhan 崩溃就是通过打日志发现走到该函数处主进程就消失了,core 掉了,不过没有core文件; 就是如图的select into的语句;另外一个函数是通过游标获取数据,然后更新某表对应的数据.这两个都出现过运行一段时间主程序就崩的现象,而注释掉就没有问题.
看不到具体内容,只能凭空猜想。 一段时间是多长时间,有规律吗? 难不成是连接没释放,session满了,或者游标数满了?看看alter日志有没有错误信息。
sxq129601 2017-02-04
  • 打赏
  • 举报
回复
看错了不是tmadmin
sxq129601 2017-02-04
  • 打赏
  • 举报
回复
tmadmin 看看是否有进程挂起,或者重新编译下代码看看,可能编译的有问题
jdsnhan 2017-02-04
  • 打赏
  • 举报
回复
第一个问题,从字面上看,是断开了与数据库的连接。 生产环境下也可能有无操作超时断开连接的设置。 可以尝试修改为 每次检验前连接数据库,检验通过后断开数据库。 第二个问题,从函数处崩溃,问题有点泛泛,崩溃是什么现象,有什么提示,语句是怎么写的
herobox 2017-02-04
  • 打赏
  • 举报
回复
@jdsnhan 崩溃就是通过打日志发现走到该函数处主进程就消失了,core 掉了,不过没有core文件; 就是如图的select into的语句;另外一个函数是通过游标获取数据,然后更新某表对应的数据.这两个都出现过运行一段时间主程序就崩的现象,而注释掉就没有问题.

17,089

社区成员

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

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