добавлено: 17 май 18
понравилось:0
просмотров: 6714
комментов: 0
теги:
понравилось:0
просмотров: 6714
комментов: 0
теги:
Автор: Myp3_u_K
Чалышев Максим Михайлович
Учебный тренинг. SQL от новичка до профессионала.
Бесплатные авторские видеокурсы SQL, PLSQL, JAVA
А что если нам необходимо узнать , какие данные были в раньше до выполнения операций модификации данных....
как это сделать ?,
Для этого в Oracle предусмотрен механизм ретроспективных запросов (Flashback Query);
То есть, мы можем с помощью запросов посмотреть в прошлое.
Пример подобного запроса
для примера нам понадобится таблица
запомним время создания таблицы 17:01:01
удалим наименования таблиц
и запомним время 17:10:14
удалим наименования таблиц
и запомним время и запомним время 17:11:22
нет таблиц , нет обьектов owner = sys system
есть таблицы, нет обьектов owner = sys system
видим обьекты owner = sys system
recycle bin в Oracle поддерживается начиная с версии 10g .
Если корзина включена (по умолчанию), то при удалении таблиц с помощью конструкции DROP , объест не удаляется
, а просто переименовывается, оставаясь в табличном пространстве пользователя.
Посмотреть содержимое корзины можно с помощью запроса
корзина текущей схемы
корзина для всех схем
очистка корзины:
-- чистим свою
-- чистим все
отключение корзины
И восстановление ТАБЛИЦЫ ИЗ КОРЗИНЫ
пример
В Oracle основные сведения хранятся в словаре данных,
словарь состоит из таблиц и представлений.
Исходный пакетов и процедур же код хранится в таблице sys.source$, к которой в свою очередь применим РЕТРОСПЕКТИВНЫЙ запрос вида AS OF TIMESTAMP.
Если это пакет, то нам понадобятся 2 object_id, один для тела, а другой для определения находим обьекты используя идентификаторы , получаем код :
извлекаем из таблицы исходные тексты пакета MY_pkg.
Учебный тренинг. SQL от новичка до профессионала.
Бесплатные авторские видеокурсы SQL, PLSQL, JAVA
А что если нам необходимо узнать , какие данные были в раньше до выполнения операций модификации данных....
как это сделать ?,
Для этого в Oracle предусмотрен механизм ретроспективных запросов (Flashback Query);
То есть, мы можем с помощью запросов посмотреть в прошлое.
Пример подобного запроса
для примера нам понадобится таблица
create table obj_t -- table as select owner, object_type from all_objects group by owner, object_type; ;
запомним время создания таблицы 17:01:01
delete obj_t where object_type = 'TABLE';
удалим наименования таблиц
и запомним время 17:10:14
delete obj_t where owner in ('SYS', 'SYSTEM');
удалим наименования таблиц
и запомним время и запомним время 17:11:22
select * from obj_t ;
нет таблиц , нет обьектов owner = sys system
select * from obj_t as of scn timestamp_to_scn(to_timestamp('19/04/2018 17:10:00','DD/MM/YYYY HH24:MI:SS')) ;
есть таблицы, нет обьектов owner = sys system
select * from obj_t as of scn timestamp_to_scn(to_timestamp('19/04/2018 17:11:00','DD/MM/YYYY HH24:MI:SS')) ;
видим обьекты owner = sys system
recycle bin в Oracle поддерживается начиная с версии 10g .
Если корзина включена (по умолчанию), то при удалении таблиц с помощью конструкции DROP , объест не удаляется
, а просто переименовывается, оставаясь в табличном пространстве пользователя.
Посмотреть содержимое корзины можно с помощью запроса
SELECT * FROM recyclebin;
корзина текущей схемы
SELECT * FROM dba_recyclebin;
корзина для всех схем
очистка корзины:
-- чистим свою
PURGE RECYCLEBIN;
-- чистим все
PURGE DBA_RECYCLEBIN;
отключение корзины
ALTER SESSION SET recyclebin=OFF;
И восстановление ТАБЛИЦЫ ИЗ КОРЗИНЫ
FLASHBACK TABLE my_dropped_table TO BEFORE DROP;
пример
create table t as select owner, count(object_name) cnt from all_objects group by owner; drop table t; FLASHBACK TABLE t TO BEFORE DROP; select * from t;
В Oracle основные сведения хранятся в словаре данных,
словарь состоит из таблиц и представлений.
Исходный пакетов и процедур же код хранится в таблице sys.source$, к которой в свою очередь применим РЕТРОСПЕКТИВНЫЙ запрос вида AS OF TIMESTAMP.
SELECT owner, object_name, object_type, object_id FROM dba_objects WHERE object_name = 'MY_PKG';
Если это пакет, то нам понадобятся 2 object_id, один для тела, а другой для определения находим обьекты используя идентификаторы , получаем код :
SELECT * FROM sys.source$ AS OF TIMESTAMP TO_DATE ('20.04.2016 17:00', 'dd.mm.yyyy hh24:mi') WHERE obj# IN (123455, 12345);
извлекаем из таблицы исходные тексты пакета MY_pkg.
Комментарии