На возможность отката изменений также влияют следующие параметры — размер табличного пространства 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. Поясните подробнее.
Читать дальше
Конец ознакомительного отрывка
Купить книгу