Можем ли мы создать частный синоним в другой схеме, для которой объект находится в другой схеме?

Допустим, у меня есть схема "SCHEMA_1", и в ней у меня есть один объект "EMP_TBL_Schema_1". Теперь я хочу получить доступ к этой таблице через другую схему "SCHEMA_2". Только эта "СХЕМА_2" должна иметь доступ к этой таблице (а не какая-либо другая схема, присутствующая в БД, кроме "СХЕМА_1"). Итак, что в данном случае будет уместно: публичный синоним или частный синоним. Я смущен здесь. Поскольку я знаю, что частный синоним создается схемой его владельца, возможно ли, что «SCHEMA_2» может создавать собственный синоним для объектов, присутствующих в «SCHEMA_1», для использования.

Объяснение через код будет оценено.


person Udit Singhal    schedule 11.06.2015    source источник


Ответы (1)


SCHEMA_2 должен создать частный синоним:

create synonym emp_tbl_schema_1 for schema_1.emp_tbl_schema_1
/

Обратите внимание, что синонимом может быть любое допустимое имя: оно не обязательно должно совпадать с именем таблицы в SCHEMA_1. Подробнее.

Также обратите внимание, что создание синонима — это просто удобство для упрощения написания DML. Он не предоставляет никаких прав на указанный объект. SCHEMA_1 должна предоставить привилегии SCHEMA_2. Это позволяет выбрать и вставить:

SQL>  conn SCHEMA_1/password
SQL>  grant select, insert on emp_tbl_schema_1 to schema_2;

Это позволяет SCHEMA_2 запрашивать таблицу и вставлять новые записи, но не обновлять или удалять существующие. Очевидно, что команда GRANT полностью описана в документации.

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

person APC    schedule 11.06.2015
comment
Большое спасибо @APC. Ваш ответ идеален и решает мою проблему. - person Udit Singhal; 12.06.2015
comment
Не могли бы вы также показать мне команду предоставления в этой ситуации. который развеет все мои сомнения. ТИА - person Udit Singhal; 12.06.2015
comment
Спасибо за эту полезную информацию. - person Udit Singhal; 12.06.2015