程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle 11g回收站recyclebin的使用詳解

Oracle 11g回收站recyclebin的使用詳解

編輯:Oracle數據庫基礎

Oracle 11g回收站(recyclebin)的使用是本文我們主要要介紹的內容,我們知道,Flashback是以undo segment中的內容為基礎的,因此受限於undo_retenton參數,要使用Flashback的特征,必須啟動自動撤銷表空間。

在Oracle 11g中,出現了一個新的特征,oracle flashback data archive(FDA),通過將變化的數據另外存儲到創建的一個閃回歸檔去(Flashback archive),以和undo區別開,這樣可以單獨設置存儲策略,使其可以山回到指定時間之前的舊數據而不影響undo策略。 在Oracle 11g中,recyclebin參數發生了微小的變化.

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

從文檔上我們可以看到這個變化說明,到了11g中,這個參數在session依然可以立即修改並影響當前的session,但如果是在系統一級修改的話,那麼就要加deferred參數,對當前已經連接的sesion沒有影響,但新連接的session將受到影響。

Flashback不支持sys用戶,system表空間下面的對象,也不能從回收站裡拿到。故使用sys或是system用戶登錄時,show recyclebin為空。

啟動閃回數據庫的步驟:

1.開啟歸檔模式:alter database archivelog;

2.配置閃回區:alter system set db_recovery_file_dest=’/../’

3.配置閃回保留時間,默認是1440minutes:alter system set db_Flashback_retention_target=’2880’;

4.啟動閃回數據庫:

shutdown immediate;startup mount

Alter database Flashback on/off;

5.執行閃回操作:

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;檢查閃回時刻是否是所需的數據,如果不是,可以繼續修改。

檢查完畢之後:shutdown immediate;startup mount; alter database open resetlogs;resetlogs是將control file中的scn#與數據文件中的scn#同步,消除時間間隔。

V$Flashback_database_log視圖,可以查看閃回日志所占的空間,最早能閃回到的scn,最早能閃回到的時間點。

7.查看回收站:show recyclebin; 或是select * from sys.recyclebin$查 所有的回收站。

8.恢復被刪除的表:Flashback table t_name to before drop;如果閃回的表名與當前的表名相同,需要重命名才可以閃回。

Flashback table t_name to before drop rename to t_new;

9.閃回指定的表

查看表結構:desc “BIN$qrjyuHuVotHgQAB/AQAQ3w==$0”;

查看表的記錄:select count(*) from “BIN$qrjyuHuVotHgQAB/AQAQ3w==$0”;

安裝表名稱恢復: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;

當設置db_recovery_file_dest為空的時候,也可以取消閃回區,如果已經啟用Flashback database;則這個方法不能取消。

查看當前的scn:select current_scn from v$database;

查看哪些對象可以利用閃回恢復區來存放:

  1. SQL> select file_type from v$Flash_recovery_area_usage;  
  2. FILE_TYPE  
  3. --------------------  
  4. CONTROL FILE  
  5. REDO LOG  
  6. ARCHIVED LOG  
  7. BACKUP PIECE  
  8. IMAGE COPY  
  9. FlashBACK LOG  
  10. FOREIGN ARCHIVED LOG  
  11. 7 rows selected. 

查看閃回恢復區空間的使用情況:

  1. SQL> select * from v$Flash_recovery_area_usage;  
  2. FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE  
  3. -------------------- ------------------ -------------------------  
  4. NUMBER_OF_FILES  
  5. ---------------  
  6. CONTROL FILE 0 0  
  7. 0  
  8. REDO LOG 0 0  
  9. 0  
  10. ARCHIVED LOG 0 0  
  11. 0  
  12. FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE  
  13. -------------------- ------------------ -------------------------  
  14. NUMBER_OF_FILES  
  15. ---------------  
  16. BACKUP PIECE 0 0  
  17. 0  
  18. IMAGE COPY 0 0  
  19. 0  
  20. FlashBACK LOG 0 0  
  21. 0  
  22. FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE  
  23. -------------------- ------------------ -------------------------  
  24. NUMBER_OF_FILES  
  25. ---------------  
  26. FOREIGN ARCHIVED LOG 0 0  
  27. 0  
  28. 7 rows selected. 

計算Flash recovery area已經占用的空間:

  1. SQL> select sum(percent_space_used)*3/100 from v$Flash_recovery_area_usage;  
  2. SUM(PERCENT_SPACE_USED)*3/100  
  3. -----------------------------  

如果Flash recovery area空間不足導致db不能打開或是hang住的處理方法:Alter system set db_recovery_file_dest_size=3G scope=spfIEl;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved