Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторный практикум по НСД 2013

.pdf
Скачиваний:
66
Добавлен:
12.11.2022
Размер:
9.94 Mб
Скачать

411

Нижеприведенные строки написаны для Oracle 10g. При работе с Oracle 11g

надо заменить путь D:\oracle\product\10.2.0\ на путь D:\app\admin\, при условии,

конечно, что сервер Oracle установлен на диске D.

drop user scott cascade;

drop tablespace main_tablespace INCLUDING CONTENTS; host del D:\oracle\product\10.2.0\oradata\orcl\mmain.dbf; drop tablespace maintemp INCLUDING CONTENTS;

host del D:\oracle\product\10.2.0\oradata\orcl\ttemp.dbf;

create tablespace main_tablespace datafile 'D:\oracle\product\10.2.0\oradata\orcl\mmain.dbf' size 300M default storage (initial 1M next 1M minextents 1 maxextents 300);

CREATE TEMPORARY TABLESPACE maintemp TEMPFILE 'D:\oracle\product\10.2.0\oradata\orcl\ttemp.dbf'

SIZE 100M;

create user scott identified by scott default tablespace main_tablespace temporary tablespace maintemp quota 30m on main_tablespace;

grant connect,resource,create view to scott;

Задействуем архивацию.

shutdown immediate startup mount

Смонтировали базу данных (startup mount) для обеспечения возможности перевода ее в режим archivelog

alter database archivelog;

Теперь откроем БД. alter database open;

Получим справку о режиме архивации. archive log list;

Теперь средствами ОС Windows сформируем копированием в папку

«d:\h_copy» из папки «d:\oracle\product\10.2.0\oradata\orcl» «холодную» копию файлов БД (всех, за исключением управляющих и log файлов). Удалим средства-

ми ОС Windows из папки «D:\oracle\product\10.2.0\flash_recovery_area\ORCL» все архивные файлы, оставшиеся от предыдущего выполнения лабораторной работы. Перед копированием остановим инстанцию.

412

shutdown immediate

Запустим базу данных, чтобы затем выполнить в ней «длинную» транзакцию с образованием архивных файлов.

startup

connect scott/scott

create table scott.tab1(at1 number); create table scott.tab2(at1 number); create table scott.tab3 (at1 number); create table scott.tab4(at1 number); create table scott.tab5(at1 number); create table scott.tab6(at1 number);

Начнем наши «длинные» транзакции, чтобы сформировать архивные копии файлов журнализации транзакций.

insert into scott.tab2 values(1); insert into scott.tab1 values(1);

insert into scott.tab1 select * from scott.tab2; insert into scott.tab2 select * from scott.tab1; insert into scott.tab1 select * from scott.tab2; insert into scott.tab2 select * from scott.tab1; insert into scott.tab1 select * from scott.tab2; insert into scott.tab2 select * from scott.tab1; insert into scott.tab1 select * from scott.tab2; insert into scott.tab2 select * from scott.tab1; insert into scott.tab1 select * from scott.tab2; insert into scott.tab2 select * from scott.tab1; insert into scott.tab1 select * from scott.tab2; insert into scott.tab2 select * from scott.tab1; insert into scott.tab1 select * from scott.tab2; insert into scott.tab2 select * from scott.tab1; insert into scott.tab1 select * from scott.tab2; insert into scott.tab2 select * from scott.tab1; insert into scott.tab1 select * from scott.tab2; insert into scott.tab2 select * from scott.tab1; insert into scott.tab1 select * from scott.tab2; insert into scott.tab2 select * from scott.tab1; insert into scott.tab1 select * from scott.tab2; insert into scott.tab2 select * from scott.tab1; insert into scott.tab1 select * from scott.tab2; insert into scott.tab1 select * from scott.tab2; insert into scott.tab2 select * from scott.tab1;

insert into scott.tab1 select * from scott.tab2;

