RMAN duplicate On Windows7

kuqlan發表於2012-05-23

資料庫版本:Oracle Database 10g Enterprise Edition Release 10.2.0.3.0

作業系統:win7

ORACLE_BASE=D:ORACLE

ORACLE_HOME=D:oracleproduct10.2.0db10g

前提:Oracle 10g軟體已經安裝完畢,已經具備一個主庫;

1、設定環境變數

C:>set oracle_sid=dupdb

2、建立目錄

mkdir D:oracleadmindupdbadump

mkdir D:oracleadmindupdbcdump

mkdir D:oracleadmindupdbbdump

mkdir D:oracleadmindupdbudump

3、在windows 透過oradim建立Oracle例項

C:>oradim -new -sid dupdb

例項已建立。

[@more@]

3、建立密碼檔案

C:>orapwd file=D:oracleproduct10.2.0db10gdatabasePWDdupdb.ora password=dupdb entries=5

4、透過文字編輯器在D:oracleproduct10.2.0db10gdatabase目錄下建立名為initdupdb.ora的初始化引數檔案,具體內容如下:
*.db_name='dupdb'
*.control_files='D:oracleoradatadupdbcontrol01.ctl','D:oracleoradatadupdbcontrol02.ctl','D:oracleoradatadupdbcontrol03.ctl'
*.user_dump_dest='D:oracleadmindupdbudump'
*.audit_file_dest='D:oracleadmindupdbadump'
*.background_dump_dest='D:oracleadmindupdbbdump'
*.core_dump_dest='D:oracleadmindupdbcdump'
*.pga_aggregate_target=149946368
*.sga_target=450887680
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
db_file_name_convert=('D:oracleoradatakuqlan','D:oracleoradatadupdb')
log_file_name_convert=('D:oracleoradatakuqlan','D:oracleoradatadupdb')


5、啟動例項到nomount到狀態,並形成spfile(CREATE SPFILE FROM PFILE=auxiliary_instance_pfile;)

C:>set oracle_sid=dupdb
C:>sqlplus / as sysdba
SQL> create spfile from pfile;
SQL> shutdown immediate;
SQL> startup nomount;
SQL>

6、網路配置,實現兩個例項的可達性
cd D:oracleproduct10.2.0db10gnetworkADMIN>
編輯listener.ora和tnsname.ora
listener.ora
# listener.ora Network Configuration File: D:oracleproduct10.2.0db10gNETWORKADMINlistener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:oracleproduct10.2.0db10g)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = kuqlan)
(ORACLE_HOME = D:oracleproduct10.2.0db10g)
(SID_NAME = kuqlan)
)
(SID_DESC =
(GLOBAL_DBNAME = dupdb)
(ORACLE_HOME = D:oracleproduct10.2.0db10g)
(SID_NAME = dupdb)
)
)

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = XJNT-OSC-YSP)(PORT = 1521))
)


--tnsnames.ora檔案內容:
kuqlan =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xjnt-osc-ysp)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = kuqlan)
)
)

dupdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xjnt-osc-ysp)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = dupdb)
)
)

驗證網路配置是否正確:
C:UsersAdministrator>lsnrctl stop
C:UsersAdministrator>lsnrctl start
C:UsersAdministrator>sqlplus /nolog
SQL*Plus: Release 10.2.0.3.0 - Production on 星期二 5月 2
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
SQL> conn as sysdba;
已連線。
SQL> conn as sysdba;
已連線到空閒例程。
C:UsersAdministrator>rman target auxiliary
恢復管理器: Release 10.2.0.3.0 - Production on 星期二 5月 22 11:15:33 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已連線到目標資料庫 (未啟動)
已連線到輔助資料庫: DUPDB (未裝載)
RMAN>


7、將主庫(target database)改為archive log 模式
C:>set oracle_sid=kuqlan
C:>sqlplus / as sysdba
SQL> startup mount
SQL> alter database archivelog;
SQL>

