Oracle DBA Forum  

Вернуться   Oracle DBA Forum > Oracle University Official Study Notes (RUS) > База данных Oracle 10g Администрирование > База данных Oracle 10g Администрирование II

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 05.10.2009, 02:51
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию 06 Флэшбэк (Flashback)

__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #2  
Старый 05.10.2009, 02:52
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Рассматриваемые вопросы

__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #3  
Старый 05.10.2009, 02:54
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Обзор технологии флэшбэк



Обзор технологии флэшбэк

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

В случае человеческих ошибок трудно выявить объекты и строки, на которые оказала воздействие неверная транзакция. Технология флэшбэк помогает диагностировать то, как ошибочные данные были внесены в базу данных. После этого вы можете устранить последствия искажения данных.

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

Операция Flashback Database использует журнал возврата (flashback logs),. Flashback Drop корзину удаленных объектов (recycle bin). Все остальные методы используют данные отмены (undo data).

Не все возможности флэшбэк изменяют базу данных. Некоторые из них - это просто методы запроса версий данных. Они помогают исследовать проблему и определить цель восстановления.

В результате таких запросов можно выполнить одно из двух:

определить, какой тип операций flashback следует произвести в БД для устранения проблемы;
направить результаты запросов в команду INSERT, UPDATE или DELETE, что позволит простым образом исправить ошибочные данные.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #4  
Старый 05.10.2009, 02:56
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Flashback Drop и корзина удаленных объектов



Flashback Drop и корзина удаленных объектов

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

В Oracle Database 10g введена возможность восстановления удаленных объектов (flashback drop), которая позволяет отменить команду DROP TABLE без помощи традиционного метода восстановления на момент времени.

Примечание: Параметр инициализации RECYCLEBIN используется для включения (ON) или отключения (OFF) функциональной возможности Flashback Drop. Если параметр имеет значение OFF, тогда удаленные таблицы не попадают в корзину (recycle bin). Если же значение этого параметра ON, тогда удаляемые таблицы помещаются в корзину и могут быть восстановлены. По умолчанию для параметра RECYCLEBIN установлено значение ON.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #5  
Старый 05.10.2009, 02:57
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Корзина удаленных объектов



Корзина удаленных объектов

Если отключена функциональная возможность ведения корзины (RECYCLEBIN=OFF), тогда при удалении таблицы немедленно освобождается пространство, занимаемое таблицей и зависимыми от нее объектами (т.е., оно может быть использовано для других объектов).

Когда корзина активна (RECYCLEBIN=ON), тогда при удалении таблицы пространство, занимаемое таблицей и зависимыми от нее объектами, немедленно не освобождается, хотя появляется в словаре DBA_FREE_SPACE. Вместо этого удаленные объекты временно помещаются в корзину (recycle bin) и все еще принадлежат своему владельцу.

Пространство, занимаемое объектами корзины никогда автоматически не освобождается, если только не возникнет проблема нехватки пространства. Это позволяет восстановить объекты из корзины в течение максимально возможного отрезка времени.

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

Корзина сама по себе представляет собой таблицу словаря, в которой сопровождаются связи между первоначальными именами удаленных объектов и имена, сгенерированными для них системой. Запросить содержимое таблицы можно с помощью представления
DBA_RECYCLEBIN.

Диаграмма на слайде иллюстрирует описанную выше новую функциональную возможность:

1. Вы создали таблицу EMPLOYEES в своем табличном пространстве.
2. Вы удалили таблицу EMPLOYEES.
3. Экстенты, занимаемые таблицей EMPLOYEES, теперь рассматриваются в качестве свободного пространства.
4. Таблица EMPLOYEES переименована и добавлена в корзину.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #6  
Старый 05.10.2009, 02:59
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Восстановление удаленных объектов из корзины



Восстановление удаленных объектов из корзины

Команда FLASHBACK TABLE ... ТО BEFORE DROP используется для восстановления из корзины таблицы и всех зависимых от нее объектов. Можно указывать либо первоначальное имя таблицы, либо имя, сгенерированное системой и назначенное объекту при его удалении.

Если задается первоначальное имя и в корзине несколько объектов с таким именем, тогда занесенный последним в корзину объект восстанавливается первым (Last In First Out -LIFO). Если необходимо извлечь более старую версию таблицы, можно указать сгенерированное системой имя таблицы или же выполнять команды FLASHBACK TABLE ... ТО BEFORE DROP, пока не будет выбрана нужная таблица.

При извлечении таблицы с первоначальным именем, совпадающим с именем новой таблицы, созданной в той же схеме после удаления старой таблицы, выдается ошибка, если только не указана фраза RENAME ТО.

Примечание. При извлечении таблицы из корзины восстанавливаемые индексы, триггеры и ограничения сохраняют имена, которые они имели в корзине. Поэтому целесообразно запросить данные из корзины и представления DBA_CONSTRAINTS перед операцией FLASHBACK TABLE. После этого можно переименовать восстанавливаемые индексы, триггеры и ограничения и дать им более подходящие имена.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #7  
Старый 05.10.2009, 03:01
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Автоматическое использование пространства корзины



Автоматическое использование пространства корзины

До тех пор, пока пространство, используемое корзиной, не потребуется базе данных для других целей, возможно восстановление удаленных объектов.

Существуют следующие варианты освобождения пространства корзины, занимаемого объектами:

