Синоним (Synonym) – это альтернативное имя (псевдоним) для объекта схемы. Если для какого либо объекта базы данных Oracle существует синоним, то к объекту из SQL запроса можно обращаться либо по его настоящему имени, либо по синониму. Так же они обеспечивают некоторый уровень безопасности, поскольку скрывают имя объекта и его владельца, а так же делают прозрачным местоположение удаленных объектов распределенных баз данных.
Синонимы позволяют переименовывать и перемещать базовые объекты. При том переопределяется только синоним, а приложение не требует никаких модификаций.
Различают два типа синонимов:
Частный (PRIVATE)- синонимы содержаться в схеме конкретного пользователя и доступны только самому пользователю, и тем, кому он предоставил соответствующие права доступа.
Общий (PUBLIC)- этими синонимами владеет специальная группа пользователей – PUBLIC, в результате чего эти синонимы доступны всем пользователям базы данных.
Создание синонимов
Чтобы создать частный синоним необходима привилегия CREATE SYNONYM, для того чтобы иметь права на создание синонима в схеме другого пользователя, необходима привилегия CREATE ANY SYNONYM. Для создания общих синонимов, необходима привилегия CREATE PUBLIC SYNONYM.
Для создания синонимов используется конструкция CREATE SYNONYM или CREATE PUBLIC SYNONYM, в зависимости от типа создаваемого синонима. При создании наличие реального объекта и привилегий доступа к нему не требуется.
Например, у нас есть таблица ALL_ORACLE_USERS, в схеме ALL_ORACLE , и создадим для нее частный и общий синонимы:
Удаление синонимов
В своей схеме пользователь может удалять любые частные синонимы. Для удаления частных синонимов в схеме другого пользователя, необходима привилегия DROP ANY SYNONYM, для удаления общих – DROP PUBLIC SYNONYM.
Для удаления используется оператор – DROP SYNONYM. Для удаления общего синонима - DROP PUBLIC SYNONYM. Например, удалим ранее созданные синонимы:
При удалении синонима, его определение удаляется из словаря данных. Все объекты ссылающиеся на удаленный синоним остаются, однако они становятся недействительными и их использование невозможно. Объекты, для которых создавался синоним остаются без изменений и доступны для использования.
Если удален объект, для которого создавался синоним, то синоним остается, но при обращении к нему будет сообщено об ошибке. Если объект, для которого создавался синоним, был пересоздан, то синоним требуется перекомпилировать. Для этого используется предложение:
Синонимы позволяют переименовывать и перемещать базовые объекты. При том переопределяется только синоним, а приложение не требует никаких модификаций.
Различают два типа синонимов:
Частный (PRIVATE)- синонимы содержаться в схеме конкретного пользователя и доступны только самому пользователю, и тем, кому он предоставил соответствующие права доступа.
Общий (PUBLIC)- этими синонимами владеет специальная группа пользователей – PUBLIC, в результате чего эти синонимы доступны всем пользователям базы данных.
Создание синонимов
Чтобы создать частный синоним необходима привилегия CREATE SYNONYM, для того чтобы иметь права на создание синонима в схеме другого пользователя, необходима привилегия CREATE ANY SYNONYM. Для создания общих синонимов, необходима привилегия CREATE PUBLIC SYNONYM.
Для создания синонимов используется конструкция CREATE SYNONYM или CREATE PUBLIC SYNONYM, в зависимости от типа создаваемого синонима. При создании наличие реального объекта и привилегий доступа к нему не требуется.
CREATE SYNONYM [имя_синонима] FOR[имя_объекта]
CREATE PUBLIC SYNONYM [имя_синонима] FOR[имя_объекта]
CREATE PUBLIC SYNONYM [имя_синонима] FOR[имя_объекта]
Например, у нас есть таблица ALL_ORACLE_USERS, в схеме ALL_ORACLE , и создадим для нее частный и общий синонимы:
CREATE SYNONYM SYN_ALL_ORACLE_USERS FOR ALL_ORACLE.ALL_ORACLE_USERS;
CREATE PUBLIC SYNONYM SYNP_ALL_ORACLE_USERS FOR ALL_ORACLE.ALL_ORACLE_USERS;
CREATE PUBLIC SYNONYM SYNP_ALL_ORACLE_USERS FOR ALL_ORACLE.ALL_ORACLE_USERS;
Удаление синонимов
В своей схеме пользователь может удалять любые частные синонимы. Для удаления частных синонимов в схеме другого пользователя, необходима привилегия DROP ANY SYNONYM, для удаления общих – DROP PUBLIC SYNONYM.
Для удаления используется оператор – DROP SYNONYM. Для удаления общего синонима - DROP PUBLIC SYNONYM. Например, удалим ранее созданные синонимы:
DROP SYNONYM SYN_ALL_ORACLE_USERS;
DROP PUBLIC SYNONYM SYNP_ALL_ORACLE_USERS;
DROP PUBLIC SYNONYM SYNP_ALL_ORACLE_USERS;
При удалении синонима, его определение удаляется из словаря данных. Все объекты ссылающиеся на удаленный синоним остаются, однако они становятся недействительными и их использование невозможно. Объекты, для которых создавался синоним остаются без изменений и доступны для использования.
Если удален объект, для которого создавался синоним, то синоним остается, но при обращении к нему будет сообщено об ошибке. Если объект, для которого создавался синоним, был пересоздан, то синоним требуется перекомпилировать. Для этого используется предложение:
ALTER SYNONYM [имя_синонима] COMPILE;