Практические занятия № 1-19 по дисциплине "Администрирование и оптимизация СУБД Oracle" (Установка программного обеспечения Oracle. Разделяемый сервер Oracle), страница 14

Описание ситуации. Вы решили приобрести практический опыт применения технологии flashback.Для того, чтобы избежать воздействия на других пользователей, Вы сначала сделаете копию таблицыDEPARTMENTS схемы HR под именем DEPARTMENTS2.

Задачи:

1.  В SQL*PLUS соединитесь как пользователь DBA1 и создайте  новую таблицу HR.DEPARTMENTS2 на основе таблицы   HR.DEPARTMENTS. В ней должно быть 27 строк.

2.  Удалите таблицу HR.DEPARTMENTS2 и убедитесь, что она действительно была удалена.

3.  Используя команду FLASHBACK TABLE, восстановите таблицу. Определите количество строк в таблице HR.DEPARTMENTS2.

4.  Выполните скрипт lab_17_04.sql для вставки еще трех строк в таблицу HR.DEPARTMENTS2, используя три различные транзакции. Новые записи имеют значения DEPARTMENT_ID, равными 280, 290 и 300.

5.  Используйте Enterprise Manager для того, чтобы вернуться к состоянию таблицы, в котором присутствует только первая из трех новых строк (с DEPARTMENT_ID = 280). (Maintaince > Perform Recovery). Сначала определите измененные строки, для того чтобы выбрать интересующий Вас момент времени. Ограничьте Ваш анализ только новыми строками, у которых Department_id>=280. Если Вы получаете ошибку при выполнении операции Flashback, возможно Вам необходимо установить на таблицу опцию Enable Row Movement. Для решения задачи используйте следующий порядок: 

Object

Settings

Object Type

Tables

Operation Type

Flashback Existing Tables

Evaluate row changes and transformations

to decide on a point of time

selected

Table

HR.DEPARTMENTS2

Choose Column > Selected Columns

DEPARTMENT_ID

Bind The Row Value

Where Department_id>=280

Проверьте  Flashback Versions Query Result:

Выберите строку с Department_id=290 и продолжайте Ваши операции. Просмотрите SQL команду, которую Вы выполнили и завершите процесс.

6.  Вы обнаруживаете, что операция выполняется с ошибкой, поскольку перемещение строк невозможно для этой таблицы. Вы можете вспомнить из урока, что перемещение строк должно возможно  для выполнения работы.

Сделайте возможным перемещение строк (Administration > Tables). Проанализируйте следующую команду:

ALTER TABLE HR.DEPARTMENTS2 ENABLE ROW MOVEMENT;

После модификации таблицы Вы можете выполнить операцию Flashback.

Повторите шаг 5, чтобы вернуться к состоянию таблицы, в котором присутствует только первая из трех новых строк. Поскольку перемещение строк стало возможным, эта операция должны быть успешно выполнена.

Затем, используя SQL*PLUS, сосчитайте количество строк  в таблице HR.DEPARTMENTS2 для того, чтобы подтвердить выполнение операции Flashback. Заметьте, что теперь имеется только одна дополнительная запись, а не три. Затем  выведите на экран записи, в которых  Department_id >= 280. Заметьте, что осталась только одна оригинальная запись.

SQL> SELECT count(*) FROM hr.departments2;

COUNT(*)

---------28

SQL> SELECT * FROM hr.departments2 WHERE department_id>=280;

DEPARTMENT_ID     DEPARTMENT_NAME          MANAGER_ID      LOCATION_ID

------------- ----------           --------------------                          ----------               ----------280                              DUMMY1


Практическое занятие по теме 18: перемещение данных

Описание ситуации. В недавнем прошлом Вы получили ряд вопросов о схеме HR. Для того, чтобы проанализировать их без  влияния на ежедневную активность, Вы решили использовать Data Pump Wizard для экспорта схемы HR в файл. Когда Вы выполняете экспорт, Вы не знаете, в какую базу данных Вы будете импортировать эту схему.

В итоге Вы приходите к выводу, что единственная база данных, для которой управление одобряет импорт, это база данных STUD. Поэтому Вы выполняете импорт при помощи Data Pump Wizard, перенаправляя схему HR в заново созданную схему в табличном пространстве HR_TEST.Вы также решаете создать пользователя DP, который будет DBA, выполняющим работы Data Pump. Для удобства Вашей работы создание пользователя DP  включено в скрипт  lab_18_01.sql. Однако один шаг там пропущен.