Апр 222011
 

Параметр GLOBAL_NAMES влияет на правила именования dblink'ов. Если он установлен в значение TRUE, то dblink может иметь только имя, совпадающее с именем целевой БД. Если же он равен FALSE, то никаких ограничений на именование dblink'ов нет.

Проведём небольшой эксперимент:

-- Установим параметр в FALSE
ALTER SYSTEM SET global_names=FALSE SCOPE=MEMORY;
-- Создадим дблинк, его имя (testlink) не совпадает с именем целевой базы (test10g)
CREATE DATABASE LINK testlink CONNECT TO test IDENTIFIED BY "testpwd" USING 'test10g';
-- Запрос выполнится успешно (если всё в порядке с сетью.)
SELECT * FROM [email protected];
-- Удалим дблинк
DROP DATABASE LINK testlink;

Теперь попробуем установить GLOBAL_NAMES в TRUE и посмотреть, что из этого выйдет:

ALTER SYSTEM SET global_names=TRUE SCOPE=MEMORY;
-- Снова создадим такой же дблинк. Он создаётся, никаких ошибок нет:
CREATE DATABASE LINK testlink CONNECT TO test IDENTIFIED BY "testpwd" USING 'test10g';
-- Попробуем запрос снова
SELECT * FROM [email protected];

Dblink создался нормально, однако при попытке использовать его в запросе, получим следующее:

ERROR at line 1:
ORA-02085: database link TESTLINK connects to TEST10G

Если бы имя дблинка было test10g, то запрос прошёл бы нормально.

Хотя этот параметр по умолчанию и устанавливается в FALSE, хорошей практикой будет использовать именно TRUE, это позволит заставит разработчиков придать прозрачность и простоту системе именования dblink'ов.

  One Response to “Параметр GLOBAL_NAMES”

  1. Спасибо. Хорошо пишете. Просто и понятно.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">

(обязательно)

(обязательно)