OracleEBS には、AP、AR、XLA などのモジュールがあります。各モジュールには、対応するモジュール名と同じ名前の独自のスキーマがあります。APPS スキーマもあります。APPS スキーマで作成されたオブジェクトのシノニムを介して、異なるスキーマの異なるテーブルにアクセスできます。たとえば、xla スキーマに xla.xla_transaction_entities という名前のテーブルがあり、このテーブルには apps スキーマにシノニムがあります。つまり、次の 2 つの選択クエリは、同一の結果セットを生成する必要があります。
select distinct entity_code from xla.xla_transaction_entities
と
select distinct entity_code from apps.xla_transaction_entities
ただし、2 番目のクエリは最初のクエリよりも少ない結果しか生成しませんでした。次に、apps.xla_transaction_entities シノニムを削除して再作成しました。シノニムを再作成した後でのみ、上記の 2 つのクエリは同一の結果セットを生成しました。問題は、なぜそれが起こるのかということです。シノニムが異なる結果セットを生成した原因は何ですか? 私の知る限り、同義語はまさに同義語です。名前が示すように、対応するテーブルと同じ結果セットを生成する必要があります。
編集:別のテストインスタンスで、同じ問題を再現しました:
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 スキーマですべてのシノニムを再作成しない限り、問題が解決しないかどうか疑問に思っています。