Сделаем здесь первый commit и проверим, не появились ли к этому моменту в папке D:\oracle\product\10.2.0\flash_recovery_area\ORCL\дата_архивации, первые архивные файлы. Следует обратить внимание на место папки архивации. Oracle

413

создает ее в месте, которое по умолчанию (реализуемому при установке Oracle) предусмотрено для архивирования, причем название той папки, куда непосредственно ложатся архивные файлы, совпадает с текущей датой.

commit;

insert into scott.tab1 select * from scott.tab2; insert into scott.tab2 select * from scott.tab1; insert into scott.tab1 select * from scott.tab2; insert into scott.tab2 select * from scott.tab1; insert into scott.tab1 select * from scott.tab2;

Сделаем здесь второй commit и посмотрим в папке

D:\oracle\product\10.2.0\flash_recovery_area\ORCL\дата_архивации, возможно,

появившиеся архивные файлы.

insert into scott.tab3 values(1); insert into scott.tab4 values(1);

insert into scott.tab3 select * from scott.tab4; insert into scott.tab4 select * from scott.tab3; insert into scott.tab3 select * from scott.tab4; insert into scott.tab4 select * from scott.tab3; insert into scott.tab3 select * from scott.tab4; insert into scott.tab4 select * from scott.tab3; insert into scott.tab3 select * from scott.tab4; insert into scott.tab4 select * from scott.tab3; insert into scott.tab3 select * from scott.tab4; insert into scott.tab4 select * from scott.tab3;

Сделаем здесь третий commit и посмотрим в папке

D:\oracle\product\10.2.0\flash_recovery_area\ORCL\дата_архивации, возможно,

появившиеся архивные файлы.

commit;

insert into scott.tab3 select * from scott.tab4; insert into scott.tab4 select * from scott.tab3; insert into scott.tab3 select * from scott.tab4; insert into scott.tab4 select * from scott.tab3; insert into scott.tab3 select * from scott.tab4; insert into scott.tab4 select * from scott.tab3; insert into scott.tab3 select * from scott.tab4; insert into scott.tab4 select * from scott.tab3;

Сделаем здесь четвертый commit и посмотрим в папке

D:\oracle\product\10.2.0\flash_recovery_area\ORCL\дата_архивации, возможно,

появившиеся архивные файлы.

commit;

insert into scott.tab3 select * from scott.tab4; insert into scott.tab4 select * from scott.tab3;

414

insert into scott.tab3 select * from scott.tab4; insert into scott.tab4 select * from scott.tab3; insert into scott.tab3 select * from scott.tab4;

Сделаем здесь пятый commit и посмотрим в папке

D:\oracle\product\10.2.0\flash_recovery_area\ORCL\дата_архивации, возможно,

появившиеся архивные файлы.

commit;

insert into scott.tab5 values(1); insert into scott.tab6 values(1);

insert into scott.tab5 select * from scott.tab6; insert into scott.tab6 select * from scott.tab5; insert into scott.tab5 select * from scott.tab6; insert into scott.tab6 select * from scott.tab5; insert into scott.tab5 select * from scott.tab6; insert into scott.tab6 select * from scott.tab5; insert into scott.tab5 select * from scott.tab6; insert into scott.tab6 select * from scott.tab5; insert into scott.tab5 select * from scott.tab6;

Сделаем здесь шестой commit и посмотрим в папке

D:\oracle\product\10.2.0\flash_recovery_area\ORCL\дата_архивации, возможно,

появившиеся архивные файлы. commit;

Выведем количество строк во всех таблицах после этого «commit». select count (*) from scott.tab1;

select count (*) from scott.tab2; select count (*) from scott.tab3; select count (*) from scott.tab4; select count (*) from scott.tab5; select count (*) from scott.tab6;

insert into scott.tab5 select * from scott.tab6; insert into scott.tab6 select * from scott.tab5; insert into scott.tab5 select * from scott.tab6; insert into scott.tab6 select * from scott.tab5; insert into scott.tab5 select * from scott.tab6; insert into scott.tab6 select * from scott.tab5; insert into scott.tab5 select * from scott.tab6; insert into scott.tab6 select * from scott.tab5; insert into scott.tab5 select * from scott.tab6;

