ORACLE RMAN 增量備份完整恢復測試

 

ORACLE RMAN 增量備份完整恢復測試

 

創建測試表空間:

SQL> create tablespace tablespace1  

  2  datafile '/db/app/oracle/oradata/orcl/tablespace1.dbf'

  3  size 10m;

Tablespace created.

SQL>

 

創建測試用戶並指定爲默認表空間:

SQL> create user user1 identified by oracle default tablespace tablespace1;

User created.

SQL>

 

設置該測試用戶權限:

SQL> grant create session,create table,unlimited tablespace to user1;

Grant succeeded.

SQL>

 

用新創建的用戶登錄:

SQL> conn user1/

Enter password:

Connected.

SQL>

 

建表並寫入數據:

SQL> create table table1 (id int,name varchar2(30));

Table created.

 

SQL> insert into table1 values(0001,'Tian');

1 row created.

 

SQL> insert into table1 values(0002,'zhong');

1 row created.

 

SQL> select * from table1;

        ID NAME

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

         1 Tian

         2 zhong

SQL> commit;

Commit complete.

 

配置RMAN環境變量

切換sys用戶作0級備份:

 

利用configure命令配置RMAN環境:

RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;#開啓歸檔日誌自動備份

RMAN>CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/db/bak/ctf/%d_ctf_bak_%F';#指定歸檔日誌備份位置

RMAN>CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO COMPRESSED BACKUPSET;#採用並行度爲2且壓縮備份集的方式備份到磁盤。

RMAN>CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT   '/db/bak/disk1/%d_datafile_bak_%U';

RMAN>CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT   '/db/bak/disk2/%d_datafile_bak_%U';

 

RMAN> show all;

 

RMAN configuration parameters for database with db_unique_name ORCL are:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/db/bak/ctf/%d_ctf_bak_%F';

CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO COMPRESSED BACKUPSET;

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

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

CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 2 G;

CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT   '/db/bak/disk1/%d_datafile_bak_%U';

CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT   '/db/bak/disk2/%d_datafile_bak_%U';

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 '/db/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_orcl.f'; # default

 

備份全庫(包括歸檔日誌及啓動參數文件等):

RMAN>

RMAN> backup incremental level 0 database plus archivelog;

 

Starting backup at 06-MAY-11

current log archived

using channel ORA_DISK_1

….

….(省略過程)

提示備份成功。可以再通過RMAN>list backup;查看已有備份確認(注意LV 字段全爲0,爲0級增量備份)。

繼續往測試表中插入新數據:

SQL> insert into table1 values(3,'wang');

1 row created.

SQL> insert into table1 values(4,'newtest');

1 row created.

 

SQL> select * from table1;

        ID NAME

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

         1 Tian

         2 zhong

         3 wang

         4 newtest

SQL> commit;

Commit complete.插入成功,並提交。

 

1級增量備份全庫:

RMAN> backup incremental level 1 database plus archivelog;

省略備份過程細節。

 

提示備份成功。可以再通過RMAN>list backup;查看已有備份確認(此時LV字段包含0和1,表示目前備份中已包含有0級和1級增量備份)。

 

接下來開始恢復:


 

===============================

恢復

===============================

模擬全庫數據文件,spfile文件及控制文件的丟失(物理刪除):

模擬方式,操作系統層面rm命令強行刪除,包括oradata目錄下的數據文件和$ORACLE_HOME/dbs目錄下的spfile等啓動參數文件。

 

//注意:在操作系統層面rm刪除oracle相關文件時,可以選擇oracle open狀態刪除,也可以選擇先將oracle正常shutdown後再刪除。但後者在recover過程需要設置前滾until點,可以通過設置until SCN=故障發生時前一個正常恢復點。(SCN點在recover過程中會有提示)

 

此處爲正常shutdown immediate後的恢復。

SQL> startup

ORA-01078: failure in processing system parameters

LRM-00109: could not open parameter file '/db/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora'

SQL>此處可見已經找不到啓動參數文件

 

首先恢復spfile文件:

RMAN> connect target /

connected to target database (not started)

 

RMAN> set dbid 1274918132#dbid號可通過查看備份文件得到或者select dbid from v$database

executing command: SET DBID

 

RMAN> startup nomount;#RMAN可從默認的Oracle配置參數中啓動到nomount狀態

startup failed: ORA-01078: failure in processing system parameters

LRM-00109: could not open parameter file '/db/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora'

 

starting Oracle instance without parameter file for retrieval of spfile

Oracle instance started

Total System Global Area     159019008 bytes

Fixed Size                     1335192 bytes

Variable Size                 75497576 bytes

Database Buffers              79691776 bytes

Redo Buffers                   2494464 bytes

 

