Вопрос

во-первых

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

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

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

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

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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-synom-for-a-schema/

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top