Сделаем здесь седьмой commit и посмотрим в папке

D:\oracle\product\10.2.0\flash_recovery_area\ORCL\дата_архивации, возможно,

появившиеся архивные файлы. commit;

415

Выведем количество строк во всех таблицах после этого «commit». select count (*) from scott.tab1;

select count (*) from scott.tab2; select count (*) from scott.tab3; select count (*) from scott.tab4; select count (*) from scott.tab5; select count (*) from scott.tab6;

insert into scott.tab5 select * from scott.tab6; insert into scott.tab6 select * from scott.tab5; insert into scott.tab5 select * from scott.tab6; insert into scott.tab6 select * from scott.tab5; insert into scott.tab5 select * from scott.tab6;

Сделаем здесь восьмой commit и посмотрим в папке

D:\oracle\product\10.2.0\flash_recovery_area\ORCL\дата_архивации, возможно,

появившиеся архивные файлы. commit;

Выведем количество строк во всех таблицах после этого «commit». select count (*) from scott.tab1;

select count (*) from scott.tab2; select count (*) from scott.tab3; select count (*) from scott.tab4; select count (*) from scott.tab5; select count (*) from scott.tab6;

insert into scott.tab1 select * from scott.tab2; insert into scott.tab4 select * from scott.tab3; insert into scott.tab6 select * from scott.tab5;

Здесь commit не будем делать, чтобы лишний раз убедиться, что незавершенная транзакция не восстанавливается.

Выведем количество строк во всех таблицах после этой незавершенной транзакции.

select count (*) from scott.tab1; select count (*) from scott.tab2; select count (*) from scott.tab3; select count (*) from scott.tab4; select count (*) from scott.tab5; select count (*) from scott.tab6;

БД сильно отличается от «холодной» копии, так как добавились новые транзакции. Закроем командой shutdown abort базу данных без завершения (без commit) транзакции.

shutdown abort

416

Теперь имитируем потерю log файлов ‒ удалим их (Redo01.log, Redo02.log, Redo03.log) средствами ОС Windows из папки

«D:\oracle\product\10.2.0\oradata\orcl».

Так как log файлы «потеряны», приступим к восстановлению (неполному, так как полное невозможно). Незавершенные транзакции, конечно, не будут восстановлены, так как повторного их выполнения не произойдет. Но, возможно, будут потеряны и некоторые из завершенных транзакций, так как эти завершенные транзакции могут находиться только в файлах журнализации (которые и «потеряны»), но еще не переместятся в архивные файлы.

Для восстановления перезапишем (поверх существующих) из папки

«d:\h_copy» в папку «d:\oracle\product\10.2.0\oradata\orcl» файлы «холодной» ко-

пии БД, в которых отсутствуют созданные и заполненные после копирования файлов БД таблицы tab1 - tab6. Теперь эти таблицы и заполнившие их строки могут находяться только в архивных файлах.

Монтируем БД, так как открытия все равно не получится.

Connect sys/admin1 as sysdba startup mount

Oracle зарегистрировал расхождение в номере последней транзакции в файлах данных из «холодных» копий и в управляющем файле БД, зарегистрировавшем номер последней транзакции ‒ добавление записей в scott.tab1 - scott.tab6.

Теперь «попросим» Oracle выполнить следующий шаг восстановления. recover database until cancel;

При отработке этой команды Oracle предложит восстановить информацию из архивного файла с указанием адреса его расположения и номеров SCN (System Change Number) транзакций в этом архивном файле. Если такой архивный файл в папке D:\oracle\product\10.2.0\flash_recovery_area\ORCL\дата_архивации сущест-

вует, мы нажимаем клавишу «Enter» с тем, чтобы продолжить восстановление. Такое предложение (восстановить информацию из архивного файла) может повториться несколько раз ‒ по числу архивных файлов и еще один раз. «Enter» надо вводить до тех пор, пока Oracle не предложит нам вводить информацию из архивного файла, которого в вышеназванной папке уже нет. В этом случае и надо ввести «cansel». Именно «cansel», но не «cansel;».

