【新炬網路名師大講堂】Oracle中的回收站(Recycle Bin)
什麼是Recycle Bin
回收站(Recycle Bin)實際上是包含刪除物件資訊的資料字典表。刪除表和其他相關物件,比如索引、約束和巢狀表,實際上沒有被真的刪除,還是繼續佔用空間。直到被從回收站中purged出去,才能從資料庫釋放相關的表空間的空間。
每個使用者可以擁有自己的回收站,當然除非使用者擁有SYSDBA許可權,否則預設都只可以訪問使用者所屬的回收站。
可以透過下列語句,檢視在回收站中自己的物件:
select * from recyclebin;
特別需要注意的是:在sys下drop的表是不記錄recyclebin的。
閃回刪除和回收站的關係
使用Flashback Table命令,可以在無需使用時間點恢復的情況下,還原drop table語句的結果。
由初始化引數REECYCLEBIN用於控制閃回刪除功能是開啟(on)還是關閉(off)。如果是off,則刪除的表不會進入回收站。如果是on,則刪除的表將進入回收站,並且可能可以恢復(取決於是否還被保留)。預設情況下,不管10g和11g中。RECYCLEBIN設定為ON。
如果不啟用回收站,則刪除表時,與該表及其從屬物件關聯的空間會立即變為可回收。
如果啟用了回收站,則刪除表時,與該表及其從屬物件管理的空間不會立即變為可回收。即使該空間確實顯示在dba_free_space中。相反,會在回收站中引用刪除的物件,這些物件仍屬於其各自的所有者。在空間不緊張時,絕不會把回收站物件使用的快樂自動回收。從而可以儘可能長的期限內恢復回收站的物件。
回收站中物件的命名
將刪除的表“移動”到回收站時,將使用系統生成的名稱對該表機器關聯物件和約束條件進行重新命名。
這樣做的好處是避免以下情況:
使用者刪除表後,又用相同的名重建,又再刪除。
兩個使用者使用相同的表名,但又都刪除這些表。
重新命名慣例如下:BIN$unique_id$version。
其中unique_id是該物件的全域性唯一識別符號,包含26個字元,用於在所有資料庫之間的唯一的標識回收站名稱。
而version是資料庫分配的版本號。
回收站:自動回收空間
只要回收站物件使用的空間沒有被回收,就可以使用閃回刪除功能恢復這些物件。
下面是回收站物件的回收策略:
顯式發出purge命令時執行手動清理
空間不足時執行自動清除:物件在回收站中時,DBA_FREE_SPACE也會報告其對應的空間,因為這些空間是可以自動回收的。然後按以下順序使用特定表空間中的空閒空間:
1.與回收站物件不對應的空閒空間
2.與回收站物件對應的空閒空間。在這種情況下,將使用先進先出(FIFO)演算法自動將回收站物件從回收站清理
3.自動分配的空閒空間。
回收站管理
啟停回收站
停用回收站
ALTER SESSION SET recyclebin = OFF;
ALTER SYSTEM SET recyclebin = OFF SCOPE = SPFILE;
啟用回收站
ALTER SESSION SET recyclebin = ON;
ALTER SYSTEM SET recyclebin = ON SCOPE = SPFILE;
注意:上述操作都需要重啟資料庫生效。
檢視和查詢回收站中的物件
試圖 | 描述 |
USER_RECYCLEBIN | 使用者檢視回收站中自身刪除的物件,也可用透過同義詞recyclebin檢視。 |
DBA_RECYCLEBIN | 管理員檢視回收站中所有的刪除物件。 |
檢視回收站中中的物件
select original_name, object_name, ts_name, droptime from dba_recyclebin
或
SQL> show recyclebin –不顯示索引
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
—————- —————————— ———— ——————-
PP BIN$9dV9fqwIE+TgQwEAAH/i4w==$0 TABLE 2014-03-31:00:30:15
PP BIN$9dV9fqwHE+TgQwEAAH/i4w==$0 TABLE 2014-03-31:00:16:25
PP BIN$9dV9fqwGE+TgQwEAAH/i4w==$0 TABLE 2014-03-30:23:21:34
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
—————- —————————— ———— ——————-
PP BIN$9dV9fqwIE+TgQwEAAH/i4w==$0 TABLE 2014-03-31:00:30:15
PP BIN$9dV9fqwHE+TgQwEAAH/i4w==$0 TABLE 2014-03-31:00:16:25
PP BIN$9dV9fqwGE+TgQwEAAH/i4w==$0 TABLE 2014-03-30:23:21:34
查詢回收站中的物件,但是必須要用”"指定正確回收站中的物件名
SQL> select * from “BIN$9dV9fqwGE+TgQwEAAH/i4w==$0″;
回收站:手動回收空間
使用PURGE命令可從回收站中永久地刪除物件。從回收站中清除某個物件時,會從資料庫中永久地刪除該物件及其從屬物件。因此,將無法再使用閃回刪除功能恢復從回收站中清除的物件。
下面是可能使用的一些PURGE命令:
清除指定表和索引
PURGE {TABLE |INDEX }
示範:
purge table ”BIN$9dV9fqwGE+TgQwEAAH/i4w==$0″;
或
purge table table_name;
purge index index_name;
清除駐留在指定表空間中的所有物件(也可能清楚從屬、駐留在其它表空間中的物件)
PURGE TABLESPACE [USER ]
示範:
purge tablespace test;
purge tablespace test user z;
清除屬於當前使用者的所有物件或者清除所有物件(dba_recyclenbin,必須具有足夠的系統許可權或者sysdba許可權)
PURGE [USER_|DBA_]RECYCLEBIN
不使用回收站
drop table [purge];
表空間中的物件不會移到回收站中,且回收站中所屬該表空間的物件也會被清理。
drop tablespace [including contents]
從資料庫中永久地刪除該使用者及其擁有的所有物件。且回收站中所屬的已刪除使用者的所有物件都將被清理。
drop user [cascade]
從回收站回覆表
使用flashback table…to before drop語句從回收站恢復物件。你可以指點回收站中的物件名,也可以指定原始表名。
rename to子句選項可以使恢復的時候重新命名。
語法:
FLASHBACK TABLE TO BEFORE DROP
[RENAME TO ];
示範:
在恢復前,先查詢,所需要的資訊
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
—————- —————————— ———— ——————-
PP BIN$9dV9fqwIE+TgQwEAAH/i4w==$0 TABLE 2014-03-31:00:30:15
PP BIN$9dV9fqwHE+TgQwEAAH/i4w==$0 TABLE 2014-03-31:00:16:25
PP BIN$9dV9fqwGE+TgQwEAAH/i4w==$0 TABLE 2014-03-30:23:21:34
或者
SQL> select object_name, original_name, createtime from recyclebin;
OBJECT_NAME ORIGINAL_NAME CREATETIME
—————————— ——————————– ——————-
BIN$9dV9fqwHE+TgQwEAAH/i4w==$0 PP 2014-03-31:00:16:19
BIN$9dV9fqwGE+TgQwEAAH/i4w==$0 PP 2014-03-30:23:21:28
BIN$9dV9fqwIE+TgQwEAAH/i4w==$0 PP 2014-03-31:00:30:13
使用如下命令恢復表:
flashback table pp to before drop rename to zzz;
SQL> select object_name, original_name, createtime from recyclebin;OBJECT_NAME ORIGINAL_NAME CREATETIME
—————————— ——————————– ——————-
BIN$9dV9fqwHE+TgQwEAAH/i4w==$0 PP 2014-03-31:00:16:19
BIN$9dV9fqwGE+TgQwEAAH/i4w==$0 PP 2014-03-30:23:21:28
—————————— ——————————– ——————-
BIN$9dV9fqwHE+TgQwEAAH/i4w==$0 PP 2014-03-31:00:16:19
BIN$9dV9fqwGE+TgQwEAAH/i4w==$0 PP 2014-03-30:23:21:28
我們可以看出,恢復的表是最後被刪除的,但是這個表不是我們實際需要的,怎麼辦?
還可以使用回收站中的物件名:
flashback table “BIN$9dV9fqwGE+TgQwEAAH/i4w==$0″ to before drop;
恢復依賴物件
注意:恢復刪除的表時,恢復的索引、觸發器和約束條件將保留各自的回收站名稱。因此,建議在閃回刪除表前查詢回收站和DBA_CONSTRAINTS。
1、在閃回之前,必須要先查詢好表的相關資訊
SQL> select object_name, original_name, createtime from recyclebin;
OBJECT_NAME ORIGINAL_NAME CREATETIME
—————————— ——————————– ——————-
BIN$9daqMpoEFoLgQwEAAH/mBQ==$0 IDX_PPP_02 2014-03-31:00:45:01
BIN$9daqMpoFFoLgQwEAAH/mBQ==$0 IDX_PPP_01 2014-03-31:00:45:14
BIN$9daqMpoGFoLgQwEAAH/mBQ==$0 PP 2014-03-31:00:44:32
2、恢復表
SQL> flashback table pp to before drop;
3、查詢在回收站中恢復表對應關聯物件
SQL> select index_name from user_indexes where table_name=’PP’;
INDEX_NAME
——————————
BIN$9daqMpoFFoLgQwEAAH/mBQ==$0
BIN$9daqMpoEFoLgQwEAAH/mBQ==$0
4、重新命名到正確的物件名
alter index “BIN$9daqMpoFFoLgQwEAAH/mBQ==$0″ rename to IDX_PPP_01;
alter index “BIN$9daqMpoEFoLgQwEAAH/mBQ==$0″ rename to IDX_PPP_02;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29960155/viewspace-1371315/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用Network Recycle Bin啟用對映網路驅動器上的回收站
- win10中recycle.bin什麼意思_win10中recycle.bin怎樣刪除Win10
- [20190920]Asynchronous Global Index Maintenance and Recycle Bin.txtIndexAINaN
- 運維大師講堂,7天從入門到進階運維
- 直播預告丨先睹為快!Oracle 20c新特性解析 - 2020雲和恩墨大講堂Oracle
- 沃趣微講堂 | Oracle叢集技術(一)Oracle
- 安全大講堂|海南金融行業網路安全知識講座成功舉辦行業
- oracle 回收站功能Oracle
- OneAPM大講堂 | Metrics, Tracing 和 Logging 的關係
- 沃趣微講堂 | Oracle叢集技術(二):GI與Oracle RACOracle
- 從Oracle DBA出發,走進GaussDB的世界 - 雲和恩墨大講堂GaussDB專題Oracle
- win10怎麼更改有線網路名稱_win10修改網路名稱的方法Win10
- PostgreSQL技術大講堂 - 第31講:SQL調優技巧SQL
- PostgreSQL技術大講堂 - 第33講:並行查詢管理SQL並行
- PostgreSQL技術大講堂 - 第34講:調優工具pgBagder部署SQL
- PostgreSQL技術大講堂 - 第46講:poc-tpch測試SQL
- PostgreSQL技術大講堂 - 第45講:poc-tpcc測試SQL
- [網路名詞]域名伺服器伺服器
- 【RECYCLEBIN】Oracle回收站詳解Oracle
- [網路名詞]匿名FTP伺服器FTP伺服器
- 新炬網路亮相Gdevops峰會,助力傳統企業DevOps實施落地dev
- 指定的網路名不可用怎麼解決_win10指定網路名不可用的解決方法Win10
- PostgreSQL技術大講堂 - 第32講:資料庫引數調整SQL資料庫
- win10怎樣更改專用網路名稱_win10如何修改專用網路名稱Win10
- 新炬網路與GBASE開啟戰略合作助力資料庫國產化資料庫
- PG技術大講堂 - 第13講:PostgreSQL Full-Page Writes 全頁寫SQL
- 講堂丨人工智慧在天體物理中的應用人工智慧
- PG技術大講堂 - Part 4:PostgreSQL例項結構SQL
- PostgreSQL技術大講堂 - Part 9:pg_hba.conf配置SQL
- PG技術大講堂 - Part 3:PostgreSQL建庫與使用SQL
- PostgreSQL技術大講堂 - Part 2:PostgreSQL原始碼安裝SQL原始碼
- PG技術大講堂 - Part 10:PostgreSQL資料庫管理SQL資料庫
- 今天開講,6 大演講主題、5 位技術大咖!龍蜥大講堂 5 月精彩直播預告搶先看
- PostgreSQL技術大講堂 - 第72講:索引與SQL調優之禁忌之戀SQL索引
- 沃趣微講堂 | Oracle叢集技術(五):叢集中的三種心跳機制Oracle
- 慕課網招聘golang講師Golang
- 煥新啟航,「龍蜥大講堂」2023 年度招募來了!13 場技術分享先睹為快
- python中#!/usr/bin/python與#!/usr/bin/env python的區別Python
- PostgreSQL技術大講堂 - Part 8:PG物件許可權管理SQL物件