1. 程式人生 > 實用技巧 >一次RMAN全備恢復

一次RMAN全備恢復

一次RMAN全備恢復

當前環境,客戶已經將相應的備份檔案匯入測試環境,測試環境Oracle軟體已經安裝完成,同時測試環境存在資料庫。無法確定測試環境的資料是否可以刪除,同時考慮到測試環境磁碟空間比較充裕。選擇新建例項的方法。

以下操作為流程,鑑於資料安全性為我自己還原的場景

源庫執行RMAN備份全庫

1)全備前操作

#檢視當前資料庫狀態
SYS@proe>select instance_name,status from v$instance;


INSTANCE_NAME    STATUS
---------------- ------------
proe             OPEN


#切換日誌
SYS@proe>alter system archive log current;


System altered.


SYS@proe>/


System altered.


SYS@proe>/


System altered.


#校驗歸檔日誌
RMAN> crosscheck archivelog all;

2)執行全備

[oracle@server1 ~]$ ./backup.sh 
備份目錄不存在,已建立
RMAN> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12> 13> 14> 15> 16> 17> 18> RMAN> 日誌目錄不存在,已建立
2020-08-13 14:16:05 rman備份執行成功,開始壓縮備份
tar: Removing leading `/' from member names
/backup/files/20200813/
/backup/files/20200813/db_back_PROE_20200813_05v7os00_1_1.dbf
/backup/files/20200813/db_back_PROE_20200813_03v7orsc_1_1.dbf
/backup/files/20200813/con_back_PROE_20200813_0_02v7orsa_1_1
/backup/files/20200813/full_back_log_20200813.log
/backup/files/20200813/db_back_PROE_20200813_04v7orsc_1_1.dbf
/backup/files/20200813/full_back_arch_PROE_20200813_07v7os01_1_1.arc
/backup/files/20200813/db_back_PROE_20200813_06v7os00_1_1.dbf
/backup/files/20200813/full_back_arch_PROE_20200813_08v7os01_1_1.arc
/backup/files/20200813/full_back_arch_PROE_20200813_09v7os14_1_1.arc
2020-08-13 14:16:38 壓縮備份成功

3)檢視備份並將備份檔案傳送給恢復目標端

[oracle@server1 files]$ ls
20200813  fullback-20200813.tar.gz
[oracle@server1 files]$ pwd
/backup/files


[root@server1 files]# scp fullback-20200813.tar.gz 192.168.0.35:/root
The authenticity of host '192.168.0.35 (192.168.0.35)' can't be established.
RSA key fingerprint is be:bb:a9:62:e6:2a:51:7e:c7:0b:c9:03:fb:c6:24:4e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.35' (RSA) to the list of known hosts.
[email protected]'s password: 
fullback-20200813.tar.gz

恢復目標端操作

1)授權傳輸過來的檔案並解壓

[oracle@orcldb ~]$ ll
total 431772
-rw-r--r-- 1 oracle oinstall 442133681 Aug 13 14:20 fullback-20200813.tar.gz
[oracle@orcldb ~]$ tar -zxvf fullback-20200813.tar.gz 
backup/files/20200813/
backup/files/20200813/db_back_PROE_20200813_05v7os00_1_1.dbf
backup/files/20200813/db_back_PROE_20200813_03v7orsc_1_1.dbf
backup/files/20200813/con_back_PROE_20200813_0_02v7orsa_1_1
backup/files/20200813/full_back_log_20200813.log
backup/files/20200813/db_back_PROE_20200813_04v7orsc_1_1.dbf
backup/files/20200813/full_back_arch_PROE_20200813_07v7os01_1_1.arc
backup/files/20200813/db_back_PROE_20200813_06v7os00_1_1.dbf
backup/files/20200813/full_back_arch_PROE_20200813_08v7os01_1_1.arc
backup/files/20200813/full_back_arch_PROE_20200813_09v7os14_1_1.arc


[oracle@orcldb 20200813]$ pwd
/home/oracle/backup/files/20200813
[oracle@orcldb 20200813]$ ls
con_back_PROE_20200813_0_02v7orsa_1_1   db_back_PROE_20200813_05v7os00_1_1.dbf         full_back_arch_PROE_20200813_08v7os01_1_1.arc
db_back_PROE_20200813_03v7orsc_1_1.dbf  db_back_PROE_20200813_06v7os00_1_1.dbf         full_back_arch_PROE_20200813_09v7os14_1_1.arc
db_back_PROE_20200813_04v7orsc_1_1.dbf  full_back_arch_PROE_20200813_07v7os01_1_1.arc  full_back_log_20200813.log

2)在解壓出來的檔案的日誌中抓取檔案編號對應的資料檔案(資料量較小可以忽略這步,主要為了資料量較大時多路恢復提高速度或者需要更改資料檔案路徑使用,這裡我資料量不大所以沒有使用多路恢復,只是展示一下怎樣查詢編號和檔案的對應關係)

[oracle@orcldb 20200813]$ more full_back_log_20200813.log 
...
Starting backup at 13-AUG-20
channel c1: starting compressed full datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00002 name=/u01/app/oracle/oradata/proe/sysaux01.dbf
input datafile file number=00005 name=/u01/app/oracle/oradata/proe/example01.dbf
input datafile file number=00006 name=/u01/app/oracle/oradata/proe/test_1.dbf
channel c1: starting piece 1 at 13-AUG-20
channel c2: starting compressed full datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/proe/system01.dbf
input datafile file number=00007 name=/u01/app/oracle/oradata/proe/tbs_tran01.dbf
input datafile file number=00003 name=/u01/app/oracle/oradata/proe/undotbs01.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/proe/users01.dbf
...
number 對應資料檔案

3)前面說了在這個恢復目標庫原本存在一個數據庫,在空間足夠的情況下我又新建了一個例項用來這次資料恢復。所以需要把環境變數進行修改。

[oracle@orcldb ~]$ vim .bash_profile 
[oracle@orcldb ~]$ source .bash_profile 
[oracle@orcldb ~]$ echo $ORACLE_SID
proe

開始恢復

4)使用RMAN啟動偽例項來恢復引數檔案(引數檔案通常是.dbf最後一個,而且比較小。)

RMAN> startup nomount;


startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/db_home1/dbs/initproe.ora'


starting Oracle instance without parameter file for retrieval of spfile
Oracle instance started


Total System Global Area    1068937216 bytes


Fixed Size                     2260088 bytes
Variable Size                285213576 bytes
Database Buffers             775946240 bytes
Redo Buffers                   5517312 bytes


RMAN> restore spfile from '/home/oracle/backup/files/20200813/db_back_PROE_20200813_06v7os00_1_1.dbf';


Starting restore at 2020-08-13 14:28:37
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=429 device type=DISK


channel ORA_DISK_1: restoring spfile from AUTOBACKUP /home/oracle/backup/files/20200813/db_back_PROE_20200813_06v7os00_1_1.dbf
channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete
Finished restore at 2020-08-13 14:28:38

5)恢復完成後關閉資料庫重新啟動到nomount狀態,建立pfile

oracle@orcldb 20200813]$ sqlplus  / as sysdba


SQL*Plus: Release 11.2.0.4.0 Production on Thu Aug 13 14:28:56 2020


Copyright (c) 1982, 2013, Oracle.  All rights reserved.




Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options


SYS@proebk>create pfile from spfile;


File created.


#檢視pfile
[oracle@orcldb dbs]$ pwd                
/u01/app/oracle/product/11.2.0/db_home1/dbs
[oracle@orcldb dbs]$ vim initproe.ora 

6)根據pfile建立相應的目錄

[oracle@orcldb ~]$ mkdir -pv /u01/app/oracle/admin/proe/adump
mkdir: created directory '/u01/app/oracle/admin/proe'
mkdir: created directory '/u01/app/oracle/admin/proe/adump'


[oracle@orcldb ~]$ mkdir -pv /u01/app/oracle/oradata/proe/
mkdir: created directory '/u01/app/oracle/oradata/proe/'

7)恢復控制檔案

RMAN> restore controlfile from '/home/oracle/backup/files/20200813/con_back_PROE_20200813_0_02v7orsa_1_1';


Starting restore at 2020-08-13 16:58:10
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=/u01/app/oracle/oradata/proe/control01.ctl
output file name=/u01/app/oracle/fast_recovery_area/proe/control02.ctl
Finished restore at 2020-08-13 16:58:11

8)恢復完成後將資料庫啟動到mount狀態

SYS@proe>alter database mount;


Database altered.

9)全庫恢復

RMAN> restore database;


Starting restore at 2020-08-13 17:20:22
using channel ORA_DISK_1
......


RMAN> recover database;


Starting recover at 2020-08-13 17:21:10
using channel ORA_DISK_1
datafile 7 not processed because file is read-only


starting media recovery
....
archived log thread=1 sequence=57
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 08/13/2020 17:21:13
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 57 and starting SCN of 2090017

10)不完全恢復

MAN> recover database until sequence 57;


Starting recover at 2020-08-13 17:21:36
using channel ORA_DISK_1
datafile 7 not processed because file is read-only


starting media recovery
media recovery complete, elapsed time: 00:00:00


Finished recover at 2020-08-13 17:21:36

11)用resetlogs方式開啟

RMAN> alter database open resetlogs;


database opened


SYS@proe>select status from v$instance;


STATUS
------------------------
OPEN

恢復完成



來自為知筆記(Wiz)