8、備份主庫(target database)

C:UsersAdministrator>rman target /
RMAN> backup database
2> format 'F:rmanfulldb_%U'
3> plus archivelog format 'F:rmanarch_%d_%T_%s';
RMAN>


9. 備份和歸檔日誌的傳送,因在同一臺機子,因此不用傳送。

10. 透過RMAN對主庫進行dupdblicate

C:UsersAdministrator>rman target auxiliary
恢復管理器: Release 10.2.0.3.0 - Production on 星期二 5月 22 11:15:33 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已連線到目標資料庫 (未啟動)
已連線到輔助資料庫: DUPDB (未裝載)

RMAN>run
{
ALLOCATE AUXILIARY CHANNEL aux1 DEVICE TYPE DISK;
DUPLICATE TARGET DATABASE TO dupdb
LOGFILE GROUP 1 ('D:oracleoradatadupdbREDO1.log') SIZE 5M,
GROUP 2 ('D:oracleoradatadupdbREDO2.log') SIZE 5M,
GROUP 3 ('D:oracleoradatadupdbREDO3.log') SIZE 5M
NOFILENAMECHECK;
}


duplicate過程中出現的錯誤及參考命令:


錯誤1:

啟動 restore 於 23-5月 -12

通道 aux1: 正在開始恢復資料檔案備份集
通道 aux1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到D:ORACLEORADATADUPDBSYSTEM01.DBF
正將資料檔案00002恢復到D:ORACLEORADATADUPDBUNDOTBS01.DBF
正將資料檔案00003恢復到D:ORACLEORADATADUPDBSYSAUX01.DBF
正將資料檔案00004恢復到D:ORACLEPRODUCT10.2.0DB10GRDBMSADMINUSERS01.DBF
通道 aux1: 正在讀取備份段 F:RMANFULLDB_0PNBMQV8_1_1

故障轉移到上一個備份
RMAN>

因主庫為手工建立的,在建立使用者表空間是不小心指錯位置,而這個位置跟初始化引數檔案的db_file_name_convert引數內容不一致導致的;
處理方法為刪除users表空間後重建到正確的目錄,然後對主庫重新進行全備份,然後再進行duplicate,users表空間重建過程如下:

SQL> conn as sysdba
已連線。
SQL> drop tablespace users including contents and datafiles;
表空間已刪除。
SQL> CREATE TABLESPACE users LOGGING
2 DATAFILE 'D:oracleoradatakuqlanusers01.dbf'
3 SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
4 EXTENT MANAGEMENT LOCAL;

表空間已建立。

錯誤2:
釋放的通道: aux1

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: Duplicate Db 命令 (在 05/23/2012 12:18:43 上) 失敗
RMAN-06136: 來自輔助資料庫的 ORACLE 錯誤: ORA-01503: CREATE CONTROLFILE 失敗
ORA-01130: 資料庫檔案版本 10.2.0.3.0 與 ORACLE 版本 10.2.0.0.0 不相容
ORA-01110: 資料檔案 1: 'D:ORACLEORADATADUPDBSYSTEM01.DBF'

是因為被duplicate資料庫的初始化檔案裡的沒有*.compatible='10.2.0.3.0'引數,而主庫上有這個引數導致的。

錯誤3:
SQL> create spfile from pfile;
create spfile from pfile
*
第 1 行出現錯誤:
ORA-00600: internal error code, arguments: [kspsetpao1], [462], [415], [*],
[user_dump_dest], [27], [], []

檢視原因發現引數檔案的core_dump_dest='D:oracleadmindupdbcdump' 少了一個單引號

參考的命令:


刪除過期時效的備份片
crosscheck backup
list expired backup
delete expired backup;

刪除無效arc
crossecheck archivelog all
list expired archivelog all
delete expired archivelog all

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18841027/viewspace-1058322/,如需轉載,請註明出處,否則將追究法律責任。

相關文章