cansel

Следующий шаг ‒ нижеприводимая команда, открывающая БД с созданием новых log файлов.

alter database open resetlogs;

417

Посмотрим, до какого состояния мы восстановили информацию в таблицах tab1 и tab2

select count (*) from scott.tab1; select count (*) from scott.tab2; select count (*) from scott.tab3; select count (*) from scott.tab4; select count (*) from scott.tab5; select count (*) from scott.tab6;

Сопоставив результаты этих селектов с вышеприведенными селектами чтобы увидеть, что мы потеряли из-за «порчи» файлов журнализации.

Сценарий восстановления на этом завершен.

Сдача лабораторной работы

Сдача лабораторной работы заключается в:

1. В демонстрации студентом преподавателю восстановления базы данных по сценариям пункта «Реализация сценария лабораторной работы» (1 и 2), для tablespace, отличной от users01.dbf, например, для example01.dbf.

2. В демонстрации студентом преподавателю выполнения сценария «Реализация сценария лабораторной работы» (3) для таблиц tt1, tt2, созданных для нового пользователя student с установленным для этого пользователя «собственным» табличным пространством размером 400 Мб.

Тестовые задания к лабораторной работе № 19

Входной контроль

1.Укажите в ряду ниже перечисленных цифр значение, равное минимальному количеству оперативных файлов журнала повторного выполнения.

a)1;

b)2;

c)3;

d)4;

e)Правильных ответов нет.

2.В ходе процесса восстановления базы данных приходится издавать команды shutdown (immediate) и startup. Среди ниже приведенных строк укажите строки, соответствующие отдельным шагам открытия базы данных.

a)MOUNT;

b)NOMOUNT;

c)OPEN;

d)RECOVERY;

418

e)Правильных ответов нет.

3.На открытой базе данных работа завершается, если происходит (укажите верные строки)…

a)Потеря хотя бы одного управляющего файла;

b)Потеря файла табличного пространства SYSTEM;

c)Потеря табличного пространства UNDO;

d)Теряется целиком вся журнальная группа;

e)Правильных ответов нет.

4.Укажите, какие основные типы блоков памяти (Oracle) представлены в работающей базе данных?

a)Блоки памяти, информация из которых была использована завершенными транзакциями, но не обновленные в связи с этими завершенными транзакциями;

b)Блоки памяти, информация из которых используется незавершенными транзакциями, и, не смотря на незавершенность транзакции, содержащие промежуточную информацию этих незавершенных транзакций;

c)Согласованные блоки памяти, хранящие действительную информацию завершенных транзакций;

d)Блоки, не заполненные информацией;

e)Правильных ответов нет.

5.В ниже приводимом списке укажите строки, соответствующие структурам, обеспечивающим восстановление после сбоев/отказов базы данных.

a)Сегменты отката;

b)Журналы повторного выполнения;

c)Области памяти процессов;

d)Средства восстановления распределенных транзакций;

e)Правильных ответов нет.

6.В ниже приведенных строках укажите строки, соответствующие фазам восстановления экземпляра после сбоя (по питанию) компьютера, на котором установлен сервер Oracle.

a)После открытия базы данных незавершенные транзакции откатываются назад;

b)После «наката» всех транзакций база данных открывается;

c)В случае несовпадения системного номера изменений (SCN) в управляющем файле и файле базы данных, Oracle обращается к файлам журнала повторного выполнения и «накатывает» все транзакции до точки сбоя;

d)Проверяется совпадение системного номера изменений (SCN) в управляющем файле и файле базы данных;

e)Правильных ответов нет.

7.Укажите среди ниже приводимых строки, соответствующие верным утверждениям в отношении ситуаций восстановления базы данных.

419

