В 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, проблема сохранится или нет.