oracle資料庫備份刪除操作

shilei1發表於2011-08-03

 

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子項上做很多操作,實現更復雜的功能

 

2report obsoletedelete 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;

 

 

3Oracle RMANshow,list,crosscheck,delete

 

Oracle RMANshow,list,crosscheck,delete 命令整理

1SHOW命令:

   顯示rman配置: RMAN> show all;

2REPORT命令:

   2.1RMAN> report schema                        報告目標資料庫的物理結構;

   2.2RMAN>report need backup days=3;            報告最近3天沒有被備份的資料檔案;

   2.3RMAN> report need backup days 3 tablespace users;   USERS表空間上3天未備份的資料檔案;

   2.4RMAN> report need backup incremental 3;    報告恢復資料檔案需要的增量備份個數超過3次的資料檔案;

   2.5RMAN> report need backup redundancy 2 database;           報告備份檔案低於2份的所有資料檔案;

        RMAN>report need backup redundancy=2;

   2.6RMAN> report need backup recovery window of 6 days;    報告檔案報表的恢復需要超過6天的歸檔日誌的資料檔案;

   2.7RMAN> report unrecoverable;      報告資料庫所有不可恢復的資料檔案;

   2.8RMAN> report obsolete redunndancy 2; 報告備份次數超過2次的陳舊備份;

   2.9RMAN>report obsolete;          報告多餘的備份;

3LIST命令:列出備份資訊

   3.1、列出資料檔案備份集

        RMAN>list backup         列出詳細備份;

        RMAN>list expired backup     列出過期備份;

        RMAN> list backup of database;     列出所有資料檔案的備份集;

        RMAN> list backup of tablespace user01; 列出特定表空間的所有資料檔案備份集;

   3.2RMAN> list backup of controlfile     列出控制檔案備份集;

   3.3RMAN> list backup of archivelog all      列出歸檔日誌備份集詳細資訊;

        RMAN>list archivelog all;      列出歸檔日誌備份集簡要資訊

   3.4RMAN> list backup of spfile              列出SPFILE備份集;

   3.5RMAN> list copy of datafile 5        列出資料檔案映像副本;

   3.6RMAN> list copy of controlfile           列出控制檔案映像副本;

   3.7RMAN> list copy of archivelog all    列出歸檔日誌映像副本;

   3.8RMAN> list incarnation of database       列出對應物/列出資料庫副本;

   3.9RMAN>list backup summary;    概述可用的備份;

                B表示backup

                F表示FULL

                A表示archive log

                0 1表示incremental backup

                S說明備份狀態(A AVAILABLE   X EXPIRED )

    

   3.10RMAN>list backup by file    按備份型別列出備份;

                    按照資料檔案備份,歸檔日誌備份,控制檔案備份,伺服器引數檔案備份 列出

4CROSSCHECK命令:校驗備份資訊

   4.1RMAN> crosscheck backup             核對所有備份集;  

   4.2RMAN> crosscheck backup of database      核對所有資料檔案的備份集;  

   4.3RMAN> crosscheck backup of tablespace users      核對特定表空間的備份集;  

   4.4RMAN> crosscheck backup of datafile 4    核對特定資料檔案的備份集;  

   4.5RMAN> crosscheck backup of controlfile   核對控制檔案的備份集;  

   4.6RMAN> crosscheck backup of spfile    核對SPFILE的備份集;  

   4.7RMAN> crosscheck backup of archivelog sequence 3 核對歸檔日誌的備份集;  

   4.8RMAN> crosscheck copy               核對所有映像副本;  

   4.9RMAN> crosscheck copy of database       核對所有資料檔案的映像副本;  

   4.10RMAN> crosscheck copy of tablespace users       核對特定表空間的映像副本;  

   4.11RMAN> crosscheck copy of datafile 6        核對特定資料檔案的映像副本;  

   4.12RMAN> crosscheck copy of archivelog sequence 4  核對歸檔日誌的映像副本;  

   4.13RMAN> crosscheck copy of controlfile       核對控制檔案的映像副本; 

   4.14RMAN> crosscheck backup tag='SAT_BACKUP';

   4.15RMAN> crosscheck backup completed after 'sysdate - 2'

   4.16RMAN> crosscheck backup completed between 'sysdate - 5' and 'sysdate -2 '

   4.17RMAN> crosscheck backup device type sBT;

   4.18RMAN> crosscheck archivelog all;

   4.19RMAN> crosscheck archivelog like '%ARC00012.001'

   4.20RMAN> crosscheck archivelog from sequence 12;

   4.21RMAN> crosscheck archivelog until sequence 522;

5DELETE:刪除備份

   5.1RMAN> delete obsolete;      刪除陳舊備份;

   5.2RMAN> delete expired backup; 刪除EXPIRED備份    

   5.3RMAN> delete expired copy;   刪除EXPIRED副本;

   5.4RMAN> delete backupset 19;   刪除特定備份集;

   5.5RMAN> delete backuppiece ''d:\backup\DEMO_19.bak''   刪除特定備份片;

   5.6RMAN> delete backup      刪除所有備份集;

   5.7RMAN> delete datafilecopy ''d:\backup\DEMO_19.bak''  刪除特定映像副本;

   5.8RMAN> delete copy   刪除所有映像副本;

   5.9RMAN> delete archivelog all delete input;

        RMAN> delete backupset 22 format = ''d:\backup\%u.bak'' delete input

                       在備份後刪除輸入物件;

   5.10RMAN> delete backupset id;

 

 

4em控制檯對備份的操作

使用sys使用者的sysdba許可權進入em控制檯

在“維護”模組下,點選進入到“管理當前備份”操作選項。

 在“管理當前備份”選項中可以列出所有的備份集

如果要刪除備份,可以在下邊的列表中選中要刪除的備份集,執行“刪除”命令,這時會有一個確認提示的頁面:

點選“是”按鈕,進行刪除操作。如果提示操作“刪除”失敗,可以將上一步要執行的命令在命令提示符下使用rman命令來執行。

 

5、小結

像歸檔日誌之類的備份,備份的資料夾是在一個叫flash_recovery_area的目錄下邊。

1、歸檔日誌備份在ARCHIVELOG 這個資料夾下邊,上邊對歸檔日誌的操作基本上是對這個資料夾下的檔案進行操作。

2obsolete刪除操作基本上是對AUTOBACKUP這個資料夾下的檔案進行操作。(不是十分的確定)

3delete backup操作基本上是對BACKUPSET資料夾和DATAFILE資料夾的內容進行操作的。

4、在em管理後臺,最下邊有一個“相關連結”模組,下有“作業”選項鍊接,可以看到所有資料庫備份操作歷史作業記錄,在此可以對相應的備份作業進行修改操作。

另外如果要新增備份操作作業時,需要在“維護”模組下找到“除錯備份”連結,推薦使用“Oracle 建議的備份”來新增備份操作作業。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-703903/,如需轉載,請註明出處,否則將追究法律責任。

相關文章