Oracle: возможно ли создать синоним для схемы? - PullRequest
6 голосов
/ 23 сентября 2010

Во-первых

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

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

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

В разных случаях схема, содержащая таблицы, имеет разные имена.

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

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 11 апреля 2015

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

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

2 голосов
/ 10 августа 2015

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

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 / баз данных / как к создать-синоним-для-а-схемы /

2 голосов
/ 23 сентября 2010

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

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

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

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

...