Как определить, является ли DBlink, созданный в Oracle12c, общим или нет - PullRequest
0 голосов
/ 09 июня 2018

Я создал пару ссылок на БД.Некоторые из них являются общими, а некоторые нет.

Я создал общедоступную ссылку на БД:

CREATE SHARED DATABASE LINK dblink_name CONNECT TO username IDENTIFIED BY password AUTHENTICATED BY schema_name IDENTIFIED BY password USING 'service_name';

Я создал обычную ссылку на БД как:

create database link dblink_name connect to username identified by password using service_name;

Есть ли способ определить, является ли созданная ссылка dblink общей?режим или нет.

1 Ответ

0 голосов
/ 11 июня 2018

Нет простого способа проверить словарь данных, чтобы определить, является ли ссылка общедоступной или нет.Ниже приведены два обходных пути, использующие SYS.LINK $ и DBMS_METADATA, но у каждого из них есть проблемы.

SYS.LINK $

Недокументированная таблица SYS.LINK $ содержит эту информацию в растровом изображении, какобъяснено Соломоном Якобсоном в этой теме :

select name from sys.link$ where bitand(flag,1) = 1;

Но эта таблица содержит хэши паролей и доступна для просмотра только SYS.Возможно, вы могли бы дать разрешение на эту таблицу, что может вызвать некоторые проблемы безопасности.Или создайте представление поверх него, а затем предоставьте это представление, хотя обычно вы не должны создавать объекты в схеме SYS.

DBMS_METADATA

Пакет DBMS_METADATA воссоздает ссылку DDL иможет использоваться для проверки ключевого слова SHARED.

select owner, db_link
from dba_db_links
where lower(dbms_metadata.get_ddl('DB_LINK', db_link, owner)) like '%create shared%';

Это решение может быть медленным, особенно если в системе имеется большое количество ссылок на базы данных.И поиск текстовых строк в исходном коде может быть ненадежным.В соответствии с синтаксическими диаграммами в руководстве нет других ключевых слов, которые могут находиться между CREATE и SHARED, но это может измениться или могут быть недокументированные функции или поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...