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 и создать синоним.