Oracle: можно ли создать синоним для схемы?

во-первых

Я новичок в oracle, и у меня нет местного гуру oracle, чтобы помочь мне.

вот моя проблема / вопрос

у меня есть некоторые сценарии SQL, которые должны быть выпущены в несколько экземпляров Oracle. Скрипты создают хранимые процедуры.
Схема, в которой создаются хранимые процедуры, отличается от схемы, содержащей таблицы, из которых считываются хранимые процедуры.

на разных экземпляры, схема, содержащая таблицы, имеет разные имена.

очевидно, я не хочу изменить скрипты, чтобы сделать их на заказ для различных случаев.

мне было предложено, что решение может заключаться в настройке синонимов.

можно ли определить синоним для схемы таблицы в каждом экземпляре и использовать синоним в моих сценариях?

есть ли другие способы сделать эту работу без редактирования скриптов каждый время?

Спасибо за любую помощь.

3 ответов


это поможет узнать, какая версия Oracle, но начиная с 10g--нет, вы не можете сделать синоним для схемы.
Для таблиц можно создавать синонимы,что позволит не указывать схему в сценариях. Но это означает, что синонимы должны быть идентичны в каждом случае, чтобы быть полезными...

другой вариант-заменить ссылки на схемы переменными, поэтому при запуске скрипта пользователю будет предложено указать имена схем. Я предпочитаю этот подход, потому что это меньше работы. Вот пример, который будет работать в SQLPlus:

CREATE OR REPLACE &schema1..vw_my_view AS
  SELECT *
    FROM &&schema2..some_other_table

красота этого заключается в том, что человек, который запускает сценарий, будет запрашиваться только один раз для каждой переменной, а не каждый раз, когда переменная встречается. Так что будьте осторожны с опечатками:)


Да, вы можете создать синоним для схемы.

select ksppinm, ksppstvl from x$ksppi a, x$ksppsv b where a.indx=b.indx and ksppinm like '%schema%synonym%'
ALTER SYSTEM SET  "_enable_schema_synonyms" = true SCOPE=SPFILE;
STARTUP FORCE
show parameter synonym

предполагая, что у вас уже есть схема с именем ORA...

CREATE SCHEMA SYNONYM  ORASYN for ORA;   -- create synonym for schema
CREATE TABLE ORASYN.TAB1(id number(10)); -- create table in schema

дополнительная информация здесь:http://oracle-network.com/database/how-to-create-synonym-for-a-schema/


Да, существует скрытый способ создания синонима схемы.

существует скрытый параметр _enable_schema_synonyms. Это ложь по умолчанию , но вы можете установить его в true и создать синоним.