Устраним причину ошибки:
alter
table Scott.Small_extent_table storage (maxextents 10);
|
Теперь осталось только убедиться, что в первой сессии
оператор Insert успешно закончился.
Еще один классический вид сбоев – ошибки
пользователей. Если кто-то из пользователей, разработчиков или сам
администратор случайно удалил таблицу или запустил неотлаженную процедуру, восстановить потерянные данные бывает очень трудно. В Oracle8i в таких случаях
очень помогает утилита Log Miner. В Oracle9i эта утилита обогатилась новыми
возможностями, такими как восстановление текста DDL-операций или возможность
пропуска поврежденной части журнала.
Кроме Log Miner, восстановить данные после
пользовательской ошибки помогает еще одно нововведение – ретроспективные
запросы (flashback query). С помощью процедур пакета dbms_flashback
пользователь может задать нужный момент времени (предшествующий ошибке), и
после этого все его запросы будут возвращать состояние данных на указанный
момент. Попробуем это сделать.
Удалим важные данные из таблицы:
delete from small_extent_table;
Commit;
|
Посмотрим состояние данных на момент, предшествующий
фиксации транзакции (точное время фиксации можно получить с помощью LogMiner):
exec
dbms_flashback.enable_at_time(‘05.12.2001 15:21:58')
select
* from small_extent_table;
|
Полученные «старые» данные можно сохранить в базе и
ликвидировать последствия ошибки:
declare
cursor c is (select * from
scott.small_extent_table);
cc c%rowtype;
begin
exec
dbms_flashback.enable_at_time(‘05.12.2001 15:21:58')
open c; -- открываем курсор, находясь в режиме FlashBack
dbms_flashback.disable; -- выключаем
FlashBack, чтобы разрешить DML
loop
fetch c into cc;
exit when c%notfound;
insert into
scott.small_extent_table values
(cc.empno, cc.ename, cc.job, cc.mgr, Рекомендуем скачать другие рефераты по теме: налоги в россии, сочинение.
Предыдущая страница реферата | 1
2
3
4
5
6
7
8
9
10
11 | Следующая страница реферата
|
|