1. 程式人生 > >oracle11gRAC環境使用RMAN備份方案(ASM)_fin

oracle11gRAC環境使用RMAN備份方案(ASM)_fin

更改歸檔日誌路徑

archive log list

show parameter db_recover

alter system set log_archive_dest_1='location=+DATA';

 alter system switch logfile;

初始:

[[email protected] ~]$ rman target /

Recovery Manager: Release 11.2.0.1.0 - Production on Thu Oct 1618:20:57 2014

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

connected to target database: zx (DBID=2731354802)

RMAN> show all;

using target database control file instead of recovery catalog

RMAN configuration parameters for database with db_unique_name oadb are:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; #default

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; #default

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT'OPTIMIZE FOR LOAD TRUE ; # default

CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO'/u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_zx1.f'; # default

開始設定備份策略

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 30 DAYS;

RMAN>CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TOBACKUPSET;

修改後的

RMAN> show all;

RMAN configuration parameters for database with db_unique_name OADBare:

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 30 DAYS;

CONFIGURE BACKUP OPTIMIZATION ON;

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '+DATA/backup/rman_bak/%F';

CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT'OPTIMIZE FOR LOAD TRUE ; # default

CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO'/u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_oadb2.f'; # default

開啟塊跟蹤

[[email protected] ~]$ sqlplus / as sysdba

檢視

SQL> select * from v$block_change_tracking;

STATUS     FILENAME                                         BYTES

---------- ------------------------------------------------------------

ENABLED   +RCY1/zx/changetracking/ctf.298.861133721        11599872

*****************************************************************************

修改控制檔案儲存的時間

控制檔案儲存的時間由引數CONTROL_FILE_RECORD_KEEP_TIME決定,預設值是7天。 我們可以改成0到365之間的任意值。

當RMAN 採用nocatalog模式進行備份時,就會有一個問題。 當我們使用catalog模式的時候,RMAN 備份的資訊都會存放到catalog目錄裡。 如果沒有使用catalog目錄,那麼RMAN備份的資訊就會儲存到控制檔案裡。 RMAN 的這些備份資訊對恢復來說非常重要,如果沒有這些資訊,是無法使用RMAN 進行恢復的。 所以,如果採用nocatalog模式,我們要主備備份控制檔案,同時,要將控制檔案記錄的儲存時間設定為不小於選中資料庫備份的週期,否則就可能在備份介質上有資料庫備份,但是控制檔案不存在與備份相關的備份記錄,在這種情況下,將無法恢復這些較早的檔案。

SQL> select name,value from v$parameter wherename='control_file_record_keep_time';

NAME                          VALUE

------------------------------ -------------------------------------------------

control_file_record_keep_time   7

SQL> alter system set control_file_record_keep_time=30;

系統已更改。

SQL> show parameter control_file_record_keep_time

NAME                                TYPE        VALUE

------------------------------------ -----------------------------------------

control_file_record_keep_time       integer     20

增量備份

只備份從上次備份發生變化的塊。

1)增量備份首先做全備:

0,1,2,3,4,5

2)增量備份的好處是加快備份時間。

3)oracle增量備份有兩種:1.差異增量備份 2.累計增量備份

4)0級備份就是全被,做其他級別的備份前必須有0級,否則系統會做0級備份。

5)差異增量備份:backup incremental level 0format

        只要等於或小於自己的級別,前面的備份就可以作為備份的起點。

日  一  二  三  四  五  六  日

0   2   2  1   2   2    2   0

全  一  一  三  一  一  一  全

週一週二只備份一天就行了,但週三需要把週一二三的都備一遍,因為它級別比前面的備份低,週四就只備一天就行了,週日又要做全備了。

比如週三早晨掛了,需要週日週一週二才能恢復到週三早晨,但如果週四早晨就只需要週日,週三就能恢復。週六掛需要週日,週三,週四,週五四個備份集。

6)累計增量備份:backup incremental level 0cumulative format

只看備份級別比自己低的。

日  一  二  三  四  五  六  日

0   2   2  1   2   2   2   0

全  一  二  三  一  二  三  全

週日全備,週一備份一天的,週二備份2天的。週三備份週一二三的。

週四只備份一天的,週五備份兩天的,週六備份3天的。週日全備。

假如週三恢復,需要0級別和一個到週二 的備份就行了。恢復更快。

週六掛需要週日,週三,週五三個備份集。

*************************************************************************

OA資料庫使用差異增量備份

