恢復之RAC資料庫DUPLICATE(一)
利用現有環境建立一個DUPLICATE RAC環境。
由於篇幅限制,這篇描述DUPLICATE命令的準備工作。
原資料庫為ORACLE RAC 11.1.0.6加上Volumn Cluster Manager,而用來恢復的目標伺服器仍然是Oracle RAC 11.1.0.6,不過使用了ASM作為儲存方式。
目標資料庫的Oracle rac環境已經建立,ASM也已經啟動,而且有一個源資料庫的備份,已經放到了ASM磁碟組中,下面開始恢復過程。
由於資料庫本身比較大,因此不打算採用網路傳輸的ACTIVE DATABASE方式,而是將備份集複製到本地進行恢復。
首先檢查當前環境:
$ env|grep ORA
ORACLE_BASE=/data/oracle
ORACLE_HOME=/data/oracle/product/11.1/database
ORACLE_SID=rac11g1
編輯一個最簡單的初始化引數,啟動AUXILIARY例項:
db_name=rac11gs
下面透過這個初始化引數啟動例項:
bash-3.00$ rman target/
Recovery Manager: Release 11.1.0.6.0 - Production on Mon Sep 8 15:16:50 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database (not started)
RMAN> startup nomount pfile=initrac11g1.ora
Oracle instance started
Total System Global Area 217219072 bytes
Fixed Size 2093360 bytes
Variable Size 160362192 bytes
Database Buffers 50331648 bytes
Redo Buffers 4431872 bytes
下面退出rman,然後分別連線兩個例項:
RMAN> exit
Recovery Manager complete.
bash-3.00$ rman target sys/test@172.0.2.54/rac11g.us.oracle.com auxiliary /
Recovery Manager: Release 11.1.0.6.0 - Production on Mon Sep 8 15:33:10 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: RAC11G (DBID=1712482917)
connected to auxiliary database: RAC11GS (not mounted)
RMAN>
由於當前節點的備份集和源節點備份集路徑不一樣,源節點採用本地磁碟的方式儲存備份集,而目標節點採用ASM的方式存放備份集,所以常規方法無法解決源節點和目標節點之間備份集不一致的問題。
如果不解決這個問題而直接進行DUPLICATE,則報錯如下:
bash-3.00$ rman target sys/test@172.0.2.54/rac11g.us.oracle.com auxiliary /
Recovery Manager: Release 11.1.0.6.0 - Production on Mon Sep 8 17:49:00 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: RAC11G (DBID=1712482917)
connected to auxiliary database: RAC11GS (not mounted)
RMAN> duplicate target database to rac11gs
2> db_file_name_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
3> spfile
4> parameter_value_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
5> set log_file_name_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
6> set log_archive_dest_1='LOCATION=+DATA/RAC11G'
7> set local_listener = ''
8> ;
Starting Duplicate Db at 08-SEP-08
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=113 device type=DISK
contents of Memory Script.:
{
set until scn 26685490;
restore clone spfile to '/data/oracle/product/11.1/database/dbs/spfilerac11g1.ora';
sql clone "alter system set spfile= ''/data/oracle/product/11.1/database/dbs/spfilerac11g1.ora''";
}
executing Memory Script
executing command: SET until clause
Starting restore at 08-SEP-08
using channel ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: restoring SPFILE
output file name=/data/oracle/product/11.1/database/dbs/spfilerac11g1.ora
channel ORA_AUX_DISK_1: reading from backup piece /data/01jpk0bj_1_1
channel ORA_AUX_DISK_1: ORA-19870: error while restoring backup piece /data/01jpk0bj_1_1
ORA-19505: failed to identify file "/data/01jpk0bj_1_1"
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
failover to previous backup
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 09/08/2008 17:49:21
RMAN-03015: error occurred in stored script. Memory Script
RMAN-06026: some targets not found - aborting restore
RMAN-06729: no backup of the SPFILE found to restore
RMAN> exit
Recovery Manager complete.
根據Oracle的文件,當源節點和目標節點位置不一樣的時候,常規的方式是在源節點根據目錄節點的位置建立目錄,並將備份集複製到目錄中,透過CATALOG方式新增新的位置,但是由於目標資料庫採用ASM方式,所以這種方式也是不可行的,首先源資料庫沒有采用ASM的方式,其次,源資料庫也沒有足夠的共享空間來建立ASM磁碟組來容納備份集。
那麼只剩下一個辦法,就是透過修改CATALOG資料庫中記錄的方式來騙過RMAN,關於這個方法的具體描述可以參考:
下面找一個同版本的資料庫建立CATALOG賬號,對於測試資料庫而言,也可以直接在源資料庫上建立CATALOG:
SQL> conn / as sysdba
已連線。
SQL> create user catalog_user identified by catalog_user
2 default tablespace yangtk
3 quota unlimited on yangtk;
使用者已建立。
SQL> grant recovery_catalog_owner to catalog_user;
授權成功。
SQL> host;
$ rman catalog catalog_user/catalog_user
恢復管理器: Release 11.1.0.6.0 - Production on 星期一 9月 8 18:28:19 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
連線到恢復目錄資料庫
RMAN> create catalog;
恢復目錄已建立
下面連線target資料庫,catalog資料庫和auxiliary資料庫,註冊資料庫並同步備份資訊:
bash-3.00$ rman target sys/test@172.0.2.54/rac11g.us.oracle.com catalog catalog_user/catalog_user@172.0.2.61/test11g.netdb auxiliary /
Recovery Manager: Release 11.1.0.6.0 - Production on Mon Sep 8 18:33:30 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: RAC11G (DBID=1712482917)
connected to recovery catalog database
connected to auxiliary database: RAC11GS (not mounted)
RMAN> register database;
database registered in recovery catalog
starting full resync of recovery catalog
full resync complete
下面就可以修改catalog庫中catalog_user使用者下對應的記錄了:
SQL> conn catalog_user/catalog_user
已連線。
SQL> col handle format a60
SQL> select bp_key, handle from rc_backup_piece;
BP_KEY HANDLE
---------- ------------------------------------------------------------
1475 /data/01jpk0bj_1_1
SQL> update rc_backup_piece set handle = '+DATA/backup/01jpk0bj_1_1'
2 where bp_key = 1475;
已更新 1 行。
SQL> commit;
提交完成。
修改完成後,就可以RMAN會話中執行DUPLICATE命令了。最終使用的DUPLICATE命令如下:
duplicate target database to rac11gs
db_file_name_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
spfile
parameter_value_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
set log_file_name_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
set log_archive_dest_1='LOCATION=+DATA/RAC11G'
set local_listener = ''
set cluster_database = 'false'
;
為了DUPLICATE不需要設定繁瑣的初始化引數,可以先去掉引數中的LOCAL_LISTENER的設定,等到啟動之後在重新設定。
將引數CLUSTER_DATABASE設定為FALSE,是為了避免在建立控制檔案時出現錯誤,詳細描述可以參考文章:
還要注意將歸檔日誌檔案複製到目標伺服器上和源資料庫相同的目錄下,否則執行會報錯RMAN-6025錯誤,詳細描述可以參考:
在最終執行DUPLICATE命令之前,還需要確保將源資料庫中tnsnames.ora中的LISTENERS_RAC11G的配置新增到本地資料庫的tnsnames.ora中,否則啟動會報錯找不到REMOTE_LISTENER。
而且需要在DUPLICATE的目標節點上建立對應的目錄:
$ mkdir -p /data/oracle/admin/rac11g/adump
$ mkdir /data/oracle/admin/rac11g/dpdump
$ mkdir /data/oracle/admin/rac11g/hdump
$ mkdir /data/oracle/admin/rac11g/pfile
$ mkdir /data/oracle/admin/rac11g/scripts
$ mkdir -p /data/oracle/diag/rdbms/rac11g/rac11g1/alert
所有這些都準備好了,下面可以執行DUPLICATE命令了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-466195/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DG:11.2.0.4 RAC線上duplicate恢復DG
- DM7 RAC資料庫恢復成單機資料庫資料庫
- Oracle資料庫恢復之resetlogsOracle資料庫
- 【資料庫資料恢復】SAP資料庫資料恢復案例資料庫資料恢復
- DM7使用DMRMAN執行RAC資料庫恢復資料庫
- 寶塔資料庫恢復 mysql資料庫丟失恢復 mysql資料庫刪除庫恢復 寶塔mysql資料庫恢復資料庫MySql
- 【資料庫資料恢復】Sql Server資料庫資料恢復案例資料庫資料恢復SQLServer
- 將RAC備份集恢復為單例項資料庫單例資料庫
- 【資料庫資料恢復】透過恢復NDF檔案修復資料庫的資料恢復過程資料庫資料恢復
- 資料庫修復資料恢復資料庫資料恢復
- RAC備份恢復之Voting備份與恢復
- 【資料庫資料恢復】windows server下SqlServer資料庫的資料恢復資料庫資料恢復WindowsServerSQL
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- mysql資料庫恢復一例MySql資料庫
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- 【資料庫資料恢復】oracle資料庫誤truncate table怎麼恢復資料?資料庫資料恢復Oracle
- 【資料庫資料恢復】linux系統下MYSQL資料庫資料恢復案例資料庫資料恢復LinuxMySql
- 伺服器資料恢復—透過拼接資料庫碎片恢復SqlServer資料庫資料的資料恢復案例伺服器資料恢復資料庫SQLServer
- 【資料庫資料恢復】MS SQL資料庫附加資料庫出錯怎麼恢復資料?資料庫資料恢復SQL
- sybase資料庫恢復資料庫
- Sybase ASE資料庫恢復,Sybase資料恢復,資料誤刪除恢復工具READSYBDEVICE資料庫資料恢復dev
- 資料庫資料恢復—NTFS分割槽損壞如何恢復SqlServer資料庫資料資料庫資料恢復SQLServer
- 【資料庫資料恢復】sql server資料庫連線失效的資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】Oracle資料庫ASM磁碟組掉線如何恢復資料?資料庫資料恢復OracleASM
- 【資料庫資料恢復】SqlServer資料庫無法讀取的資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】MongoDB資料庫檔案損壞的資料恢復案例資料庫資料恢復MongoDB
- 【資料庫資料恢復】SQL server資料庫被加密怎麼辦?如何恢復?資料庫資料恢復SQLServer加密
- 資料庫資料恢復—附加資料庫錯誤823的SQL Server資料恢復案例資料庫資料恢復SQLServer
- 資料庫資料恢復—SQLserver資料庫中勒索病毒被加密怎麼恢復資料?資料庫資料恢復SQLServer加密
- 【資料庫資料恢復】SQL Server資料庫磁碟空間不足的資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】ASM磁碟組掉線的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 【資料庫資料恢復】透過資料頁恢復Sql Server資料庫資料的過程資料庫資料恢復SQLServer
- Sybase SQL Anywhere(ASA)資料庫恢復,ASA資料恢復,資料誤刪除恢復工具ReadASADBSQL資料庫資料恢復
- 資料庫資料恢復-SQL SERVER資料庫MDF (NDF)或LDF損壞如何恢復資料?資料庫資料恢復SQLServer
- 【資料庫資料恢復】ASM例項不能掛載的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 資料庫資料恢復-oracle資料庫報錯無法開啟的如何恢復資料?資料庫資料恢復Oracle
- 【資料庫資料恢復】LINUX環境下ORACLE資料庫誤刪除的資料恢復資料庫資料恢復LinuxOracle
- 【資料庫資料恢復】Sql Server資料庫檔案丟失的資料恢復過程資料庫資料恢復SQLServer