RMAN> restore spfile from '/db/bak/ctf/ORCL_ctf_bak_c-1274918132-20110506-02';#控制文件備份地址

Starting restore at 06-MAY-11

using channel ORA_DISK_1

 

channel ORA_DISK_1: restoring spfile from AUTOBACKUP /db/bak/ctf/ORCL_ctf_bak_c-1274918132-20110506-02

channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete

Finished restore at 06-MAY-11

恢復參數文件成功!!!!

關閉數據庫實例,重新從剛纔已恢復的參數文件啓動數據庫實例。

RMAN> shutdown immediate;

Oracle instance shut down

 

RMAN> startup nomount;

 

connected to target database (not started)

Oracle instance started

 

Total System Global Area     422670336 bytes

Fixed Size                     1336960 bytes

Variable Size                322963840 bytes

Database Buffers              92274688 bytes

Redo Buffers                   6094848 bytes

以上參數可見原先SGA的配置和默認RMAN啓動調用的參數是不同滴。。。。

 

 

接下來恢復控制文件

RMAN> restore controlfile from '/db/bak/ctf/ORCL_ctf_bak_c-1274918132-20110506-02';#備份控制文件路徑

 

Starting restore at 06-MAY-11

using channel ORA_DISK_1

 

channel ORA_DISK_1: restoring control file

channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

output file name=/db/app/oracle/oradata/orcl/control01.ctl

output file name=/db/app/oracle/flash_recovery_area/orcl/control02.ctl

Finished restore at 06-MAY-11

控制文件恢復成功~!!!!

 

此時就可以啓動數據庫到mount狀態

RMAN> alter database mount;

database mounted

 

繼續恢復數據~

RMAN> restore database;

RMAN> recover database;

RMAN>alter database open resetlogs;

以上三步無報錯,提示成功~


 

restore database 與recover database 區別:

restore 只是用備份來還原,recover是用archivelog或者online log 舉例說明:假設我時間點A,做了個備份,時間點B數據庫掛了restore database ;// 這個操作利用時間點A做的備份來還原,返回到時間點A recover database ;//這個操作利用archivelog and online log做recover,從時間點A,推進到時間點B restore 是轉儲也是還原被損壞文件(RMAN經常用)recover 是恢復通過redo log & archive log恢復 restore 還原recover 恢復

 

 

 

 

最後檢查測試的數據一致性:

 

SQL> select * from user1.table1;

 

        ID NAME

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

         1 Tian

         2 zhong

         3 wang

         4 newtest

 

SQL>

 

數據恢復成功!!!!

 

 

Bruce

2011.05.06

 

測試環境:

Linux 5.4-32位,Oracle 11.2

 

 

 

 

 

 

 

 

 

 

 

 

公告:CSDN下載頻道即將全面改版

RMAN備份

分類:Oracle DBA Fundamentals II2011-06-29 09:590人閱讀評論(0)收藏舉報

sql*plus與操作系統命令行切換
linux:用!符號
window:sql>到c:>用host命令,c:>到sql>用exit。

RMAN備份模式:全備、增量備份、冷備、熱備。

RMAN備份的文件類型:表空間、數據文件、控制文件、參數文件、歸檔日誌文件、備份集。

RMAN備份的目的地:磁盤、磁帶、閃存恢復區。

RMAN通過內部算法去檢測熱備中的改變塊,這個由RMAN自動完成。

備份的約束條件
1.數據庫必須是mount或者open;
2.不對redo log file備份

備份類型:image copy、backup set。

backup set的特點:
一個backup set包含多個文件,每個文件稱爲backup piece;
backup set可以備份到磁盤或磁帶上;(image copy不能備份到磁帶)
從backup set提取文件需要還原操作;
數據文件backup set支持增量備份和全備;(歸檔文件的backup set不支持)
backup set不包含從未用過的塊。

backup piece:
backup set裏的一個文件,大小受限與操作系統;
backup piece能包括多個數據文件(datafile)的數據塊。

列出備份信息,顯示備份集信息。
RMAN>list backup

備份數據庫
RMAN>backup database format 'D:/backup/md_%U';//%U=%u_%p_%c.
查看RMAN通道的對應的會話sid
select sid,username from v$session order by 2;

backup命令參數:
filesperset:每個備份集的輸入文件數
maxpiecesize:一個備份片的大小
RMAN>run {
allocate channel d1 device type disk maxpiecesize=100M;
backup database filesperset 3;
}
或者
backup format 'd:/backup/md_%U' database filesperset 3;


刪除備份集
RMAN>delete backupset 43,44 ;//43、44爲BS號。

備份數據文件
RMAN>report schema;
RMAN>backup datafile 4,5 format 'd:/backup/md_%U';//4、5爲文件編號
RMAN>backup datafile 'd:/oracle/oradata/orcl/system01.dbf' format 'd:/backup/md_%U';

