Синонимы создаются для следующих объектов базы данных ORACLE: таблицы, представления, материализованные представления пакетов и процедур.
Для вышеперечисленных объектов в базе ORACLE можно создать синоним.
В каком случае это целесообразно?
• Во-первых, при обращении к объекту из разных схем для более простой формы записи.
• Для разграничения доступа, безопасности объекта.
• Во-вторых, если объект называется достаточно сложно и для того чтобы упростить обращение к этому объекту.
• Когда обращение к объекту происходит через DB LINK.
Для создания публичного синонима необходима роль CREATE PUBLIC SYNONYM;
Для создания публичного синонима используется директива PUBLIC перед словом SYNONYM.
Обращение к данным через синоним a9:
Рисунок 210. Запрос по синониму a9
Выбираем данные из таблицы с помощью синонима a9.
Выбираем данные из таблицы с помощью синонима m9.
Рисунок 211. Запрос по синониму m9
Создание синонима на основе системного представления ALL_OBJECTS;
Выбираем данные из таблицы с помощью синонима a9.
Рисунок 212. Запрос по синониму a9
Для просмотра информации обо всех синонимах в базе данных можно использовать следующий запрос:
Для выполнения данного запроса требуются соответствующие права.
Для удаления синонима используется следующая команда:
Я пытаюсь создать синоним для функции на языке PL SQL, которая находится в пакете, получаю ошибку. В чем причина?
Это ограничение для использования синонимов — объект для синонима не может содержаться в пакете.
Каковы ограничения для имени синонима?
Помимо того, что имя синонима не должно начинаться с цифр или совпадать с зарезервированным словом SQL, также имя синонима должно быть уникальным для всех объектов, которые принадлежат этой же схеме.
Контрольные вопросы и задания для самостоятельного выполнения
1. Можно ли создать синоним для представления?
2. В чем отличие синонимов и представлений?
3. Создайте публичный синоним C1 для таблицы CITY.
4. Создайте приватный синоним C2 для таблицы CITY.
5. Напишите запрос с использованием данных синонимов.
6. Можно ли создать синоним для другого синонима?
7. Поясните разницу между публичным и приватным синонимами.
Шаг 76. Ретроспективные запросы
В ORACLE есть возможность узнать, какие данные были в таблицах определенное время назад. Мы можем использовать эти данные, сохранить эти данные во временные таблицы.
Такие запросы называются FLASHBACK QUERY.
FLASHBACK QUERY — специальная возможность, которая позволяет видеть данные в базе таким образом, как будто это было сделано в заданный момент времени в прошлом.
Механизм ретроспективных запросов (FlASHBACK QUERY) позволяет нам с помощью запросов посмотреть в прошлое.
Есть возможность использовать FLASHBACK QUERY двумя способами:
• специальная конструкция AS OF в SELECT-запросе;
• специальный встроенный пакет DBMS_FLASHBACK.
Конструкция:
Здесь
• SELECT * FROM TABLENAME — запрос к таблице, где необходимо посмотреть данные;
• of scn TIMESTAMP_TO_scn (TO_TIMESTAMP (time,«DD/MM/YYYY HH24:MI: SS»)) — специальная конструкция, где необходимо указать дату-время, на которую требуется посмотреть изменения, в соответствующем формате «DD/MM/YYYY HH24:MI: SS».
Для примера нам понадобится таблица, которую мы создадим на основе системного представления ALL_OBJECTS.
Запомним время создания таблицы.
Удалим записи с наименованиями таблиц и запомним время 17:10.
Удалим данные, где owner IN («SYS», «SYSTEM») и запомним время 17:11.
Рисунок 213. Запрос по OBJ_T
Рисунок 214. Ретроспективный запрос
Для примера работы пакета FLASHBACK нам понадобится написать короткий код на PLSQL.
Пример DBMS_FLASHBACK:
Удалим данные из таблицы OBJ_T.
Эти несколько строчек кода переключат данные в нашей таблице на определенный момент в прошлом.
Запрос
Рисунок 216. Ретроспективный запрос к OBJ_T
вернет данные на прошлый момент времени.
Эти несколько строчек кода вернут данные к первоначальному состоянию.
Для работы ретроспективных запросов (FLASHBACK QUERY) необходимо установить параметр инициализации UNDO_MANAGEMENT=AUTO.
Читать дальше
Конец ознакомительного отрывка
Купить книгу