a)Оперативный журнал повторного выполнения используется для корректировки файлов данных в случае ошибки СУБД в выполнении SQL оператора выборки больших объемов данных;

b)Оперативный журнал повторного выполнения используется для корректировки файлов данных в случае сбоя питания;

c)Архивные журналы повторного выполнения используются для восстановления конфигурационных файлов (файла конфигурационных параметров, файлов сетевой настройки) в случае сбоя диска;

d)Архивные журналы повторного выполнения используются для восстановления файлов данных в случае сбоя диска;

e)Правильных ответов нет.

Выходной контроль

1.Укажите, создание каких копий предполагает физическое копирование?

a)Файлов данных базы данных Oracle;

b)Таблиц, индексов и представлений базы данных;

c)Контрольных файлов, файла инициализационных параметров;

d)Программных модулей базы данных;

e)log файлов, файла паролей;

f)Правильных ответов нет.

2.Укажите причину, по которой при «горячем» копировании Oracle устанавливает специальный режим копирования для табличных пространств (alter tablespace…begin beckup). Физические копии должны использоваться для восстановления исходной информации…

a)Совместное потребление ресурсов процессора администратором, осуществляющим копирование, и пользователем;

b)Возможность одновременной работы с одним и тем же блоком хранимых данных и программы «горячего» копирования, и пользователей;

c)Обеспечение возможности копирования табличных пространств несколькими администраторами базы данных;

d)Возможность непривилегированного пользователя остановить процесс копирования;

e)Остановка выполнения транзакций пользователями при копировании;

f)Правильных ответов нет.

3.В чем состоит отличие работы с log файлами при «горячем» копировании и в режиме работы базы данных без «горячего» копирования с включенным режимом архивации?

a)В log файлы несогласованные копируемые блоки хранимых данных пишутся целиком;

b)В log файлы согласованные копируемые блоки хранимых данных пишутся целиком;

c)Запись блоков в log файлы совсем не производится;

d)В log файлы пишутся только заголовки несогласованных блоков;

420

e)В log файлы пишутся выявленные при копировании ошибки в несогласованных блоках;

f)Правильных ответов нет.

4.Укажите ситуации, в которых требуется выполнение физического восстановления.

a)Текущая сессия пользователя была прервана выключением клиентского

компьютера;

b)Нужно сделать работающую копию текущей базы данных на другом компьютере с теми же версиями ОС и Oracle;

c)Нужно восстановить базу данных в случае замены или изменения разделов диска;

d)Один или несколько файлов данных были повреждены или потеряны;

e)Нужно восстановить базу данных по состоянию на определенный момент в прошлом;

f)Правильных ответов нет.

5.Укажите причину, по которой из копии базы данных, полученной в результате «холодного» копирования, можно выполнить только частичное восстановление базы данных.

a)Отсутствие в «холодной» копии базы данных некоторых файлов данных;

b)Отсутствие в «холодной» копии базы данных схемы "SYS";

c)Отсутствие информации аудита базы данных, сформированной в базе данных в ходе ее работы после «холодного» копирования;

d)Отсутствие информации трассировки базы данных, сформированной в базе данных в ходе ее работы после «холодного» копирования;

e)Потеря архивных или log файлов, сформированных в ходе работы базы данных уже после получения «холодной» копии базы данных;

f)Правильных ответов нет.

6.В ходе работы пользователя (с привилегией «sysdba») с базой данных Oracle произошел сбой по питанию. После перезагрузки ОС база данных монтируется, но не открывается. Какие команды выполняет пользователь в ходе восстановления базы данных?

a)recover automatic database;

b)recover database automatic;

c)alter database open;

d)startup nomount;

e)alter system recover database automatic;

f)Правильных ответов нет.

7.В ходе работы в режиме архивирования пользователя базы данных (с привилегией «sysdba») произошел сбой базы данных из-за потери log файлов. Наряду с физической копией базы данных в распоряжении пользователя имеются архивные файлы. Какие команды выполняет пользователь в ходе восстановления базы данных?

a)startup mount;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]