一步一步學DataGuard(25)RMAN備份來建立之實踐

junsansi發表於2008-04-09

目標:通過rman備份,在同一臺伺服器建立standby,primary資料庫名為jssweb,要建立的standby,db_unique_name命名為jssrman,因為是在同一臺伺服器,所以需要對standby的資料檔案和日誌檔案路徑做下重定義,這裡我們選擇通過初始化引數的形式重定義檔案路徑。

一、 做好準備工作

1、 建立standby例項

需要首先通過ORADIM命令建立一個新的OracleService,非windows環境可以跳過這一步。

E:\ora10g>oradim -new -sid jssrman

例項已建立。

E:\ora10g>set oracle_sid=jssrman

E:\ora10g>sqlplus "/ as sysdba"

.............

順手配置一下監聽,修改tnsname.ora之類,此處不做演示。

2、 建立standby的初始化引數檔案

沒必要完全重建,首先根據primary的spfile生成一個pfile出來,然後比著改改就是了。例如:

在primary資料庫執行,注意是primary資料庫:

SQL> create pfile='E:\ora10g\product\10.2.0\db_1\database\INITjssrman.ora' from spfile;

用任意文字編輯器開啟INITjssrman.ora,注意修改相關的化引數,此例中主要修改下列屬性:

*.audit_file_dest='e:\ora10g\product\10.2.0\admin\jssrman\adump'

*.background_dump_dest='e:\ora10g\product\10.2.0\admin\jssrman\bdump'

*.control_files='E:\ora10g\oradata\jssrman\control01.ctl','E:\ora10g\oradata\jssrman\control02.ctl','E:\ora10g\oradata\jssrman\control03.ctl'

*.core_dump_dest='e:\ora10g\product\10.2.0\admin\jssrman\cdump'

*.DB_FILE_NAME_CONVERT='oradata\jssweb','oradata\jssrman'

*.db_name='jssweb'

*.DB_UNIQUE_NAME='jssrman'

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(jssweb,jsspdg,jssrman)'

*.LOG_ARCHIVE_DEST_1='LOCATION=E:\ora10g\oradata\jssrman\ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=jssrman'

*.LOG_ARCHIVE_DEST_STATE_1='ENABLE'

*.LOG_FILE_NAME_CONVERT='oradata\jssweb','oradata\jssrman'

*.standby_file_management='AUTO'

*.user_dump_dest='e:\ora10g\product\10.2.0\admin\jssrman\udump'

注意,由於此standby資料庫不考慮切換,因為不再配置fal_*,等相關初始化引數。

然後通過該pfile建立standby的spfile,注意是在standby資料庫執行:

SQL> create spfile from pfile='E:\ora10g\product\10.2.0\db_1\database\initjssrman.ora';

3、 啟動standby到nomount狀態

SQL> startup nomount

ORACLE 例程已經啟動。

Total System Global Area  167772160 bytes

.....................

4、 建立standby的密碼檔案

注意保持密碼與primary資料庫相同,非常重要。

E:\ora10g>orapwd file=e:\ora10g\product\10.2.0\db_1\database\PWDjssrman.ora password=verysafe entries=30

二、 進行建立工作

1、 連線primary和standby

注意連線standby的時候前面指定auxiliary

E:\ora10g>set oracle_sid=jssweb

E:\ora10g> rman target / auxiliary sys/tfad04@jssrman

恢復管理器: Release 10.2.0.3.0 - Production on 星期三 1月 30 13:53:13 2008

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

已連線到目標資料庫: JSSWEB (DBID=3408827880, 未開啟)

已連線到輔助資料庫: JSSWEB (未裝載)

2、 建立standby的控制檔案。

我們之前都操作過通過sql命令建立standby的控制檔案,這次換一換,在rman中建立standby的控制檔案。

RMAN>  copy current controlfile for standby to 'e:\ora10g\oradata\jssrman\control01.ctl';

啟動 backup 於 29-1月 -08

使用目標資料庫控制檔案替代恢復目錄

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=157 devtype=DISK

通道 ORA_DISK_1: 啟動資料檔案副本

複製備用控制檔案

輸出檔名 = E:\ORA10G\ORADATA\JSSRMAN\CONTROL01.CTL 標記 = TAG20080129T150422 recid = 6 時間戳 = 645289463

通道 ORA_DISK_1: 資料檔案複製完畢, 經過時間: 00:00:03

完成 backup 於 29-1月 -08

啟動 Control File and SPFILE Autobackup 於 29-1月 -08

段 handle=D:\BACKUP\C-3408827880-20080129-00 comment=NONE

完成 Control File and SPFILE Autobackup 於 29-1月 -08

3、 生成standby資料庫

由於我們此時的備份集是剛剛的,所以在執行duplicate命令時並不需要指定dorecover子句,而且我們採用了通過db_file_name_convert等初始化引數的方式重定義資料檔案和日誌檔案路徑,因為執行的命令就非常簡單,就這是我們前面說的,不同路徑下建立standby中,最簡單的方式:

