proc程序,单线程转多线程的方案问题,非高莫入,谢谢公司做项目,把以前unix或openvms下的过程控制系统移植到windows 2000下。以前的系统是多进程的,没有用多线程。现在移到win2k,考虑用多进程多线程实现。现在程序都已经写完,模块测试业已完成,进入整体测试,结果程序出问题了,崩溃了。崩溃是随机出现的,可能运行好几天没问题,亦可能两小时就有问题。后来查proc的编程手册,发现问题出在proc程序访问oracle。多线程访问数据库,要考虑会话的同步与互斥,proc为每一个连接会分配一个runtime context,
而每一次访问数据库都要指定使用哪个context,否则内存错误。这时我们发现我们的proc程序要重写了,每一个proc的函数都要传递一个context变量了,这个工作量将是巨大的现在请问各位高手,我应该采用什么样的方案可使工作量减到最少?
而每一次访问数据库都要指定使用哪个context,否则内存错误。这时我们发现我们的proc程序要重写了,每一个proc的函数都要传递一个context变量了,这个工作量将是巨大的现在请问各位高手,我应该采用什么样的方案可使工作量减到最少?
解决方案 »
- 脆弱的OEM,请教如何在本地计算机使用OEM
- ORACLE,多字段索引跟但字段索引的效率 会一样吗
- 为什么使用union 或者union all的连接查询的语句中不能够使用 Order 排序? 怎么查看具体的insert into a select ... from ...的过程呢?
- sqlplus 页面打不开,服务里面也没有,为什么????
- SQL2000、mySQL和ORACLE数据库有哪些优点?
- oracle varchar 类型转换成date问题
- 求救进入ORACLE和RMAN的shell脚本怎么写?
- 紧急求助:本人给一个公司做了个网站,用JSP ORACLE SERVERLET 技术,但做完后发现网上没有可以支持上传的空间,几
- 可怕呀!难道又要重新安装
- oracle连接问题,奇怪。
- 用透明网关连接sqlserver怎么不通
- 在java中怎么样将一个字符串传给一个存储过程
来实现连接的多次共享。http://community.csdn.net/Expert/topic/4141/4141308.xml?temp=.1353113
在其他proc函数中调用这个函数指针,来获得context,而这个函数则负责分配返回context。
这样可以避免在proc函数改接口。
sql_context *get_context(int context_no);
当需要访问数据库时就调用该函数以使用该context。对多个线程调用的公共函数则需要传递context。方法找到了,不过还是要改很多代码,结果头头把这个方案给否了,而是只是在连接数据库
时实现互斥。不过我窃以为这是一个地雷啊。多谢ChinaOk(农村表哥),给了我不少启示。
总结一下。
1、不改proc函数接口是不可能的,因为预编译时指定threads=yes,则会在代码中搜索
exec sql context use 语句。
2、sqlca应该使用本地的,别用全局的。