1、刪除多余的歸檔日志
在ORACLE10G中,默認的歸檔路徑為$ORACLE_BASE/flash_recovery_area。對于這個路徑,ORACLE有一個限制,就是默認只能有2G的空間給歸檔日志使用,可以使用下面兩個SQL語句去查看它的限制:
1. select * from v$recovery_file_dest;
2. show parameter db_recovery_file_dest(這個更友好直觀一些)
當歸檔日志數量大于2G時,那么就會由于沒有更多的空間去容納更多的歸檔日志會報無法繼續歸檔的錯誤。
如:“RA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 10017792 bytes disk space from 2147483648 limit
ARC0: Error 19809 Creating archive log file to '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_04_30/o1_mf_1_220_0_.arc' ”這時我們可以修改它的默認限制,比如說將它增加到5G或更多,也可以將歸檔路徑重新置到別的路徑,就不會有這個限制了。
更改限制語句如下:
alter system set db_recovery_file_dest_size=5368709102 (這里為5G 5x1024x1024x1024=5G)
alter system set db_recovery_file_dest_size=10737418240
進入
rman target username/password@database
執行下邊的交叉校驗
crosscheck archivelog all;
此時可能會提示校驗失敗,類似下邊的提示:
RMAN> crosscheck archivelog all;
釋放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=14 devtype=DISK
對歸檔日志的驗證失敗
…………….
這時,需要執行exit退出rman。
在命令提示符窗口下執行下邊的字符集設置
C:>set nls_lang=american_america.zhs16gbk
然后再進入rman ,再執行crosscheck archivelog all;一般不會再出現這樣的問題了。
在命令窗口里面執行
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
說明
SYSDATA-7,表明當前的系統時間7天前,before關鍵字表示在7天前的歸檔日志,如果使用了閃回功能,也會刪除閃回的數據。
同樣道理,也可以刪除從7天前到現在的全部日志,不過這個命令要考慮清楚,做完這個刪除,最好馬上進行全備份數據庫
DELETE ARCHIVELOG FROM TIME 'SYSDATE-7';
UNIX/LINUX下也可以通過FIND找到7天前的歸檔數據,使用EXEC子操作刪除
find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ;
這樣做仍然會在RMAN里留下未管理的歸檔文件
仍需要在RMAN里執行下面2條命令
crosscheck archivelog all;
delete expired archivelog all;
所以還不如上面的方法好用,不過用FIND的好處就是,可以在條件上,和EXEC子項上做很多操作,實現更復雜的功能
2、report obsolete及delete obsolete刪除過期備份命令
使用report obsolete命令報告過期備份
RMAN> report obsolete;
RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
Report of obsolete backups and copies
Type Key Completion Time Filename/Handle
-------------------- ------ ------------------ --------------------
Backup Set 125 01-NOV-04
Backup Piece 125 01-NOV-04 /data1/oracle/orabak/full_1_541045804
Backup Set 131 04-NOV-04
Backup Piece 131 04-NOV-04 /data1/oracle/orabak/full_AVATAR2_20041104_131
....
使用delete obsolete命令刪除過期備份:
RMAN> delete obsolete;
RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
using channel ORA_DISK_1
Deleting the following obsolete backups and copies:
Type Key Completion Time Filename/Handle
-------------------- ------ ------------------ --------------------
Backup Set 125 01-NOV-04
Backup Piece 125 01-NOV-04 /data1/oracle/orabak/full_1_541045804
....
Archive Log 2704 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2716.dbf
Archive Log 2703 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2715.dbf
Archive Log 2702 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2714.dbf
Do you really want to delete the above objects (enter YES or NO)? yes
deleted backup piece
backup piece handle=/data1/oracle/orabak/full_AVATAR2_20041206_173 recid=173 stamp=544156241
.....
注:在執行刪除的時候,可能會提示下邊的報錯信息:
ORA-19554: 配置設備時出錯, 設備類型: SBT_TAPE, 設備名稱:
ORA-27211: 未能加載介質管理庫
解決方法,運行下邊的命令:
RMAN> allocate channel for maintenance type disk;
RMAN> crosscheck archivelog all;
RMAN> delete obsolete;
3、Oracle RMAN的show,list,crosscheck,delete
Oracle RMAN的show,list,crosscheck,delete 命令整理
1、SHOW命令:
顯示rman配置: RMAN> show all;
2、REPORT命令:
2.1、RMAN> report schema 報告目標數據庫的物理結構;
2.2、RMAN>report need backup days=3; 報告最近3天沒有被備份的數據文件;
2.3、RMAN> report need backup days 3 tablespace users; 在USERS表空間上3天未備份的數據文件;
2.4、RMAN> report need backup incremental 3; 報告恢復數據文件需要的增量備份個數超過3次的數據文件;
2.5、RMAN> report need backup redundancy 2 database; 報告備份文件低于2份的所有數據文件;
RMAN>report need backup redundancy=2;
2.6、RMAN> report need backup recovery window of 6 days; 報告文件報表的恢復需要超過6天的歸檔日志的數據文件;
2.7、RMAN> report unrecoverable; 報告數據庫所有不可恢復的數據文件;
2.8、RMAN> report obsolete redunndancy 2; 報告備份次數超過2次的陳舊備份;
2.9、RMAN>report obsolete; 報告多余的備份;
3、LIST命令:列出備份信息
3.1、列出數據文件備份集
RMAN>list backup 列出詳細備份;
RMAN>list expired backup 列出過期備份;
RMAN> list backup of database; 列出所有數據文件的備份集;
RMAN> list backup of tablespace user01; 列出特定表空間的所有數據文件備份集;
3.2、RMAN> list backup of controlfile 列出控制文件備份集;
3.3、RMAN> list backup of archivelog all 列出歸檔日志備份集詳細信息;
RMAN>list archivelog all; 列出歸檔日志備份集簡要信息
3.4、RMAN> list backup of spfile 列出SPFILE備份集;
3.5、RMAN> list copy of datafile 5 列出數據文件映像副本;
3.6、RMAN> list copy of controlfile 列出控制文件映像副本;
3.7、RMAN> list copy of archivelog all 列出歸檔日志映像副本;
3.8、RMAN> list incarnation of database 列出對應物/列出數據庫副本;
3.9、RMAN>list backup summary; 概述可用的備份;
B表示backup
F表示FULL
A表示archive log
0 1表示incremental backup
S說明備份狀態(A AVAILABLE X EXPIRED )
3.10、RMAN>list backup by file 按備份類型列出備份;
按照數據文件備份,歸檔日志備份,控制文件備份,服務器參數文件備份 列出
4、CROSSCHECK命令:校驗備份信息
4.1、RMAN> crosscheck backup 核對所有備份集;
4.2、RMAN> crosscheck backup of database 核對所有數據文件的備份集;
4.3、RMAN> crosscheck backup of tablespace users 核對特定表空間的備份集;
4.4、RMAN> crosscheck backup of datafile 4 核對特定數據文件的備份集;
4.5、RMAN> crosscheck backup of controlfile 核對控制文件的備份集;
4.6、RMAN> crosscheck backup of spfile 核對SPFILE的備份集;
4.7、RMAN> crosscheck backup of archivelog sequence 3 核對歸檔日志的備份集;
4.8、RMAN> crosscheck copy 核對所有映像副本;
4.9、RMAN> crosscheck copy of database 核對所有數據文件的映像副本;
4.10、RMAN> crosscheck copy of tablespace users 核對特定表空間的映像副本;
4.11、RMAN> crosscheck copy of datafile 6 核對特定數據文件的映像副本;
4.12、RMAN> crosscheck copy of archivelog sequence 4 核對歸檔日志的映像副本;
4.13、RMAN> crosscheck copy of controlfile 核對控制文件的映像副本;
4.14、RMAN> crosscheck backup tag='SAT_BACKUP';
4.15、RMAN> crosscheck backup completed after 'sysdate - 2'
4.16、RMAN> crosscheck backup completed between 'sysdate - 5' and 'sysdate -2 '
4.17、RMAN> crosscheck backup device type sBT;
4.18、RMAN> crosscheck archivelog all;
4.19、RMAN> crosscheck archivelog like '%ARC00012.001'
4.20、RMAN> crosscheck archivelog from sequence 12;
4.21、RMAN> crosscheck archivelog until sequence 522;
5、DELETE:刪除備份
5.1、RMAN> delete obsolete; 刪除陳舊備份;
5.2、RMAN> delete expired backup; 刪除EXPIRED備份
5.3、RMAN> delete expired copy; 刪除EXPIRED副本;
5.4、RMAN> delete backupset 19; 刪除特定備份集;
5.5、RMAN> delete backuppiece ''d:\backup\DEMO_19.bak'' 刪除特定備份片;
5.6、RMAN> delete backup 刪除所有備份集;
5.7、RMAN> delete datafilecopy ''d:\backup\DEMO_19.bak'' 刪除特定映像副本;
5.8、RMAN> delete copy 刪除所有映像副本;
5.9、RMAN> delete archivelog all delete input;
RMAN> delete backupset 22 format = ''d:\backup\%u.bak'' delete input
在備份后刪除輸入對象;
5.10、RMAN> delete backupset id;
4、em控制臺對備份的操作
使用sys用戶的sysdba權限進入em控制臺
在“維護”模塊下,點擊進入到“管理當前備份”操作選項。
在“管理當前備份”選項中可以列出所有的備份集
如果要刪除備份,可以在下邊的列表中選中要刪除的備份集,執行“刪除”命令,這時會有一個確認提示的頁面:
點擊“是”按鈕,進行刪除操作。如果提示操作“刪除”失敗,可以將上一步要執行的命令在命令提示符下使用rman命令來執行。
5、小結
像歸檔日志之類的備份,備份的文件夾是在一個叫flash_recovery_area的目錄下邊。
1、歸檔日志備份在ARCHIVELOG 這個文件夾下邊,上邊對歸檔日志的操作基本上是對這個文件夾下的文件進行操作。
2、obsolete刪除操作基本上是對AUTOBACKUP這個文件夾下的文件進行操作。(不是十分的確定)
3、delete backup操作基本上是對BACKUPSET文件夾和DATAFILE文件夾的內容進行操作的。
4、在em管理后臺,最下邊有一個“相關鏈接”模塊,下有“作業”選項鏈接,可以看到所有數據庫備份操作歷史作業記錄,在此可以對相應的備份作業進行修改操作。
另外如果要添加備份操作作業時,需要在“維護”模塊下找到“調試備份”鏈接,推薦使用“Oracle 建議的備份”來添加備份操作作業。
Linux下查看文件夾大小的命令du -sh docname
posted on 2010-11-05 11:08
SIMONE 閱讀(3968)
評論(0) 編輯 收藏 所屬分類:
oracle