RMAN>  duplicate target database for standby;

啟動 Duplicate Db 於 30-1月 -08

使用目標資料庫控制檔案替代恢復目錄

分配的通道: ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: sid=155 devtype=DISK

記憶體指令碼的內容:

{

   restore clone standby controlfile;

   sql clone 'alter database mount standby database';

}

正在執行記憶體指令碼

啟動 restore 於 30-1月 -08

使用通道 ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: 正在復原控制檔案

通道 ORA_AUX_DISK_1: 已複製控制檔案副本

輸出檔名=E:\ORA10G\ORADATA\JSSRMAN\CONTROL01.CTL

輸出檔名=E:\ORA10G\ORADATA\JSSRMAN\CONTROL01.CTL

輸出檔名=E:\ORA10G\ORADATA\JSSRMAN\CONTROL02.CTL

輸出檔名=E:\ORA10G\ORADATA\JSSRMAN\CONTROL03.CTL

完成 restore 於 30-1月 -08

sql 語句: alter database mount standby database

釋放的通道: ORA_AUX_DISK_1

記憶體指令碼的內容:

{

   set newname for tempfile  1 to

 "E:\ORA10G\ORADATA\JSSRMAN\TEMP01.DBF";

   switch clone tempfile all;

   set newname for datafile  1 to

 "E:\ORA10G\ORADATA\JSSRMAN\SYSTEM01.DBF";

   set newname for datafile  2 to

 "E:\ORA10G\ORADATA\JSSRMAN\UNDOTBS01.DBF";

   set newname for datafile  3 to

 "E:\ORA10G\ORADATA\JSSRMAN\SYSAUX01.DBF";

   set newname for datafile  4 to

 "E:\ORA10G\ORADATA\JSSRMAN\USERS01.DBF";

   set newname for datafile  5 to

 "E:\ORA10G\ORADATA\JSSRMAN\TBSWEB01.DBF";

   restore

   check readonly

   clone database

   ;

}

正在執行記憶體指令碼

正在執行命令: SET NEWNAME

臨時檔案 1 在控制檔案中已重新命名為 E:\ORA10G\ORADATA\JSSRMAN\TEMP01.DBF

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

啟動 restore 於 30-1月 -08

分配的通道: ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: sid=155 devtype=DISK

通道 ORA_AUX_DISK_1: 正在開始恢復資料檔案備份集

通道 ORA_AUX_DISK_1: 正在指定從備份集恢復的資料檔案

正將資料檔案00001恢復到E:\ORA10G\ORADATA\JSSRMAN\SYSTEM01.DBF

正將資料檔案00002恢復到E:\ORA10G\ORADATA\JSSRMAN\UNDOTBS01.DBF

正將資料檔案00003恢復到E:\ORA10G\ORADATA\JSSRMAN\SYSAUX01.DBF

正將資料檔案00004恢復到E:\ORA10G\ORADATA\JSSRMAN\USERS01.DBF

正將資料檔案00005恢復到E:\ORA10G\ORADATA\JSSRMAN\TBSWEB01.DBF

通道 ORA_AUX_DISK_1: 正在讀取備份段 D:\BACKUP\04J6V1SJ_1_1

通道 ORA_AUX_DISK_1: 已恢復備份段 1

段控制程式碼 = D:\BACKUP\04J6V1SJ_1_1 標記 = TAG20080124T111011

通道 ORA_AUX_DISK_1: 恢復完成, 用時: 00:00:57

完成 restore 於 30-1月 -08

記憶體指令碼的內容:

{

   switch clone datafile all;

}

正在執行記憶體指令碼

資料檔案 1 已轉換成資料檔案副本

輸入資料檔案副本 recid=11 stamp=645372185 檔名=E:\ORA10G\ORADATA\JSSRMAN\SYSTEM01.DBF

資料檔案 2 已轉換成資料檔案副本

輸入資料檔案副本 recid=12 stamp=645372185 檔名=E:\ORA10G\ORADATA\JSSRMAN\UNDOTBS01.DBF

資料檔案 3 已轉換成資料檔案副本

輸入資料檔案副本 recid=13 stamp=645372186 檔名=E:\ORA10G\ORADATA\JSSRMAN\SYSAUX01.DBF

資料檔案 4 已轉換成資料檔案副本

輸入資料檔案副本 recid=14 stamp=645372186 檔名=E:\ORA10G\ORADATA\JSSRMAN\USERS01.DBF

資料檔案 5 已轉換成資料檔案副本

輸入資料檔案副本 recid=15 stamp=645372186 檔名=E:\ORA10G\ORADATA\JSSRMAN\TBSWEB01.DBF

完成 Duplicate Db 於 30-1月 -08

4、 重建standby臨時表空間資料檔案

提示:本步非必須,如果該standby不會切換為primary並且也不會有查詢需求,就不必建立!

 

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

相關文章