Рейтинг: 0/5
Синоніми (synonyms) Oracle Database - це псевдоніми об'єктів бази даних, які служать в основному для полегшення користувачам доступу до об'єктів, що належать іншим користувачам, а також з метою безпеки. Синоніми приховують ідентичність лежать в їх основі об'єктів і можуть бути як приватними (private), так і загальнодоступними (public). Загальнодоступні синоніми доступні всім користувачам бази даних, а приватні синоніми є складовою частиною схеми окремого користувача, і іншим користувачам бази слід видавати права доступу для використання приватних синонімів. Синоніми Oracle можуть бути створені для таблиць, уявлень, матеріалізованих уявлень і зберігається коду - пакетів і процедур.
Синоніми Oracle - дуже потужний засіб з точки зору забезпечення користувачам доступу до об'єктів, які не належать до їх схемами. Все синоніми повинні створюватися явно командою CREATE SYNONYM. а що лежать в основі об'єкти можуть перебувати в тій же базі даних або в інших базах, підключених по зв'язках баз даних.
Сфера застосування синонімів Oracle
Є два основних застосування синонімів.
- Для забезпечення прозорості об'єктів. Синоніми можуть бути створені для забезпечення прозорості вихідних об'єктів для користувача.
- Для прозорості розташування. Синоніми можуть бути створені як псевдоніми таблиць і інших об'єктів, що відносяться до нелокальної базі даних.
На замітку! Майте на увазі, що навіть якщо ви знаєте синонім таблиці схеми, то не обов'язково маєте доступ до неї. Для доступу до такої таблиці потрібно мати необхідні привілеї.
Коли ви створюєте таблицю або процедуру, база даних створює їх у вашій схемі, а інші користувачі можуть звертатися до них, використовуючи ім'я вашої схеми в якості префікса імені об'єкта. У лістингу нижче показано кілька прикладів, що ілюструють це положення.
Як бачите, коли користувач SYSTEM намагається отримати структуру таблиці без префікса - імені схеми, Oracle видає помилку, що повідомляє про відсутність таблиці. Щоб обійти це, власник схеми повинен створити синонім з тим же ім'ям, що і у таблиці. Як тільки користувач SYSTEM застосує нотацію схема.табліца. він зможе побачити вміст таблиці.
Створення загальнодоступного синоніма
Загальнодоступні (public) синоніми відносяться до спеціальної схемою бази даних Oracle, іменованої PUBLIC. Як згадувалося раніше, загальнодоступні синоніми видно всім користувачам бази даних. Загальнодоступні синоніми зазвичай створюються власником додатка для таблиць і інших об'єктів, таких як процедури і пакети, щоб користувачі програми могли бачити ці об'єкти.
У наступному коді показано, як створюється загальнодоступний синонім для таблиці employees.
Тепер будь-який користувач зможе бачити таблицю, просто набравши її вихідне ім'я. При бажанні за допомогою оператора CREATE SYNONYM таблиці можна дати інше ім'я. Пам'ятайте, що адміністратор бази даних повинен явно видати привілей CREATE PUBLIC SYNONYM користувачеві hr, щоб той міг створювати загальнодоступні синоніми.
Можливість бачити таблицю через загальнодоступний (або приватний) синонім, ще не означає можливість виконання над нею операцій SELECT, INSERT, UPDATE або DELETE. Для виконання таких операцій користувачеві потрібні спеціальні привілеї для доступу до вихідного об'єкту, видані власником додатка безпосередньо або через ролі.
Створення приватного синоніма
Приватний синоніми, на відміну від загальнодоступних, видно тільки в схемі, що володіє таблицею або об'єктом. Приватний синоніми можна створити, коли потрібно звертатися до однієї і тієї ж таблиці в різних контекстах під різними іменами. Вони створюються точно так же, як і загальнодоступні, але без ключового слова PUBLIC в операторі CREATE.
У наступному прикладі показано, як створити приватний синонім по імені addresses для таблиці locations. Зверніть увагу, що після створення до приватного синоніма можна звертатися як до первісного імені таблиці.
знищення синоніма
І приватний, і загальнодоступний синоніми знищуються командою DROP SYNONYM, але є одна відмінність. При знищенні загальнодоступного синоніма після ключового слова DROP має перебувати ключове слово PUBLIC.
Нижче показаний приклад знищення приватного синоніма:
управління синонімами
Подання DBA_SYNONYMS містить інформацію про всі синоніми в вашій базі даних. Синоніми засновані на що лежать в основі базових таблицях, і дізнатися імена базових об'єктів можна, запустивши запит, подібний наступного:
Використовуйте уявлення DBA_SYNONYMS для з'ясування імен базових таблиць, які переховуються за синонімами.
Перемикання до іншої схеми
Якщо ви постійно використовуєте таблиці, що належать іншій схемі, і в цій схемі немає ніяких синонімів, доведеться перед кожним ім'ям таблиці вказувати кваліфікатор схеми. Наприклад, для звернення до таблиці emp, що належить користувачеві scott, знадобиться вказувати emp.scott. Щоб уникнути цього, можна застосувати наступний оператор ALTER SESSION SET SCHEMA.
Використання оператора ALTER SESSION не приводить до автоматичної видачі будь-яких привілеїв. Для того щоб запросити таблицю emp без кваліфікатора схеми, як показано в попередньому прикладі, користувач повинен мати привілей SELECT на таблиці emp.