說(shuō)明:
1.此處環(huán)境為同平臺(tái)余佃、同版本(操作系統(tǒng)版本可以不同学搜,但數(shù)據(jù)庫(kù)版本需相同)焰檩,源機(jī)器和目標(biāo)機(jī)器具有相同的目錄結(jié)構(gòu)焚虱。
2.目標(biāo)機(jī)器只需要安裝oracle只安裝oracle數(shù)據(jù)庫(kù)軟件,不創(chuàng)建數(shù)據(jù)庫(kù)(no netca dbca)。
3.第一次利用備份恢復(fù)測(cè)試環(huán)境萌狂,之后從源機(jī)器拷貝備份到目標(biāo)機(jī)器并在控制文件中注冊(cè)档玻,再進(jìn)行恢復(fù)測(cè)試。
一茫藏、環(huán)境描述
1. 源數(shù)據(jù)庫(kù)環(huán)境
操作系統(tǒng)版本 : CentOS 6.7 x64
數(shù)據(jù)庫(kù)版本 : Oracle 11.2.0.4 x64
數(shù)據(jù)庫(kù)名 : orcl
數(shù)據(jù)庫(kù)SID : orcl
db_unique_name : orcl
instance_name : orcl
IP : 10.0.8.100
2. 目標(biāo)數(shù)據(jù)庫(kù)環(huán)境
操作系統(tǒng)版本 : CentOS 6.7 x64
數(shù)據(jù)庫(kù)版本 : Oracle 11.2.0.4 x64 (只安裝oracle數(shù)據(jù)庫(kù)軟件,no netca dbca)
數(shù)據(jù)庫(kù)名 : orcl
數(shù)據(jù)庫(kù)SID : orcl
db_unique_name: orcl
instance_name : orcl
IP:10.0.8.101
主要過(guò)程是將參數(shù)文件備份误趴、控制文件備份、數(shù)據(jù)文件備份务傲、密碼文件以及歸檔備份拷貝到目標(biāo)主機(jī)進(jìn)行rman恢復(fù)凉当。
注意:當(dāng)使用rman nocatalog恢復(fù)時(shí),數(shù)據(jù)庫(kù)必須是處于“mount”狀態(tài)的售葡。而Oracle startup mount的前提條件是control必須存在看杭。因此,你必須在恢復(fù)datafile之前先恢復(fù)controlfile天通。
二泊窘、源數(shù)據(jù)庫(kù)服務(wù)器
1、查看源數(shù)據(jù)庫(kù)DBID像寒、控制文件烘豹、數(shù)據(jù)文件和redo日志文件的存儲(chǔ)位置:
# 查看源數(shù)據(jù)庫(kù)的DBID:
SQL> select dbid from v$database;
# 查看控制文件:
SQL> select name from v$controlfile;
# 查看數(shù)據(jù)文件:
SQL> select status,name from v$datafile;
# 查看日志文件:
SQL> select * from v$logfile;
2、rman備份源數(shù)據(jù)庫(kù):
通過(guò)rman進(jìn)行一次全備:
rman target /
RMAN>
run{
allocalte channel ch1 type disk;
allocalte channel ch2 type disk;
backup as compressed backupset database format ‘/u02/rman/fulldb_%T_%U’;
sql ‘a(chǎn)lter system archive log current’;
backup as compressed backupset archivelog all format ‘/u02/rman/arc_%T_%U’ delete all input;
bakup current controlfile format ‘/u02/rman/con_%T_%U’;
release channel ch2;
release channel ch1;
}
report obsolete;
crosscheck backup;
crosscheck archivelog all;
delete noprompt obsolete;
delete noprompt expired backup;
list backup summary;
【注意:控制文件一定要最后備份诺祸,由于沒(méi)做歸檔目錄數(shù)據(jù)庫(kù)携悯,rman備份信息都放在控制文件里面,要保證備份過(guò)程的信息內(nèi)容都進(jìn)入到控制文件筷笨,保證數(shù)據(jù)文件和控制文件是一致備份】
分別列出參數(shù)文件備份憔鬼,控制文件備份,數(shù)據(jù)文件備份胃夏,以及歸檔備份的名字:
a.參數(shù)文件備份如下:
RMAN> list backup of spfile;
b.控制文件備份如下:
RMAN> list backup of controlfile;
c.數(shù)據(jù)文件備份如下:
RMAN> list backup of database;
d.列出歸檔備份如下:
RMAN> list backup of archivelog all;
3轴或、備份參數(shù)文件:
create pfile='/u02/rman/initorcl.ora' from spfile;
# 【pfile備份后,拷貝到目標(biāo)數(shù)據(jù)庫(kù)服務(wù)器】
4仰禀、將備份文件照雁、密碼文件copy至目標(biāo)機(jī)器:
a.拷貝rman備份文件
scp /u02/rman/* oracle@10.0.8.101:/rmanbak
b.拷貝參數(shù)文件
scp /u02/rman/initorcl.ora oracle@10.0.8.101:/rmanbak
c.拷貝密碼文件
scp /u01/app/oracle/product/11.2.0.4/db_1/dbs/orapworcl oracle@10.0.8.101:/rmanbak
三、目標(biāo)數(shù)據(jù)庫(kù)服務(wù)器
1答恶、目標(biāo)服務(wù)器上創(chuàng)建相應(yīng)的目錄:
mkdir -p /u01/app/oracle/admin/orcl/{adump,dpdump,pfile,scripts}
mkdir -p /u01/app/oracle/oradata/orcl
mkdir -p /u01/app/oracle/fast_recovery_area/orcl
mkdir -p /u01/archivelog
mkdir -p /rmanbak
chown -R oracle:oinstall /u01/app/oracle/
chown -R oracle:oinstall /rmanbak
chmod -R 775 /u01/
2饺蚊、恢復(fù)參數(shù)文件,將數(shù)據(jù)庫(kù)啟動(dòng)到nomount:
[oracle@orcl dbs]$ export ORACLE_SID=orcl
[oracle@orcl dbs]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Fri Dec 12 20:39:56 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount pfile='/u02/rman/initorcl.ora'
需要對(duì)拷貝過(guò)來(lái)的pfile進(jìn)行修改【由于Windows跟Linux磁盤路徑不一樣悬嗓,要手工修改到目標(biāo)數(shù)據(jù)庫(kù)的相關(guān)路徑污呼,并建立相關(guān)數(shù)據(jù)庫(kù)目錄】,不然會(huì)提示找不到adump udump等目錄路徑文件的包竹。
====================================================
orcl.__db_cache_size=398458880
orcl.__java_pool_size=16777216
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=163577856
orcl.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/product/11.2/admin/orcl/adump'
*.background_dump_dest='/u01/app/oracle/product/11.2/admin/orcl/bdump'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/control01.ctl','/u01/app/oracle/oradata/control02.ctl','/u01/app/oracle/oradata/control03.ctl'
*.core_dump_dest='/u01/app/oracle/product/11.2/admin/orcl/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/product/11.2/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=196083712
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=589299712
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/app/oracle/product/11.2/admin/orcl/udump'
用pfile生成spfile文件:
SQL> create spfile from pfile;
SQL> shutdown immediate燕酷;
SQL> startup nomount; --啟動(dòng)到nomount狀態(tài)
3籍凝、恢復(fù)控制文件:
[oracle@orcl ~]$ rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Fri Dec 12 20:40:14 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: orcl (not mounted)
RMAN> set DBID=3882088725;
RMAN> restore controlfile from '/rmanbak/fulldb_orcl_04rdg8d5_1_1' ;
RMAN> alter database mount; --將數(shù)據(jù)庫(kù)啟動(dòng)到mount
4、恢復(fù)數(shù)據(jù)文件:
[oracle@orcl ~]$ rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Fri Dec 12 20:40:14 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: orcl (mounted)
# 將備份集信息重新導(dǎo)入到當(dāng)前控制文件中(一定要用“/”結(jié)尾苗缩,不然可能會(huì)找不到真實(shí)的路徑)
RMAN> catalog start with '/rmanbak/';
RMAN> restore database; --還原數(shù)據(jù)文件
RMAN> recover database; --還原歸檔日志
# 恢復(fù)完成后静浴,將庫(kù)啟動(dòng)到read only模式,查詢一下數(shù)據(jù)是否正常
SQL> alter database open read only;
5挤渐、恢復(fù)密碼文件:
將拷貝過(guò)來(lái)的密碼文件恢復(fù)至數(shù)據(jù)庫(kù)對(duì)應(yīng)目錄下:
cp /rmanbak/orapworcl /u01/app/oracle/product/11.2.0.4/db_1/dbs/orapworcl
或者手動(dòng)創(chuàng)建密碼文件:
orapwdfile='/u01/app/oracle/product/11.2.0.4/db_1/dbs/orapworcl' password=oracle entries=30 force=y
6、恢復(fù)歸檔日志:
可能在恢復(fù)的過(guò)程中歸檔沒(méi)有及時(shí)生成双絮,可以在最后再備份一下歸檔日志浴麻,或者將新產(chǎn)生的歸檔拷貝到歸檔的相應(yīng)目錄下,然后進(jìn)行如下的恢復(fù)操作步驟:
RMAN> alter database mount; --接上面
RMAN> catalog start with '/u01/backup/arch/';
RMAN> recover database;
7囤攀、RESETLOGS打開(kāi)數(shù)據(jù)庫(kù):
SQL> alter database open resetlogs;
SQL> select name,OPEN_MODE from v$database; --驗(yàn)證數(shù)據(jù)庫(kù)狀態(tài)
SQL> select max(sequence#) from v$archived_log;
重新啟動(dòng)數(shù)據(jù)庫(kù)
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 584568832 bytes
Fixed Size 2255432 bytes
Variable Size 226493880 bytes
Database Buffers 352321536 bytes
Redo Buffers 3497984 bytes
Database mounted.
Database opened.
至此數(shù)據(jù)庫(kù)恢復(fù)完成软免。