在 OracleEBS 中,有 AP、AR、XLA 等模块。每个模块都有自己的模式,其名称与相应的模块名称相同。还有APPS模式。您可以通过在 APPS 模式中创建的对象的同义词访问来自不同模式的不同表。例如,在 xla 架构中有一个名为 xla.xla_transaction_entities 的表,并且该表在应用程序架构中有同义词。也就是说,以下两个选择查询应该产生相同的结果集:
select distinct entity_code from xla.xla_transaction_entities
和
select distinct entity_code from apps.xla_transaction_entities
但是,第二个查询产生的结果比第一个少。然后,我删除并重新创建了 apps.xla_transaction_entities 同义词。只有在重新创建同义词之后,上述两个查询才会产生相同的结果集。问题是,为什么会发生?是什么导致同义词产生不同的结果集?据我所知,同义词就是——同义词。顾名思义,它们应该产生与其对应的表相同的结果集。
编辑:在另一个测试实例中,我重现了同样的问题:
select distinct entity_code from apps.xla_transaction_entities
产生以下内容:
THIRD_PARTY_MERGE
MANUAL
INTER_ASSET_TRANSACTIONS
TRANSACTIONS
DEPRECIATION
select distinct entity_code from xla.xla_transaction_entities
产生以下内容:
AP_PAYMENTS
RCV_ACCOUNTING_EVENTS
THIRD_PARTY_MERGE
MANUAL
ADJUSTMENTS
PURCHASE_ORDER
MTL_ACCOUNTING_EVENTS
RECEIPTS
INTER_ASSET_TRANSACTIONS
AP_INVOICES
TRANSACTIONS
DEPRECIATION
select * from dba_synonyms
where synonym_name = 'XLA_TRANSACTION_ENTITIES'
给了我以下内容:
OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME, DB_LINK
APPS XLA_TRANSACTION_ENTITIES XLA XLA_TRANSACTION_ENTITIES
select * from dba_synonyms
where TABLE_NAME = 'XLA_TRANSACTION_ENTITIES'
输出以下内容:
OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
APPS XLA_TRANSACTION_ENTITIES XLA XLA_TRANSACTION_ENTITIES
APPS XLA_TRANSACTION_ENTITIES_UPG XLA XLA_TRANSACTION_ENTITIES
因此,您可以看到 APPS.XLA_TRANSACTION_ENTITES 指向 XLA.XLA_TRANSACTION_ENTITIES。再一次,一旦我重新创建了同义词,问题就消失了。这让我如此困扰的原因是因为我们编写的大多数自定义报告都使用了同义词而不是实际的表名。所以,我想知道除非我在 APPS 模式中重新创建所有同义词,否则问题是否会持续存在。