Oracle ввел в базу 10g новую функцию под названием «Корзина» для хранения удаленных объектов базы данных. Если какая-либо таблица отбрасывается, то любой связанный с ней объект, такой как индексы, ограничения и любой другой зависимый объект, переименовывается с префиксом bin $$.
Использование корзины
Если пользователь случайно уронил важный объект, и он хочет получить его снова. С помощью функции корзины можно легко восстановить упавшие предметы.
Включить и отключить корзину
Вы можете использовать следующий запрос, чтобы определить, какая корзина включена или нет
1
|
SELECT Value FROM V$parameter WHERE Name = 'recyclebin' ; |
Он будет включаться или выключаться, что означает, что корзина включена и выключена.
Вы можете включать и отключать корзину для сеанса и системы , поэтому вы можете использовать приведенные ниже сценарии для включения и отключения
Корзина для сеанса или системы .
1
2
3
4
5
6
7
|
ALTER SYSTEM SET recyclebin = ON ; ALTER SESSION SET recyclebin = ON ; ALTER SYSTEM SET recyclebin = OFF ; ALTER SESSION SET recyclebin = OFF ; |
Получить содержимое корзины
Чтобы получить отброшенный объект в Корзине , вы можете использовать любой из приведенных ниже операторов запроса.
1
2
3
4
5
|
SELECT * FROM RECYCLEBIN; SELECT * FROM USER_RECYCLEBIN; SELECT * FROM DBA_RECYCLEBIN; |
Восстановить выпавшие объекты
Вы можете использовать приведенный ниже синтаксис для восстановления удаленных объектов
1
|
FLASHBACK TABLE <<Dropped_Table_Name>> TO BEFORE DROP RENAME TO <<New_Table_Name>>; |
Обратите внимание, что часть RENAME TO в операторе восстановления является необязательной, и вы должны использовать ее, если хотите восстановить удаленный объект с новым именем.
Очистка корзины
Вы можете очистить определенные записи в корзине или заполнить корзину
a- Очистить определенную таблицу
1
|
PURGE TABLE <<Table_NAME>>; |
b- Очистить определенный индекс
1
|
PURGE INDEX <<Index_NAME>>; |
c- Очистить все объекты, связанные с конкретным табличным пространством
1
|
PURGE TABLESPACE<<Table_NAME>>; |
d- Очистить объекты определенного пользователя в табличном пространстве
1
|
PURGE TABLESPACE<<Table_NAME>> USER <<User_Name>>; |
e- Очистить полную корзину
1
|
PURGE TABLE <<Table_NAME>>; |
e- Очистить полную корзину
1
|
PURGE RECYCLEBIN; |
f- Вы можете очистить стол от мусорной корзины, уронив ее
1
|
DROP TABLE <<Table_Name>> PURGE; |
демонстрация
Теперь я возьму демо и для уточнения функции корзины
1-Включить функцию корзины
1
|
ALTER SYSTEM SET recyclebin = ON ; |
2- Создать таблицу базы данных DEMO_RECYCLEBIN
1
|
CREATE TABLE DEMO_RECYCLEBIN (COL1 NUMBER); |
3- Вставить одну запись в таблицу DEMO_RECYCLEBIN
1
|
INSERT INTO DEMO_RECYCLEBIN (COL1) VALUES (1); COMMIT ; |
4- Удалить таблицу DEMO_RECYCLEBIN
1
|
DROP TABLE DEMO_RECYCLEBIN; |
5- Запрос содержимого корзины
1
|
SELECT * FROM USER_RECYCLEBIN; |
Данные будут как ниже
6- Восстановить таблицу DEMO_RECYCLEBIN из корзины
1
|
FLASHBACK TABLE DEMO_RECYCLEBIN TO BEFORE DROP ; |
7- Quert DEMO_REYCLEBIN после восстановления
1
|
SELECT * FROM DEMO_RECYCLEBIN; |
Он вернет данные, существовавшие до сброса
8- Опустите стол снова и очистите корзину
1
|
DROP TABLE DEMO_RECYCLEBIN PURGE; |
Ссылка: Корзина в базе данных от нашего партнера JCG Махмуда А. Эль-Сайеда в блоге Dive in Oracle .