我需要在Oracle数据库中进行多次登录和查询执行,每个进程10个用户,每台PC 10个进程。
我在想我会创建10个线程,每个用户登录一个线程。
这可行吗?任何建议都表示赞赏。
非常新的线程。
更新
感谢所有的评论和答案。
以下是一些其他细节:
使用Oracle 10.2,Delphi XE和dbExpress组件即时创建。
我们的设计是每台机器运行10个进程,并为每个进程模拟10个用户登录。每次登录都在自己的线程内(实际上我需要在每个线程中有两个登录,所以我实际上每台机器创建了200个会话。)
对于此模拟练习,在建立连接后,每个线程通过调用循环内的多个存储过程来检索一堆数据。对于每个存储过程,我动态创建一个TSQLProcedure对象并关闭,然后在使用它之后将其释放。现在我超过了ORA1000 Max Cursors,我不明白,因为我关闭并释放每个sp对象。
更改服务器端的设置是不可能的。我看到一些文档说明在应用程序端你可以设置RELEASE_CURSOR = YES。我猜这是一个在程序级别设置的选项。
答案 0 :(得分:5)
是的,这是可行的。您可能需要一个线程用于您需要的每个会话(请参阅here以获得解释),并且您必须确保在thread safe way中调用OCI,如何执行此操作取决于您用于调用的库OCI,如果你不直接打电话给OCI。
答案 1 :(得分:3)