表的Oracle同义词会导致竞争条件吗?

时间:2012-07-07 14:02:03

标签: oracle insert synonym

我在远程数据库中使用了表的同义词。远程站点中的应用程序将数据插入源表,我的应用程序将通过表的同义词读取这些数据。

远程站点应用程序将在将记录插入源表后发送TCP消息。我的应用程序在收到该消息后执行获取。 但我检测到某些记录无法获取,因为在收到TCP消息时表(同义词)中没有这些记录。

在插入和获取同义词时是否有可能存在竞争条件?

1 个答案:

答案 0 :(得分:3)

同义词的存在(或不存在)没有影响。

如果源应用程序在发送通知之前提交,并且您的应用程序使用默认的读取已提交事务隔离级别,则应用程序将查看在查询数据库时提交的所有行。我所知道的唯一例外是远程数据库是一个RAC数据库,其中MAX_COMMIT_PROPAGATION_DELAY被设置为非零值。除非远程数据库是旧的(10.2之前的)Oracle版本,否则只有在有人更改了该参数的默认值时才会出现这种情况。

您可以通过查看v$version

来确定Oracle版本
select * 
  from v$version

您可以通过查询MAX_COMMIT_PROPAGATION_DELAY来确定是否已设置v$parameter(如果尚未设置参数,这将返回0行)

select name, value 
  from v$parameter 
 where name = 'max_commit_propagation_delay'

您可以通过查询gv$instance来确定数据库是否是多节点RAC群集。如果返回大于1的count(*),则它是一个多节点RAC数据库

select count(*) 
  from gv$instance
相关问题