Невозможно просмотреть синонимы в схеме в Oracle SQL Developer - PullRequest
0 голосов
/ 30 марта 2020

В Oracle я пользователь C (как вы знаете, схема и пользователь совпадают). C был предоставлен доступ только для чтения к обеим схемам A, B. А имеет только таблицы. B имеет только синонимы, указывающие на A. C может запрашивать таблицы, синонимы в A, B соответственно, используя select A.somename, select b.somename. Но в Oralce SQL Developer C не может просматривать таблицы или синонимы (на левой панели после перехода к другим пользователям и выбора A или B).

Что может быть Root Причина .?

1 Ответ

0 голосов
/ 30 марта 2020

SQL Разработчик покажет вам объекты в C, которыми владеет C - не покажет вам вещи, к которым C имеет доступ.

Если вы хотите увидеть синонимы или объекты у вас есть SELECT privs, go для элемента Other Users, затем откройте элемент таблиц или синонимов в дереве.

Но вы их тоже НЕ видите, но знаете, что они есть?

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

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

Существует альтернатива, вы можете попросить SQL Разработчик обработать синонимы для таблиц AS таблиц в дереве

enter image description here

Мы Теперь мы не просто запрашиваем TABLE из ALL_OBJECTS, теперь мы также включаем SYNONYMS для любых таблиц.

Примечание: кому-то придется создавать SYNONYM в вашей схеме - это не будет тянуть TABLES для PUBLI C СИНОНИМЫ. Потому что… их тысячи, и никто не хочет видеть все это.

Итак, давайте сделаем быстрый сценарий

create user a identified by oracle;

create user b identified by oracle;

create user c identified by oracle;

create user d identified by oracle;

grant connect, resource to a,b,c,d;
grant dba to d;

create table a.test(a int);
grant select on a.test to b;
create synonym b.a_test for a.test;

A не сможет увидеть синоним B на объект в схеме А. Но D сможет - потому что у него есть доступ к представлениям DBA_ через эту роль DBA.

Просмотр через подключение D, просмотр других пользователей, B, Синонимы -

enter image description here

Если вы посмотрите журнал отчетов, то увидите список запросов, которые мы выдаем в словарь данных для перечисления объектов. D проходит через DBA_OBJECTS и DBA_SYNONYMS

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