Максим Чалышев - Oracle SQL. 100 шагов от новичка до профессионала
- Название:Oracle SQL. 100 шагов от новичка до профессионала
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:11
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Максим Чалышев - Oracle SQL. 100 шагов от новичка до профессионала краткое содержание
Более 500 практических заданий.
Более 1000 разобранных примеров.
Учебник справочник по языку SQL.
Oracle SQL. 100 шагов от новичка до профессионала - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Теория и практика
Механизм ретроспективных запросов (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.
На возможность отката изменений также влияют следующие параметры — размер табличного пространства UNDO и параметр UNDO_RETENTION (в секундах).
Вопросы учеников
Я не могу получить данные из таблицы указанным способом, почему?
Для этого может быть несколько причин, например очистка командой TRUNCATE TABLE, или критическая перезагрузка экземпляра базы, или переполнение UNDO-сегмента.
Контрольные вопросы и задания для самостоятельного выполнения
1. Повторите материалы данного шага.
2. Создайте таблицу AUTO1 как копию таблицы AUTO.
3. Удалите данные из таблицы AUTO1.
4. Восстановите данные из таблицы AUTO1 в новую таблицу AUTO3.
Шаг 77. ORACLE DATABASE LINK и соединение с другой базой данных
Введение
DATABASE LINK (связь) — это специальный механизм для связи локальной базы данных с удаленной базой данных. Связь устанавливается только с той стороны, где создан объект DB LINK.
При создании DATABASE LINK (cвязь) задаются параметры учетной записи удаленной базы данных, с которой устанавливается соединение. Соответственно, и права в этой базе данных после соединения будут идентичны привилегиям учетной записи, параметры которой были заданы при создании DATABASE LINK. DATABASE LINK могут применяться для выбора записей из таблиц распределенной базы данных, а также для вставки данных в собственную локальную базу из удаленной базы. Также DB LINK применяются для вставки, обновления записей непосредственно в удаленной базе данных.
Механизм ORACLE DATABASE LINK позволяет работать одновременно с множеством баз данных как с единой базой данных.
Для данного шага необходима установка дополнительного программного обеспечения ORACLEXE, SQLDEVELOPER; как это сделать, подробно описано в шаге 51.
Также необходимо создать еще один сервер ORACLE СУБД на другой, удаленной машине. Для этого я рекомендую воспользоваться виртуальной машиной VIRTUALBOX.
Информация о том, как работать с VIRTUALBOX, выходит за рамки этой книги, но ее можно легко найти в интернете, например на сайте ORACLE.com.
Теория и практика
Рассмотрим создание DATABASE LINK.
Синтаксис:
Здесь
• USERDB1 — имя пользователя на удаленной (другой) базе данных, с которой соединяемся;
• PASSWORD1 — пароль пользователя на базе, с которой соединяемся;
• 1521 — порт для соединения с другой базой;
• SSERVICE — имя соединения в TNSNAMES.
Также синтaксис может быть и таким:
Здесь
• USERDB1 — имя пользователя на удаленной (другой) базе данных, с которой соединяемся;
• PASSWORD1 — пароль пользователя на базе, с которой соединяемся;
• DESCRIPTION — соединение;
• TEST.TEST.RU — имя хоста;
• 1521 — порт для соединения с другой базой.
DATABASE LINK может быть публичным, его будут видеть все пользователи базы данных, или локальным, только для текущего пользователя.
Для того чтобы создать DATABASE LINK публичный, требуется после команды create указать PUBLIC.
Пример создания публичного DATABASE LINK:
Важные замечания
Помимо операций вставки данных, выбора данных, обновления данных, через DATABASE LINK можно вызвать процедуры и функции на других серверах.
Пример
В одном запросе можно использовать несколько DB LINK-соединений.
Пример
Выбираем сведения об автомобилях в автосалонах в разных базах.
На основе запросов с использованием механизма DATABASE LINK можно создавать представления.
Пример представления на основе предыдущего запроса:
При работе с такими представлениями есть сложность: если одно из соединений перестает работать по техническим причинам (обрыв связи, остановка сервера), то все представление перестает функционировать, следует учитывать эту проблему в работе.
Для создания DATABASE LINK пользователь должен обладать правами CREATE PRIVATE DATABASE LINK или CREATE PUBLIC DATABASE LINK в локальной базе данных. Эти права необходимо запросить у администратора базы данных.
Вопросы учеников
Когда мы обращаемся через DATABASE LINK к MS SQL Server или My SQl, существуют ли в этом случае какие-либо дополнительные ограничения и сложности?
Да, как правило, таких ограничений множество. Например, различие в типах данных не позволяет выбирать данные из некоторых колонок из таблиц в удаленной базе данных.
С какими правами будет работать DATABASE LINK?
DATABASE LINK работает с правами той учетной записи, которая прописана при создании DATABASE LINK.
Вы написали, что можно создать DB LINK, который использует соединение из TNSNAMES. Поясните подробнее.
В ORACLE есть специальный файл с описанием всех соединений
TNSNAMES. ora
Расположение файла
C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN\
Путь необходимо скорректировать с учетом вашего каталога установки.
Пример записи из TNSNAMES:
Здесь
• TEST1 — наименование TNS-соединения;
• HOST1 — хост, где установлен удаленный ORACLE СУБД;
• PORT — порт на для соединения с другой ORACLE СУБД;
• SN1 — имя сервиса на удаленной машине.
Создание соединения:
На удаленной, другой базе данных есть таблица с полем CLOB.
При попытке обращения к данной таблице TABLE_CLOB таблице через DB_LINK (конечно, я для этого создал DB_LINK на удаленную базу) при выполнении запроса
Читать дальшеИнтервал:
Закладка: