【发布时间】:2011-06-14 11:48:51
【问题描述】:
我有一个包含这些步骤的批处理应用程序。
- 从表中选择更新标志列为空的所有记录
- 处理所选信息
- 将记录标记为已更新
我正在使用 Oracle 10g,我想要做的是能够在多个服务器上同时执行这个应用程序。但是,我担心Oracle的锁定机制。 当我在第一台服务器上运行的应用程序的第一个实例选择一条记录时,第二台服务器上运行的另一个实例不应该能够选择它。
是否适合将“选择更新”用于这种目的?如果我使用“选择更新跳过锁定”模式,应用程序的第二个实例是否会静默跳过之前被第一个实例锁定的记录并选择其他行?还是等到锁定的行被释放?
任何意见和建议将不胜感激
【问题讨论】:
-
一个数据库实例和多个客户端,对吗?如果是这样,只需使用表中的一个字段(或多个字段)来攻击数据的不同部分(session1:select * from table where flag='A',session2:select * from table where flag='B')。您可以使用日期或任何与客户端会话互斥的字段(动态分区)
标签: database oracle concurrency batch-file oracle10g