我有个自己写的系统项目,目录结构是这样的
$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函数,在主程序中调用也没问题.
我感觉这两个问题都可能与数据库连接上下文有关,但是不清楚具体的问题所在,也不知道如何去查找问题,恳请高人赐教啊!
谢谢!