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 .