備份表空間
select tablespace_name,contents from dba_tablespace;
RMAN>backup tablespace xxwz_data,xxwz_index format 'd:/backup/md_%U';

備份控制文件和spfile
1.開啓RMAN自動備份控制文件和spfile(不啓動system表空間也會自動備份表空間)
RMAN>show all;
RMAN>configure controlfile autobackup on;
2.單獨備份控制文件和spfile
RMAN>backup current controlfile;
3.附加備份控制文件和spfile
RMAN>backup datafile 4 include current controlfile;
4.SQL備份控制文件和spfile
RMAN>sql "alter database backup controlfile to ''d:/tmp/xwx.ctl''";

備份spfile文件
RMAN>backup spfile format 'd:/backup/sd_%U';
backup copies 2 device type disk SPFILE;

備份歸檔文件(自動執行alter system archive log current,選擇沒損壞的進行備份)
backup archivelog all format 'd:/backup/ar_%U' delete all input;//備份完後刪除原來的歸檔日誌

backup archivelog sequence between 44 and 100 thread 1 format 'd:/backup/ar_%U' delete all input;//備份log sequence number44到100的archivelog

backup archivelog from time "sysdate-15" until time "sysdate-7" format 'd:/backup/ar_%U' delete all input;//備份前15天到前7天的archivelog

數據文件和歸檔日誌文件一起備份
RMAN>backup database plus archivelog format 'd:/backup/db_%U';

併發備份
1.
RMAN>run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level=0
format 'd:/backup/p_%U'
(datafile 1 channel c1 tag='sys')
(datafile 3 channel c2 tag='aux')
(datafile 2,4,5 channel c3 tag='other')
;
sql 'alter system archive log current';
}
2.
configure device type disk parallelism 3 backup type to backupset;//設置併發爲3


複製備份集
backup copies 2 datafile 5 format 'd:/a1/d_%U','d:/a2/d_%U';//複製2個副本

備份備份集
backup backupset all format='e:/rman/backupset_%U.dbf'
backup backupset completed before 'sysdate-2';

image備份
RMAN>copy datafile 5 to 'd:/oracle/xwx.dbf' tag='example';
或者
RMAN>backup as copy datafile 5 format 'd:/oracle/xwx.dbf';
查看copy信息
RMAN>list copy

hold backup備份整個數據庫;
full backup:相對於增量備份,備份整個datafile blocks;
incremental backup:增量備份datafile;

操作超過6秒的操作
select sid,sofar,totalwork from v$session_longops;

增量備份等級
0:相當於full backup,備份整個datafile blocks,可以作爲增量備份的起點;
1-4:該等級有2個備份模式
差異性增量備份:備份包括從level n or lower的改變塊,n可指定;lower爲大數字
累積性增量備份:備份包括從level n-1 or lower的改變塊,n可指定
例如差異性增量備份是備份每天改變的塊,而累積性增量備份從起點開始多天改變的塊。

RMAN>run{
allocate channel d1 type disk;
backup incremental level 1 database format 'xxx/inc_%U';
} //默認爲差異性增量備份

指定爲累積性增量備份
RMAN>run{
allocate channel d1 type disk;
backup incremental level 1 cumulative database format 'xxx/inc_%U';

根據SCN進行塊級別的備份,大大縮短備份時間;

RMAN備份讀取整個數據庫文件進行塊級別檢查時要花費大量時間,可以通過設置快改變跟蹤文件,避免進行備份時全部對比塊。
alter database enable block change tracking using file 'D:/trace/xx.trc';
alter database disable block change tracking;//同時會刪除xx.trc文件。

備份標籤
backup incremental level 2 datafile 4 tag='xwxrman';
查看指定標籤備份
list backup tag='xwxrman';

RMAN相關的動態視圖(corruption=損壞)
v$archive_log
v$backup_corruption
v$copy_corruption
v$database_block_corruption
v$backup_datafile
v$backup_redolog
v$backup_set
v$backup_piece

監控RMAN備份
查看server process和session的關聯
RMAN> run {
allocate channel d1 type disk;
set command id to 'xwxtry'; //寫一個字符串信息
backup datafile 1 format 'd:/backup/df_%U';
}
然後通過下面的SQL語句就可看到d1進程對應的字符串
select sid,spid,client_info
from v$process p,v$session s
where p.addr=s.paddr
and client_info like '%id=xwxtry%';

查看備份進度(查詢v$session_longops)
select sid,serial#,context,sofar,totalwork round(sofar/totalwork*100,2) "% Complete",
from v$session_longops
where opname like 'RMAN:%'
and opname NOT LIKE 'RMAN: aggregate%';

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章