Oracle 11g回收站recyclebin的使用詳解
Oracle 11g回收站(recyclebin)的使用是本文我們主要要介紹的內(nèi)容,我們知道,F(xiàn)lashback是以u(píng)ndo segment中的內(nèi)容為基礎(chǔ)的,因此受限于undo_retenton參數(shù),要使用flashback的特征,必須啟動(dòng)自動(dòng)撤銷表空間。
在Oracle 11g中,出現(xiàn)了一個(gè)新的特征,oracle flashback data archive(FDA),通過將變化的數(shù)據(jù)另外存儲(chǔ)到創(chuàng)建的一個(gè)閃回歸檔去(flashback archive),以和undo區(qū)別開,這樣可以單獨(dú)設(shè)置存儲(chǔ)策略,使其可以山回到指定時(shí)間之前的舊數(shù)據(jù)而不影響undo策略。 在Oracle 11g中,recyclebin參數(shù)發(fā)生了微小的變化.
This supported parameter was introduced in Oracle 10.2.0
Version |
Parameter Name |
Data Type |
Session Modifiable |
System Modifiable |
10.2.0 |
recyclebin |
String |
TRUE |
IMMEDIATE |
11.1.0 |
recyclebin |
String |
TRUE |
DEFERRED |
從文檔上我們可以看到這個(gè)變化說明,到了11g中,這個(gè)參數(shù)在session依然可以立即修改并影響當(dāng)前的session,但如果是在系統(tǒng)一級(jí)修改的話,那么就要加deferred參數(shù),對(duì)當(dāng)前已經(jīng)連接的sesion沒有影響,但新連接的session將受到影響。
Flashback不支持sys用戶,system表空間下面的對(duì)象,也不能從回收站里拿到。故使用sys或是system用戶登錄時(shí),show recyclebin為空。
啟動(dòng)閃回?cái)?shù)據(jù)庫(kù)的步驟:
1.開啟歸檔模式:alter database archivelog;
2.配置閃回區(qū):alter system set db_recovery_file_dest=’/../’
3.配置閃回保留時(shí)間,默認(rèn)是1440minutes:alter system set db_flashback_retention_target=’2880’;
4.啟動(dòng)閃回?cái)?shù)據(jù)庫(kù):
shutdown immediate;startup mount
Alter database flashback on/off;
5.執(zhí)行閃回操作:
shutdown immediate;startup mount;
Flashback database to timestamp to_date(‘2001-02-03’,’yyyy-mm-dd hh24:mi:ss’);
或是:flashback database to scn 2323534;
Alter database open ready only;檢查閃回時(shí)刻是否是所需的數(shù)據(jù),如果不是,可以繼續(xù)修改。
檢查完畢之后:shutdown immediate;startup mount; alter database open resetlogs;resetlogs是將control file中的scn#與數(shù)據(jù)文件中的scn#同步,消除時(shí)間間隔。
V$flashback_database_log視圖,可以查看閃回日志所占的空間,最早能閃回到的scn,最早能閃回到的時(shí)間點(diǎn)。
7.查看回收站:show recyclebin; 或是select * from sys.recyclebin$查 所有的回收站。
8.恢復(fù)被刪除的表:flashback table t_name to before drop;如果閃回的表名與當(dāng)前的表名相同,需要重命名才可以閃回。
Flashback table t_name to before drop rename to t_new;
9.閃回指定的表
查看表結(jié)構(gòu):desc “BIN$qrjyuHuVotHgQAB/AQAQ3w==$0”;
查看表的記錄:select count(*) from “BIN$qrjyuHuVotHgQAB/AQAQ3w==$0”;
安裝表名稱恢復(fù):flashback table “BIN$qrjyuHuVotHgQAB/AQAQ3w==$0” to before drop;
越過回收站直接刪除:drop table t purge;drop user cascade; drop tablespace users including contents;
清空回收站:purge index idx_1; purge user_recyclebin; purge dba_recyclebin;
當(dāng)設(shè)置db_recovery_file_dest為空的時(shí)候,也可以取消閃回區(qū),如果已經(jīng)啟用flashback database;則這個(gè)方法不能取消。
查看當(dāng)前的scn:select current_scn from v$database;
查看哪些對(duì)象可以利用閃回恢復(fù)區(qū)來存放:
- SQL> select file_type from v$flash_recovery_area_usage;
- FILE_TYPE
- --------------------
- CONTROL FILE
- REDO LOG
- ARCHIVED LOG
- BACKUP PIECE
- IMAGE COPY
- FLASHBACK LOG
- FOREIGN ARCHIVED LOG
- 7 rows selected.
查看閃回恢復(fù)區(qū)空間的使用情況:
- SQL> select * from v$flash_recovery_area_usage;
- FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE
- -------------------- ------------------ -------------------------
- NUMBER_OF_FILES
- ---------------
- CONTROL FILE 0 0
- 0
- REDO LOG 0 0
- 0
- ARCHIVED LOG 0 0
- 0
- FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE
- -------------------- ------------------ -------------------------
- NUMBER_OF_FILES
- ---------------
- BACKUP PIECE 0 0
- 0
- IMAGE COPY 0 0
- 0
- FLASHBACK LOG 0 0
- 0
- FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE
- -------------------- ------------------ -------------------------
- NUMBER_OF_FILES
- ---------------
- FOREIGN ARCHIVED LOG 0 0
- 0
- 7 rows selected.
計(jì)算flash recovery area已經(jīng)占用的空間:
- SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
- SUM(PERCENT_SPACE_USED)*3/100
- -----------------------------
- 0
如果flash recovery area空間不足導(dǎo)致db不能打開或是hang住的處理方法:Alter system set db_recovery_file_dest_size=3G scope=spfiel;
關(guān)于Oracle 11g回收站(recyclebin)的使用方法就介紹這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】
- Oracle數(shù)據(jù)庫(kù)中創(chuàng)建自增字段的代碼示例
- SQL Server Collation的問題解決及特點(diǎn)分析
- 將.sql文件導(dǎo)入powerdesigner的實(shí)現(xiàn)方法詳解
- 手動(dòng)卸載SQL Server 2005數(shù)據(jù)庫(kù)及實(shí)例的詳細(xì)步驟
- 以SQL Server 2005為后臺(tái)的ASP網(wǎng)站訪問慢的解決方案