Министерство образования РФ ГОУ ВПО «Удмуртский государственный университет» Физический факультет Кафедра информатики и математики Реферат Тема: «Технологии Oracle FlashBack» Выполнил: студент гр. 38-41 Романов Евгений Ижевск 2006. Содержание 1. 2. 3. 4. 5. 6. 7. 8. 9. Введение. Технология Flashback Query. Технология Flashback Versions Query. Технология Flashback Transaction Query. Технология Flashback Table. Технология Flashback Drop. Технология Flashback Database. Настройки для работы с Oracle Flashback. Список литературы Введение Согласно многим исследованиям, до 40% перебоев в работе приложений вызваны ошибками операторов и пользователей. Все люди делают ошибки. Избежать этих ошибок чрезвычайно трудно, а без опережающего планирования и использования правильной технологии выполнить восстановление тем более трудно. Такие ошибки могут привести к "логическому" повреждению данных или стать причиной большого времени простоя одного или нескольких компонентов IT-инфраструктуры. В то время как относительно просто исправить отказ отдельного компонента, обнаружение и исправление (repair) логических повреждений данных, например, в результате случайного удаления важной информации, представляет собой трудоёмкое действие, которое вызывает существенное снижение бизнес-производительности. Типичными ошибками пользователей являются случайное исключение полноценных данных в процессе удаления неверных данных или уничтожения (drop) неправильной таблицы. Когда человек, обладающий соответствующими привилегиями, допускает ошибку, нужно иметь в своем арсенале инструмент, который мог бы ее исправить. В пакете Oracle Database 10g присутствует целый букет технологий, предназначенных для этих целей, под общим названием Flashback (Flashback – букв. - взгляд в прошлое, ретроспективный эпизод). Эти технологии совершили настоящий переворот в области восстановления данных. В прежние времена хватало нескольких минут, чтобы испортить базу данных, и требовалось несколько часов, чтобы ее воскресить. Благодаря Flashback теперь и то, и другое занимает считанные минуты. Но вместе с быстротой соседствует и поразительная простота. В наши дни, чтобы восстановить прежнее состояние базы данных, вместо долгой и запутанной процедуры достаточно отдать одну короткую команду. Flashback поддерживает SQL-интерфейс для быстрого разбора и коррекции ошибок пользователя. Технология предлагает детальный хирургически точный анализ и исправление локальных погрешностей, таких как неверно удаленный заказ клиента. Flashback в состоянии за короткий срок справиться и с более обширными повреждениями, например, такими как потеря всех заказов клиентов, сделанных ими за текущий месяц. Технология Flashback является фирменным знаком Oracle Database и позволяет выполнять откаты для объектов любого уровня, будь то строка, транзакция, таблица, табличное пространство или вся база данных целиком. Технологии Oracle Flashback: Совокупность технологий именуемых Oracle Flashback Technology включает в себя: Oracle Flashback Query позволяет просмотреть содержание таблицы, которое существовало в указанное время. Oracle Flashback Version Query позволяет просмотреть все варианты всех строк, существовавших в таблицах в указанный период времени. Oracle Flashback Transaction Query позволяет просмотреть изменения в базе, которые произошли в результате транзакций в течении указанного периода времени. Oracle Flashback Table возвращает таблицу в состояние, в котором она была в конкретное время в прошлом. Oracle Flashback Drop возвращает из корзины удаленную таблицу и все связанные с ней объекты. (возвращает после команды DROP TABLE) Oracle Flashback Database возвращает таблицу в прошлое состояние (в конкретное время) Flashback Query Благодаря механизму ретроспективных запросов, впервые представленному в Oracle9i Database, администратор или обычный пользователь могут извлекать интересующие их данные на любой момент прошлого. Это мощное средство дает возможность прочесть и воссоздать информацию, стертую или измененную вследствие невнимательного или неосторожного обращения. Рассмотрим следующий пример: SELECT * FROM ПРОДАВЦЫ AS OF TIMESTAMP TO_TIMESTAMP('2003-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS') WHERE ФИО = 'Петров Сидор Сидорович'; INSERT INTO employee (SELECT * FROM ПРОДАВЦЫ AS OF TIMESTAMP TO_TIMESTAMP('2003-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS') WHERE ФИО = 'Петров Сидор Сидорович'); Первый запрос отображает выборку работников с именем John из таблицы EMPLOYEE по состоянию на 9. 30 04 апреля 2004г. Вторая часть примера «занимается» тем, что восстанавливает утраченные данные. CREATE VIEW hour_ago AS SELECT * FROM ПРОДАВЦЫ AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE); Данный пример показывает, что дату для отката можно задавать с помощью интервала. В нашем случае для каждого запроса откат будет производиться на час назад, считая от системного времени, т.е. когда поступил запрос. Технология Flashback Query дает возможность работать с результатами запроса как с множествами. Чаще всего это применятся для сравнения состояний одной и той же таблицы в разное время, тем самым можно отследить произошедшие в ней изменения. INSERT INTO ПРОДАВЦЫ (SELECT * FROM ПРОДАВЦЫ AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE)) MINUS SELECT * FROM ПРОДАВЦЫ); В данном примере восстанавливаются утраченные данные по работникам с именем John из таблицы EMPLOYEE. Однако, в отличие от первого примера, где также шло восстановление данных, в данном случае восстанавливаются именно утраченные данные. В том же случае шла перезапись всех строк, соответствующих работникам с именем John, т.е. как существующих так и утраченных строк. Разработчики, предусмотревшие в своих приложениях функцию автокоррекции ошибок, основанную на предложенном алгоритме, дадут в руки конечных пользователей инструмент для мгновенного и самостоятельного исправления ошибок, освободив, тем самым, администраторов БД, по крайней мере, от одной лишней заботы. Работать с Flashback Query чрезвычайно просто, поскольку база данных автоматически запоминает всю информацию, необходимую для реконструкции данных в определенный момент времени прошлого. Альтернативой Flashback Query является пакет DBMS_FLASHBACK. Этот пакет предоставляет такие же возможности, что и Flashback Query, но Flashback Query может быть в некоторых ситуациях более подходящим. Пакет DBMS_FLASHBACK работает как машина времени: вы можете повернуть время вспять, выполнять запросы как – будто вы в конкретном времени в прошлом, а затем вернуться в настоящее. Для создания запросов при использовании данного пакета не нужно пользоваться такими командами как AS OF или VERSIONS BETWEEN. Для пользования данными возможностями у вас должна быть привилегия EXECUTE. Для того чтобы работать с данным паектом нужно выполнить следующие действия: 1. Вызовите DBMS_FLASHBACK.ENABLE_AT_TIME или чтобы вернуть часы в конкретное время в прошлом. После этого, все запросы будут извлекать информацию, которая была текущей в указанное время. DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER 2. Исполняйте «нормальные» запросы, т.е. без специального flashback- синтаксиса (AS OF) . База данных автоматически обращается к указанному времени в прошлом. Исполняйте только запросы; не пытайтесь выполнить DDL или DML операции. 3. Вызовите DBMS_FLASHBACK.DISABLE для возврата в настоящее время. (Вы должны сначала вызвать DISABLE прежде чем снова вернуться в какое-то прошлое время). С помощью данной технологии можно найти утерянные данные, сравнить состояние таблиц в разное время. Flashback Versions Query Технология Flashback Versions Query служит для просмотра изменений, имевших место в базе данных на уровне строк. Являясь расширением языка SQL, она помогает находить различные версии конкретной записи таблицы в пределах указанного промежутка времени. Синтаксис запроса имеет следующий вид VERSIONS {BETWEEN {SCN | TIMESTAMP} start AND end} Каждая строка содержит псевдостолбцы метаданных о версии строки, с помощью которых можно посмотреть какие изменения встречались в данной строке. Таблица 1 Flashback Version Query Row Data Pseudocolumns Имя псевдостолбца Описание VERSIONS_STARTSCN, VERSIONS_STARTTIME Starting System Change Number (SCN) or TIMESTAMP. Указывают на время создания данной версии строки. Эти данные можно использовать для указания (идентификации) точного времени в прошлом для операций Flashback Table или Flashback Query. Если значение данного поля равно NULL, то это означает, что версия строки была создана раньше чем нижняя граница временного интервала, указанного в операторе BETWEEN. VERSIONS_ENDSCN, VERSIONS_ENDTIME SCN or TIMESTAMP, указывающие на время «исчезновения» данной версии строки. Если значение данного поля равно NULL, то это означает, что данная версия строки была текущей в интервале, указанном в запросе, либо строка была удалена (в оригинале – строка соотносится с операцией DELETE). VERSIONS_XID Идентификатор транзакции, создавшей данную версию строки. VERSIONS_OPERATION Операции выполненные транзакцией: I для добавления (insertion), D для удаления (deletion) , или U для обновления (update). Версия - это та часть строки, которая была добавлена, удалена или обновлена; это строка после добавления, строка до удаления или строка, которая была обновлена. Псевдостолбец VERSIONS_XID содержит уникальный идентификатор транзакции, которая перевела строку в данное состояние. Он может быть использован для работы с командами Flashback Transaction Query. Замечание: При получении результата запроса важно знать, что данная строка «действительна» начиная с VERSIONS_START* включительно и до VERSIONS_END*, но не включая данный момент времени, т.е. содержание (версия) строки действительно в течении времени t : VERSIONS_START* <= t < VERSIONS_END*. VERSIONS_START_TIME ------------------09-SEP-2003 VERSIONS_END_TIME ----------------25-NOV-2003 SALARY -----10243 В данном случае зарплата была равна 10243 с 09.09.03, включительно, по 25.11.03. Но 25 ноября 2003 года зарплата уже не была равна 10243 . Типичный запрос Flashback Versions Query выглядит следующим образом: SELECT versions_startscn, versions_starttime, versions_endscn, versions_endtime, versions_xid, versions_operation, name, salary FROM ПРОДАВЦЫ VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP('2003-07-18 14:00:00', 'YYYY-MM-DD HH24:MI:SS') AND TO_TIMESTAMP('2003-07-18 17:00:00', 'YYYY-MM-DD HH24:MI:SS') WHERE ФИО = 'Петров Сидор Сидорович'; Результатом данного запроса будет таблица, состоящая из всех версий строк, содержащих в столбце name имя ‘'Петров Сидор Сидорович'’, существовавших в период времени с 14.00 до 17.00 часов 18 июля 2003 года. Столбцами данной таблицы будут все псевдостолбцы, описанные ранее, а также имя и зарплата. Действуя в соответствии с приведенным алгоритмов, АБД всегда может выяснить как и когда запись была изменена и кто был инициатором изменений - пользователь, приложение или транзакция. Таким образом, администратор способен отыскать и устранить ошибку, повлекшую за собой нарушение целостности данных. Кроме этого, у разработчиков появляются условия для отладки программного кода. Flashback Transaction Query Технология Flashback Transaction Query служит для просмотра изменений, имевших место в базе данных на уровне транзакций. Являясь расширением языка SQL, она помогает находить все изменения, произошедшие в БД с момента запуска той или иной транзакции. Взглянем на следующий пример: SELECT xid, operation, start_scn,commit_scn, logon_user, undo_sql FROM flashback_transaction_query WHERE xid = HEXTORAW('000200030000002D'); Данная инструкция отображает список результатов транзакции, одновременно возвращая набор инструкции SQL, которые, при желании, могут быть использованы для преобразования строк, участвовавших в транзакции, к их первоначальному виду. В предыдущем пункте мы рассматривали псевдостолбцы Flashback Version Query Row Data, среди которых был идентификатор транзакции. Далее мы рассмотрим примеры, иллюстрирующий совместную работу технологий Flashback Version Query и Flashback Transaction Query: 1) SELECT xid, logon_user FROM flashback_transaction_query WHERE xid IN (SELECT versions_xid FROM ПРОДАВЦЫ VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP('2003-07-18 14:00:00', 'YYYY-MM-DD HH24:MI:SS') AND TO_TIMESTAMP('2003-07-18 17:00:00', 'YYYY-MM-DD HH24:MI:SS')); Результатом данного запроса будет таблица, демонстрирующая изменения, имевшие место на уровне транзакций, изменивших таблицу ПРОДАВЦЫ с 14.00 до 17.00 часов 18 июля 2003 года. 2) Далее будет представлен более детальный пример совместной работы Flashback Version Query и Flashback Transaction Query: В данном примере будут продемонстрированы простые изменения таблиц employee и Departments в схеме HR. connect hr/hr CREATE TABLE emp (empno number primary key, empname varchar2(16), salary number); INSERT INTO emp VALUES (111, 'Mike', 555); COMMIT; CREATE TABLE dept (deptno number, deptname varchar2(32)); INSERT INTO dept VALUES (10, 'Accounting'); COMMIT; В данный момент обе таблицы имеют по одной строке. Каждая таблица имеет только одну версию каждой строки. Предположим, что ошибочная транзакция удалила строку с идентификатором рабочего 111 из таблицы emp: UPDATE emp SET salary = salary + 100 where empno = 111; INSERT INTO dept VALUES (20, 'Finance'); DELETE FROM emp WHERE empno = 111; COMMIT; Впоследствии, новая транзакция поместила в таблицу emp строку с идентификатором рабочего 111, но с новым именем. INSERT INTO emp VALUES (111, 'Tom', 777); UPDATE emp SET salary = salary + 100 WHERE empno = 111; UPDATE emp SET salary = salary + 50 WHERE empno = 111; COMMIT; В этот момент администратор БД обнаруживает ошибку и ему необходимо разобраться в сложившейся ситуации. Он использует следующие запросы, чтобы просмотреть строки таблицы emp , поле empno которых было равным или равно 111. В запросах используются псевдостолбцы Flashback Version Query. connect dba_name/password SELECT versions_xid XID, versions_startscn START_SCN, versions_endscn END_SCN, versions_operation OPERATION, empname, salary FROM hr.emp VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE where empno = 111; XID ---------------0004000700000058 000200030000002D 000200030000002E 3 rows selected START_SCN END_SCN OPERATION EMPNAME SALARY ---------- --------- ---------- ---------- ---------113855 I Tom 927 113564 D Mike 555 112670 113564 I Mike 555 Таблицу результатов нужно читать снизу вверх, т.е. верхняя строка последнему состоянию. соответствует Третья строка соответствует тому, что данная запись (111, ‘ Mike’, 555) была внесена в таблицу во время ее создания. Вторая строка показывает, что данная запись была удалена ошибочной транзакцией. Третья строка соответствует тому, что запись (111, ‘Tom’, …) была внесена в таблицу. Администратор устанавливает, что «ошибочная» транзакция имела идентификатор 000200030000002D и вызывает Flashback Transaction Query, чтобы отследить все изменения, которые были произведены данной транзакцией. SELECT xid, start_scn START, commit_scn COMMIT, operation OP, logon_user USER, undo_sql FROM flashback_transaction_query WHERE xid = HEXTORAW('000200030000002D'); XID START COMMIT OP USER UNDO_SQL ---------------- ---------- ------------------------------000200030000002D 195243 195244 DELETE HR insert into "HR"."EMP" ("EMPNO","EMPNAME","SALARY") values ('111','Mike','655'); 000200030000002D 195243 195244 INSERT where ROWID = 'AAAKD4AABAAAJ3BAAB'; HR delete from "HR"."DEPT" 000200030000002D 195243 195244 UPDATE HR update "HR"."EMP" set "SALARY" = '555' where ROWID = 'AAAKD2AABAAAJ29AAA'; 000200030000002D 195243 113565 BEGIN HR Столбец undo_sql содержит SQL код, показывающий какие изменения были произведены. Столбец logon_user содержит информацию об ответственном за транзакцию пользователе. Администратор может быть заинтересован в знании всех изменений. В нашем примере, администратор, с помощью следующих запросов, может посмотреть информацию о всех транзакциях, выполненных начиная с определенного времени: SELECT xid, start_scn, commit_scn, operation, table_name, table_owner FROM flashback_transaction_query WHERE table_owner = 'HR' AND start_timestamp >= TO_TIMESTAMP ('2002-04-16 11:00:00','YYYY-MM-DD HH:MI:SS'); XID ---------------0004000700000058 0004000700000058 0004000700000058 000200030000002D 000200030000002D 000200030000002D 6 rows selected START_SCN --------195245 195245 195245 195243 195243 195243 COMMIT_SCN ---------195246 195246 195246 195244 195244 195244 OPERATION --------UPDATE UPDATE INSERT DELETE INSERT UPDATE TABLE_NAME ---------EMP EMP EMP EMP DEPT EMP TABLE_OWNER ----------HR HR HR HR HR HR Flashback Table Когда встречаются программные или пользовательские ошибки, возникает необходимость откатить одну или несколько таблиц в состояние, которое было до ошибки. Flashback Table предоставляет администратору возможность вернуть таблицу или множество таблиц в определенное точку в прошлом быстро, легко и не выключая базу данных. Flashback Table возвращает таблицу в прежнее состояние с автоматическим поддерживанием (сохранением) связанных с ней атрибутов : текущие индексы, триггеры и т.д.. Для использования возможностей Flashback Table необходимо: Вам должны быть предоставлены привилегии FLASHBACK ANY TABLE (системная привилегия) или FLASHBACK (на конкретную таблицу). У вас должны быть права SELECT, INSERT, DELETE, and ALTER на данную таблицу. «Движение» строк должно быть доступно( включено) в таблице для которой вы вызываете FLASHBACK TABLE. Вы можете включить данную опцию с помощью следующего SQL выражения: ALTER TABLE table ENABLE ROW MOVEMENT; Следующее выражение выполняет операцию FLASHBACK TABLE над таблицей employee: FLASHBACK TABLE ПРОДАВЦЫ TO TIMESTAMP TO_TIMESTAMP('2003-04-04 09:30:00', `YYYY-MM-DD HH24:MI:SS'); Таблица employee возвращена в состояние, в котором она была в указанное время. Можно указать время в прошлом используя SCN: FLASHBACK TABLE ПРОДАВЦЫ TO SCN 123456; Далее мы рассмотрим типичную ситуацию, в которой Flashback Table оказывается очень удобным инструментом для решения проблемы: В 17.00 администратор заметил что запись о работнике “John” исчезла из таблицы EMPLOYEE. Эта запись еще существовала в 14.00 этого же дня, но кто-то случайно удалил ее в промежутке с 14.00 до настоящего времени. Администратор использует Flashback Table, чтобы вернуть таблицу в прежнее состояние: FLASHBACK TABLE ПРОДАВЦЫ TO TIMESTAMP TO_TIMESTAMP('2003-04-04 14:00:00','YYYY-MM-DD HH:MI:SS'); Flashback Drop Случайный сброс или, другими словами, случайное удаление объектов базы данных происходило раньше, происходит сейчас и, скорее всего, будет происходить в будущем. Сколько раз специалистам из группы поддержки пользователей Oracle приходилось слышать фразы типа: “Странно, а мне казалось, что я удалял таблицу из тестовой базы данных”. Пользователи спохватываются, когда становится слишком поздно и нет никакой возможности вернуть таблицу со всеми ее индексами, триггерами и ограничениями из небытия. Объект, утраченный однажды утрачивается безвозвратно. В случае удаления действительно важной таблицы или объекта, например, индекса, раздела или кластера, администратору приходится тратить уйму времени на их восстановление, рискуя потерять результаты последних транзакций. Flashback Drop выполняет роль страховочной сетки при сбросе объектов в Oracle Database 10g. Когда пользователь удаляет таблицу, Flashback Drop помещает ее корзину. Объекты хранятся в корзине до тех пор, пока пользователь окончательно не сочтет их ненужными и пока в табличном пространстве, которому они принадлежат, остается свободное место. Корзина представляет собой виртуальный контейнер, где содержатся любые удаленные структуры. Открыв корзину, пользователь может достать оттуда “выброшенную” ранее таблицу вместе с сопутствующими ей объектами. Следующая команда возвращает таблицу и сопутствующие ей объекты в разряд активных: FLASHBACK TABLE HR.INT_ADMIN_EMP TO BEFORE DROP; Flashback Drop – это своеобразная кнопка отмены сброса таблицы и связанных объектов Рассмотрим на примерах работу с данной технологией: SQL> DROP TABLE ПРОДАВЦЫ; После выполнения данной команды таблица и все связанные с ней объекты помещаются в корзину. Чтобы окончательно удалить данные объекты и таблицу нужно выполнить следующую команду: DROP TABLE ПРОДАВЦЫ PURGE; При помещении таблицы в корзину ей присваивается уникальное имя (с сохранением старого). Делается это для того, чтобы избежать конфликты названий таблиц и объектов. Содержимое корзины можно просмотреть с помощью команды SHOW RECYCLEBIN. SQL> show recyclebin; ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- --------------------------------- ------------ -----------------ПРОДАВЦЫ BIN$gk3lsj/3akk5hg3j2lkl5j3d==$0 TABLE 2003-06-11:17:08:54 Существует два способа просмотра содержимого таблицы View Описание USER_RECYCLEBIN Позволяет пользователям посмотреть их собственные удаленные в корзину. Синонимом является RECYCLEBIN. DBA_RECYCLEBIN Позволяет администратору просмотреть все удаленные объекты SQL> SELECT object_name as recycle_name, original_name, object_type объекты, FROM recyclebin; RECYCLE_NAME -------------------------------BIN$gk3lsj/3akk5hg3j2lkl5j3d==$0 BIN$JKS983293M1dsab4gsz/I249==$0 BIN$NR72JJN38KM1dsaM4gI348as==$0 BIN$JKJ399SLKnaslkJSLK330SIK==$0 ORIGINAL_NAME --------------------ПРОДАВЦЫ I_EMP_DEMO LOB_EMP_DEMO LOB_I_EMP_DEMO OBJECT_TYPE ------------TABLE INDEX LOB LOB INDEX Вы можете запрашивать объекты из корзины, если У вас есть права FLASHBACK. У вас должны быть права, которые были необходимы для формирования запросов к той таблице, которая была удалена. Вы должны использовать в запросе имя объекта, которое было присвоено ему при помещении в корзину (предпочтительнее чем оригинальное имя объекта). Например: SQL> SELECT * FROM "BIN$KSD8DB9L345KLA==$0"; Сейчас, я бы хотел обсудить некоторые вопросы, связанные с оригинальными именами таблиц, помещенных в корзину. Допустим, что мы создаем и затем удаляем таблицы с одним и тем же именем: CREATE TABLE EMP ( ...columns ); # EMP version 1 DROP TABLE EMP; CREATE TABLE EMP ( ...columns ); # EMP version 2 DROP TABLE EMP; CREATE TABLE EMP ( ...columns ); # EMP version 3 DROP TABLE EMP; Если мы захотим «вытащить» таблицу EMP из корзины, то мы можем воспользоваться уникальным именем таблицы в корзине, а можем воспользоваться и оригинальным, т.е. EMP. FLASHBACK TABLE EMP TO BEFORE DROP; В результате будет восстановлена таблица которая была удалена последней (version 3). Oracle предоставляет возможность переименования таблицы в момент восстановления ее из корзины (RENAME TO): FLASHBACK TABLE "BIN$KSD8DB9L345KLA==$0" TO BEFORE DROP RENAME TO hr.int2_admin_emp; Итак, для того, чтобы «вытащить» все три таблицы из корзины, при этом не создав конфликтной ситуации, нужно поступить следующим образом: FLASHBACK TABLE EMP TO BEFORE DROP RENAME TO EMP_VERSION_3; FLASHBACK TABLE EMP TO BEFORE DROP RENAME TO EMP_VERSION_2; FLASHBACK TABLE EMP TO BEFORE DROP RENAME TO EMP_VERSION_1; Flashback Database Традиционный метод возврата базы данных Oracle к предыдущему состоянию предполагает восстановление сохраненной версии, датируемой нужным числом. Однако указанный процесс, как правило, занимает не один час, а иногда, и не один день, поскольку требует не только замены базы данных ее резервной копией, но обновления ее содержимого до той минуты, когда, собственно, и произошло разрушение данных. Учитывая постоянный рост объемов современных БД, могут потребоваться часы и даже дни только на то, чтобы вернуть накопившуюся гору информации на ее законное место. Flashback Database предлагает новое решение старой проблемы. Суть его заключается в устранении последствий, вызванных нарушением целостности данных или ошибкой пользователя, путем быстрого отката базы данных к определенной временной отметке. Flashback ведет журнальные файлы, где фиксируются исходные варианты каждого измененного блока. Это чем-то напоминает непрерывную фотосъемку, с той лишь разницей, что ее объектом является не человек, а фрагменты база данных. Когда требуется восстановить работоспособность системы, Flashback “отматывает” журнальные файлы до момента, непосредственно предшествующего ошибке, и извлекает только те блоки, которые с тех пор изменились. Процедура настолько коротка, что период восстановления сокращается с нескольких часов до считанных минут. А где быстрота, там и простота. Чтобы вернуться к состоянию системы на 2:05 по полудни достаточно ввести однуединственную команду: FLASHBACK DATABASE to ‘2:05 PM’ Никаких тебе магнитных лент, бесконечного ожидания или запутанных манипуляций. По окончании работы Flashback можно открыть базу данных в режиме “только чтение” и проверить ее содержимое. Если по Вашему мнению, Вы оказались слишком далеко от цели, повторите попытку и так пока максимально не приблизитесь к желаемой точке. Механизм Flashback интегрирован с функцией Data Guard, поэтому путешествовать во времени Вы можете сразу с двумя базами данных: основной и резервной (подробности в разделе Data Guard). Flashback Database - это своего рода пульт дистанционного управления базой данных, снабженный кнопками перемотки и отмены. Настройки для работы с Oracle Flashback. Перед тем как использовать возможности Oracle Flashback, администратору необходимо произвести некоторые настройки в конфигурации базы данных. Необходимо создать область на диске для хранения данных, необходимых для выполнения операций flashback. Необходимо помнить, что чем чаще обновляются данные , тем больше места на диске требуется. Необходимо включить Automatic Undo Management. В особенности, важны следующие параметры конфигурации базы данных: UNDO_MANAGEMENT, UNDO_TABLESPACE, and UNDO_RETENTION. Установите метку RETENTION GUARANTEE для той области, которую вы выделили «под flashback». Это необходимо сделать для того, чтобы быть уверенным в том, что нужные данные не будут уничтожены (UNDO_RETENTION сама по себе не является строгой гарантией) . Если система испытывает недостаток свободного места, то на место нужных данных могут быть записаны новые. RETENTION GUARANTEE помогает избежать этого. Предоставить пользователям, ролям и приложениям следующие права, необходимые для использования возможностей flashback: Пакет DBMS_FLASHBACK – Права EXECUTE на DBMS_FLASHBACK для доступа к возможностям этого пакета. Flashback Query and Flashback Version Query - Права FLASHBACK и SELECT на конкретные объекты, к которым должен быть осуществлен доступ во время запроса, или права FLASHBACK ANY TABLE для того, чтобы разрешить доступ ко всем таблицам.. Flashback Transaction Query – Права SELECT ANY TRANSACTION. Список литературы 1. 2. 3. 4. http://it.komitelecom.ru/Oracle10gR2Doc/doc http://mordor.tengry.com/db/oracle/db101/server.101/b10734/rcmflash.htm http://www.oracle.com/global/ru/oramag/march2004/gen_10g_flash.html http://www.oracle.com/global/ru/oramag/may2004/gen_10g_grid1.html