日  一  二  三  四  五  六  日

0   2   2  1   2   2   2   0

全  一  一  三  一  一  一  全

週日全備,週一週二只備份一天就行了,但週三需要把週一二三的都備一遍,因為它級別比前面的備份低,週四週五週六就只備一天就行了,週日又要做全備了。

編輯備份指令碼 

指令碼存放位置/home/oracle/scripts/rman/bin/   

日誌存放位置/home/oracle/scripts/rman/log/

熱備0級指令碼

export ORACLE_SID=oadb1

export ORACLE_BASE=/u01/app/oracle

exportORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

export PATH=$ORACLE_HOME/bin

rman target /<< EOF

run{

sql'alter system switchlogfile';

allocate channel c1 typedisk;

allocate channel c2 typedisk;

crosscheck archivelog all;

backup as compressedbackupset incremental level 0 format '+DATA/backup/rman_bak/%d_%T_%U_0.bak'database plus archivelog;

delete noprompt obsolete;

}

quit;

EOF

熱備1級指令碼

[[email protected] bin]$ cat rman1.sh

#!/bin/bash

export ORACLE_SID=oadb1

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

export PATH=$ORACLE_HOME/bin

rman target / << EOF

run{

sql'alter system switch logfile';

allocate channel c1 type disk;

allocate channel c2 type disk;

crosscheck archivelog all;

backup as compressed backupset incremental level 1 format '+DATA/backup/rman_bak/%d_%T_%U_1.bak' database plusarchivelog;

delete noprompt obsolete;

}

quit;

EOF

熱備2級指令碼

[[email protected] bin]$ cat rman2.sh

#!/bin/bash

export ORACLE_SID=oadb1

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

export PATH=$ORACLE_HOME/bin

rman target / << EOF

run{

sql'alter system switch logfile';

allocate channel c1 type disk;

allocate channel c2 type disk;

crosscheck archivelog all;

backup as compressed backupset incremental level 2 format '+DATA/backup/rman_bak/%d_%T_%U_2.bak'database plus archivelog;

delete noprompt obsolete;

}

quit;

EOF

設定許可權

[[email protected] bin]$ chmod -R 777 rman0.sh

[[email protected]x bin]$ chmod -R 777 rman1.sh

[[email protected] bin]$ chmod -R 777 rman2.sh

[[email protected] bin]$ ll

total 12

-rwxrwxrwx 1 oracle oinstall 468 Oct 21 17:03 rman0.sh

-rwxrwxrwx 1 oracle oinstall 468 Oct 21 17:05 rman1.sh

-rwxrwxrwx 1 oracle oinstall 468 Oct 21 17:06 rman2.sh

配置作業

一個crontab檔案中包含有六個欄位:

分鐘 0-59

小時 0-23

月中的第幾天 1-31

月份 1 - 12

星期幾 0 - 6, with 0 = Sunday

配置

[[email protected] ~]$ crontab -e

檢視

[[email protected] ~]$ crontab -l

0 2 * * 3 sh /home/oracle/scripts/rman/bin/rman1.sh  >> /home/oracle/scripts/rman/log/backup1.log 2>&1

0 2 * * 1,2,4,5,6 sh/home/oracle/scripts/rman/bin/rman2.sh >> /home/oracle/scripts/rman/log/backup2.log 2>&1

日誌變大可清空

[[email protected] ~]$ cat /dev/null > /home/oracle/scripts/rman/log/backup0.log

[[email protected] ~]$ cat /dev/null >/home/oracle/scripts/rman/log/backup1.log

[[email protected] ~]$ cat /dev/null >/home/oracle/scripts/rman/log/backup2.log

[[email protected] ~]$ ll /home/oracle/scripts/rman/log

total 432

-rwxrwxrwx    1 oracle   dba               0 Jul 15 16:12 backup0.log

-rwxrwxrwx    1 oracle   dba               0 Jul 15 16:12 backup1.log

-rwxrwxrwx    1 oracle   dba               0 Jul 15 16:12 backup2.log

------------------------------------------------------------------------------------------------------------

RMAN-03009: failure of backup command on c1 channel at 10/02/201613:23:50

ORA-19504: failed to create file "+DATA/backup/rman_bak/oadb_20161002_03rhbq35_1_1_0.bak"

ORA-17502: ksfdcre:4 Failed to create file+DATA/backup/rman_bak/oadb_20161002_03rhbq35_1_1_0.bak

ORA-15173: entry 'backup' does not exist in directory '/'