Ручная очистка корзины по команде PURGE.
Автоматическая очистка по причине нехватки пространства. Пространство, занимаемое объектами корзины, может быть автоматически возвращено для другого использования. Поэтому оно отражается в представлении DBA_FREE_SPACE. До тех пор, пока не возвращено пространство, занимаемое объектами в корзине, вы можете восстановить такие объекты, используя Flashback Drop.

Ниже приведены правила, по которым в указанном порядке занимается свободное место в табличном пространстве:

1. Свободное пространство, не связанное с корзиной;
2. Свободное пространство, связанное с корзиной; корзина автоматически очищается на основе алгоритма FIFO (First in First Out, первым поступил, первым удален).
3. Свободное пространство автоматически выделяется, если файлы табличного пространства с авторасширением.

Предположим создается новая таблица в табличном пространстве TBS1. Если в этом табличном пространстве есть свободное место, не занимаемое корзиной, тогда сначала используется это свободное пространство. Если его недостаточно, тогда занимается место, используемое в табличном пространстве TBS1 объектами корзины.

При использовании свободного пространства корзины соответствующие объекты автоматически удаляются их корзины. После этого их нельзя восстановить по команде
flashback drop.

Если все таки места для таблицы недостаточно, база данных применяет автоматическое расширение табличного пространства TBS1, если это возможно.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #8  
Старый 05.10.2009, 03:03
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Ручное освобождение пространства корзины



Ручное освобождение пространства корзины

Используйте команду PURGE, чтобы удалить объекты из корзины. Одновременно из базы данных окончательно удаляются зависимые от них объекты. В результате удаленные из корзины объекты больше не могут быть восстановлены с помощью команды flashback drop.


Использование команда PURGE:

PURGE TABLE; удаления указанной таблицы.
PURGE INDEX; удаления указанного индекса.
PURGE TABLESPACE; удаление всех объектов, размещенных в заданном табличном пространстве. Дополнительно могут быть удалены зависимые объекты, размещенные в других табличных пространствах. Кроме того, можно задать фразу USER, чтобы удалить объекты, принадлежащие только указанному пользователю. Это опция применяется в случае, когда у пользователя небольшая квота на дисковое пространство данного табличного пространства.
PURGE RECYCLEBIN; удаление всех объектов текущего пользователя. RECYCLEBIN и USER_RECYCLEBIN - это синонимы.
PURGE DBA_RECYCLEBIN; удаление всех объектов из корзины. Для выполнения этой команды необходимы соответствующие системные привилегии или привилегия SYSDBA.

Примечание: Когда в корзине содержится несколько объектов с именем удаляемого объекта, указанным в команде PURGE TABLE или PURGE INDEX, тогда из корзины первым удаляется объект, который дольше всего находится в корзине (First In First Out первым пришел, первым ушел).
__________________
Чат форума (требуется аккаунт на github или twitter)

Последний раз редактировалось Marley; 02.10.2015 в 02:24.
Ответить с цитированием
  #9  
Старый 05.10.2009, 03:04
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Когда удаляемые объекты не переносятся в корзину



Когда удаляемые объекты не переносятся в корзину

Команда DROP TABLE PURGE окончательно удаляет таблицу и зависимые от нее объекты из базы данных. При использовании этой команды соответствующие объекты не попадают в корзину. Она действует так же, как и команда DROP TABLE в предыдущих версиях.

При выполнении команды DROP TABLES РАСЕ . . . INCLUDING CONTENTS объекты табличного пространства не перемещаются в корзину. Более того, объекты, находящиеся в корзине и принадлежащие табличному пространству, удаляются из нее. Для успешного выполнения такой команды без фразы INCLUDING CONTENTS необходимо, чтобы табличное пространство было пустым. Однако при этом объекты, принадлежащие удаляемому табличному пространству, могут находиться в корзине. Они в этом случае из нее удаляются.

Команда DROP USER . . . CASCADE удаляет пользователя и все его объекты навсегда из базы данных. Объекты удаляемого пользователя, находящиеся в корзине, также удаляются.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #10  
Старый 05.10.2009, 03:07
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Запрос сведений о содержимом корзины



Запрос сведений о содержимом корзины

Можно просмотреть все сведения об объектах, которые были удалены, запросив для этого представление USER_RECYCLEBIN или RECYCLEBIN.

Представление DBA_RECYCLEBIN показывает все объекты, которые были удалены всеми пользователями и все еще находятся в корзине.

Кроме того можно воспользоваться командой SQL*Plus SHOW RECYCLEBIN. По этой команде выводятся только такие объекты, которые можно восстановить.

В приведенных примера показывается, как получить следующую сведения об объектах корзины:

OR IGI NAL_NAME; как назывался объект перед удаление;
OB JECT_NAME; сгенерированное системой имя для объекта после его удаления;
TYPE; тип объекта;
TS_NAME; имя табличного пространства, которому принадлежит объект;
DROPTIME; дата удаления объекта;
RELATED; идентификатор объекта (столбец obj ect_id в dba_objects) для удаленного объекта;
SPACE; количество блоков, используемых объектом в настоящее время.
Можно также просмотреть содержимое корзины с помощью Database Control.

Примечание: дополнительную информацию о представлении DBA_RECYCLEBIN см. в документу Oracle Database Reference.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
Ответ
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 19:15. Часовой пояс GMT +3.


Powered by vBulletin®