RMAN複製數據庫

作者 阿九【轉載時請務必以超鏈接形式標明文章原始出處和作者信息】




二、使用RMAN複製數據庫

1、環境介紹:

主機1:

操作系統

REDHAT5.5

IP地址

172.16.1.120

主機名

sigle

數據庫版本

10.2.0.4

數據庫名

orcl

DBID

1305151947

catalog

win_yjr

catalog用戶

sigle/sigle

 

主機2:

操作系統

REDHAT5.5

IP地址

172.16.1.121

主機名

clone_sigle

數據庫版本

10.2.0.4

 

 

 

 

 

    本次試驗的數據庫系統文件存儲採用raw方式,因此在進行復制前,爲了確保恢復的有效性,已使用dd命令將clone_sigle上的raw設備原有數據信息全部清空一次。

源數據庫SID:orcl

目標數據庫SID:orclaux

2、本次複製試驗目錄:

    試驗在同平臺,同版本之間的數據快速遷移複製的另一種途徑,保證在複製後的數據庫中有源數據庫中的數據。

3、實際操作過程:

    爲了驗證複製的完整性,在熱備之前先創建一張驗證表:sys.test_rman裏面有一條數據。

SQL> select * from test_rman;

 

        T1 T2

---------- --------------

         1 23-3月 -12

 

SQL>

 

1)、啓動源數據庫到open狀態

SQL*Plus: Release 10.2.0.4.0 - Production on 星期一 3月 26 23:29:16 2012

 

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

 

SQL> conn /as sysdba

Connected to an idle instance.

SQL> startup mount;

ORACLE instance started.

 

Total System Global Area  486539264 bytes

Fixed Size                  1268196 bytes

Variable Size             171968028 bytes

Database Buffers          306184192 bytes

Redo Buffers                7118848 bytes

Database mounted.

SQL> alter database open;

 

Database altered.

 

SQL>

 

2)、熱備份源數據庫

RMAN>  run {

2> configure controlfile autobackup on;

3> CONFIGURE BACKUP OPTIMIZATION on;

4>   backup as compressed backupset 

5>        format '/oracle/backup/backdb<%d_%s:%t:%p>.dbf'

6>        database

7>        include current controlfile;

8>  # Archive log Backup

9>  backup as compressed backupset

10>        format '/oracle/backup/archive<%d_%s:%t:%p>.dbf'

11>        archivelog all delete all input;

12>  }

 

old RMAN configuration parameters:

CONFIGURE CONTROLFILE AUTOBACKUP ON;

new RMAN configuration parameters:

CONFIGURE CONTROLFILE AUTOBACKUP ON;

new RMAN configuration parameters are successfully stored

 

old RMAN configuration parameters:

CONFIGURE BACKUP OPTIMIZATION ON;

new RMAN configuration parameters:

CONFIGURE BACKUP OPTIMIZATION ON;

new RMAN configuration parameters are successfully stored

 

Starting backup at 26-3月 -12

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=1628 devtype=DISK

channel ORA_DISK_1: starting compressed full datafile backupset

channel ORA_DISK_1: specifying datafile(s) in backupset

input datafile fno=00001 name=/dev/raw/raw1

input datafile fno=00002 name=/dev/raw/raw3

input datafile fno=00003 name=/dev/raw/raw2

input datafile fno=00004 name=/dev/raw/raw4

channel ORA_DISK_1: starting piece 1 at 26-3月 -12

channel ORA_DISK_1: finished piece 1 at 26-3月 -12

piece handle=/oracle/backup/backdb<ORCL_23:778981561:1>.dbf tag=TAG20120326T234601 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55

channel ORA_DISK_1: starting compressed full datafile backupset

channel ORA_DISK_1: specifying datafile(s) in backupset

including current control file in backupset

channel ORA_DISK_1: starting piece 1 at 26-3月 -12

channel ORA_DISK_1: finished piece 1 at 26-3月 -12

piece handle=/oracle/backup/backdb<ORCL_24:778981617:1>.dbf tag=TAG20120326T234601 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02

Finished backup at 26-3月 -12

 

Starting backup at 26-3月 -12

current log archived

using channel ORA_DISK_1

channel ORA_DISK_1: starting compressed archive log backupset

channel ORA_DISK_1: specifying archive log(s) in backup set

input archive log thread=1 sequence=41 recid=7 stamp=778981619

channel ORA_DISK_1: starting piece 1 at 26-3月 -12

channel ORA_DISK_1: finished piece 1 at 26-3月 -12

piece handle=/oracle/backup/archive<ORCL_25:778981619:1>.dbf tag=TAG20120326T234659 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02

channel ORA_DISK_1: deleting archive log(s)

archive log filename=/oracle/arch/1_41_777371211.dbf recid=7 stamp=778981619

Finished backup at 26-3月 -12

 

Starting Control File and SPFILE Autobackup at 26-3月 -12

piece handle=/oracle/db10g/dbs/c-1305151947-20120326-02 comment=NONE

Finished Control File and SPFILE Autobackup at 26-3月 -12

 

RMAN>

 

3)、配置監聽

    爲了確保複製數據庫時,在數據庫沒有啓動的情況下能正常連接數目標數據庫,需要對監聽進行配置,進行靜態註冊,可以在兩端都進行配置,爲了保證配置正確,推薦使用oracle net mamager進行配置。使用命令netmgr來啓動OUI。在LISTENER中配置數據庫服務,如下圖:

配置完成後,重啓監聽。

4)、並配置密碼文件及創建相應的參數目錄

 

5)、創建啓動pfile文件

SQL> create pfile='/oracle/backup/initorclaux.ora' from spfile;

 

File created.

 

SQL>

 

6)、修改pfile文件

將其中的db_name 修改爲:db_name='orclaux'

其他參數使用和源數據一樣的路徑和配置,因此不做修改。


7)、啓動目標數據到nomount狀態

[oracle@sigle backup]$ hostname
clone_sigle

[oracle@sigle backup]$ sq

[uniread] Loaded history (132 lines)

SQL*Plus: Release 10.2.0.4.0 - Production on 星期二 3月 27 00:59:56 2012

 

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

 

SQL> conn /as sysdba

Connected to an idle instance.

SQL> startup nomount pfile='/oracle/backup/initorclaux.ora';

ORACLE instance started.

 

Total System Global Area  486539264 bytes

Fixed Size                  1268196 bytes

Variable Size             171968028 bytes

Database Buffers          306184192 bytes

Redo Buffers                7118848 bytes

SQL> show parameter name

 

NAME                                 TYPE                   VALUE

------------------------------------ ---------------------- ------------------------------

db_file_name_convert                 string

db_name                              string                 orclaux

db_unique_name                       string                 orclaux

global_names                         boolean                FALSE

instance_name                        string                 orclaux

lock_name_space                      string

log_file_name_convert                string

service_names                        string                 orclaux

SQL>

 

8)、連接源數據庫及目標數據庫

在源數據庫端連接

[oracle@sigle backup]$ hostname

sigle

[oracle@sigle backup]$

[oracle@sigle ~]$ rman target /

[uniread] Loaded history (181 lines)

 

Recovery Manager: Release 10.2.0.4.0 - Production on 星期二 3月 27 01:04:58 2012

 

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

 

connected to target database: ORCL (DBID=1305151947)

 

RMAN> CONNECT AUXILIARY sys/sysadmin@sigleaux

 

connected to auxiliary database: ORCLAUX (not mounted)

 

RMAN>

 

9)、複製數據庫

    需要注意的是,如果目標數據庫的數據文件位置與源數據庫數據文件位置相同,在執行

DUPLICATE TARGET DATABASE TO orclaux後要加nofilenamecheck參數,否則報錯:

RMAN-05001: auxiliary filename/dev/raw/raw1 conflicts with a file used by the target database

如果目標數據庫的數據文件位置與源數據庫數據文件位置不同,則需要加上DB_FILE_NAME_CONVERT參數來轉換數據文件位置,例如:

DB_FILE_NAME_CONVERT=('/h1/oracle/dbs/trgt/','/h2/oracle/oradata/newdb/')

    注意,在命令執行過程中,目標數據庫必須要保證沒有連接,否則腳本執行到整個過程快結束,需要重啓目標數據庫時候掛住,直到現有連接全部退出。

RMAN> DUPLICATE TARGET DATABASE TO orclaux nofilenamecheck;

 

Starting Duplicate Db at 27-3月 -12

using channel ORA_AUX_DISK_1

 

contents of Memory Script:

{

   set until scn  555341;

   set newname for datafile  1 to

 "/dev/raw/raw1";

   set newname for datafile  2 to

 "/dev/raw/raw3";

   set newname for datafile  3 to

 "/dev/raw/raw2";

   set newname for datafile  4 to

 "/dev/raw/raw4";

   restore

   check readonly

   clone database

   ;

}

executing Memory Script

 

executing command: SET until clause

 

executing command: SET NEWNAME

 

executing command: SET NEWNAME

 

executing command: SET NEWNAME

 

executing command: SET NEWNAME

 

Starting restore at 27-3月 -12

using channel ORA_AUX_DISK_1

 

channel ORA_AUX_DISK_1: starting datafile backupset restore

channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set

restoring datafile 00001 to /dev/raw/raw1

restoring datafile 00002 to /dev/raw/raw3

restoring datafile 00003 to /dev/raw/raw2

restoring datafile 00004 to /dev/raw/raw4

channel ORA_AUX_DISK_1: reading from backup piece /oracle/backup/backdb<ORCL_23:778981561:1>.dbf

channel ORA_AUX_DISK_1: restored backup piece 1

piece handle=/oracle/backup/backdb<ORCL_23:778981561:1>.dbf tag=TAG20120326T234601

channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:35

Finished restore at 27-3月 -12

sql statement: CREATE CONTROLFILE REUSE SET DATABASE "ORCLAUX" RESETLOGS ARCHIVELOG

  MAXLOGFILES     16

  MAXLOGMEMBERS      3

  MAXDATAFILES     1024

  MAXINSTANCES     8

  MAXLOGHISTORY      292

 LOGFILE

  GROUP  1 ( '/dev/raw/raw10', '/dev/raw/raw11' ) SIZE 50 M  REUSE,

  GROUP  2 ( '/dev/raw/raw12', '/dev/raw/raw13' ) SIZE 50 M  REUSE

 DATAFILE

  '/dev/raw/raw1'

 CHARACTER SET ZHS16GBK

 

 

contents of Memory Script:

{

   switch clone datafile all;

}

executing Memory Script

 

released channel: ORA_AUX_DISK_1

datafile 2 switched to datafile copy

input datafile copy recid=1 stamp=778987671 filename=/dev/raw/raw3

datafile 3 switched to datafile copy

input datafile copy recid=2 stamp=778987671 filename=/dev/raw/raw2

datafile 4 switched to datafile copy

input datafile copy recid=3 stamp=778987671 filename=/dev/raw/raw4

 

contents of Memory Script:

{

   set until scn  555341;

   recover

   clone database

    delete archivelog

   ;

}

executing Memory Script

 

executing command: SET until clause

 

Starting recover at 27-3月 -12

allocated channel: ORA_AUX_DISK_1

channel ORA_AUX_DISK_1: sid=1640 devtype=DISK

 

starting media recovery

 

channel ORA_AUX_DISK_1: starting archive log restore to default destination

channel ORA_AUX_DISK_1: restoring archive log

archive log thread=1 sequence=41

channel ORA_AUX_DISK_1: reading from backup piece /oracle/backup/archive<ORCL_25:778981619:1>.dbf

channel ORA_AUX_DISK_1: restored backup piece 1

piece handle=/oracle/backup/archive<ORCL_25:778981619:1>.dbf tag=TAG20120326T234659

channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01

archive log filename=/oracle/arch/1_41_777371211.dbf thread=1 sequence=41

channel clone_default: deleting archive log(s)

archive log filename=/oracle/arch/1_41_777371211.dbf recid=1 stamp=778987673

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

Finished recover at 27-3月 -12

 

contents of Memory Script:

{

   shutdown clone;

   startup clone nomount ;

}

executing Memory Script  --如果目標數據庫還有會話,複製過程將在這裏一直等待所有會話結束

 

database dismounted

Oracle instance shut down

 

connected to auxiliary database (not started)

Oracle instance started

 

Total System Global Area     486539264 bytes

 

Fixed Size                     1268196 bytes

Variable Size                138413596 bytes

Database Buffers             339738624 bytes

Redo Buffers                   7118848 bytes

sql statement: CREATE CONTROLFILE REUSE SET DATABASE "ORCLAUX" RESETLOGS ARCHIVELOG

  MAXLOGFILES     16

  MAXLOGMEMBERS      3

  MAXDATAFILES     1024

  MAXINSTANCES     8

  MAXLOGHISTORY      292

 LOGFILE

  GROUP  1 ( '/dev/raw/raw10', '/dev/raw/raw11' ) SIZE 50 M  REUSE,

  GROUP  2 ( '/dev/raw/raw12', '/dev/raw/raw13' ) SIZE 50 M  REUSE

 DATAFILE

  '/dev/raw/raw1'

 CHARACTER SET ZHS16GBK

 

 

contents of Memory Script:

{

   set newname for tempfile  1 to

 "/dev/raw/raw5";

   switch clone tempfile all;

   catalog clone datafilecopy  "/dev/raw/raw3";

   catalog clone datafilecopy  "/dev/raw/raw2";

   catalog clone datafilecopy  "/dev/raw/raw4";

   switch clone datafile all;

}

executing Memory Script

 

executing command: SET NEWNAME

 

renamed temporary file 1 to /dev/raw/raw5 in control file

 

cataloged datafile copy

datafile copy filename=/dev/raw/raw3 recid=1 stamp=778987902

 

cataloged datafile copy

datafile copy filename=/dev/raw/raw2 recid=2 stamp=778987902

 

cataloged datafile copy

datafile copy filename=/dev/raw/raw4 recid=3 stamp=778987902

 

datafile 2 switched to datafile copy

input datafile copy recid=1 stamp=778987902 filename=/dev/raw/raw3

datafile 3 switched to datafile copy

input datafile copy recid=2 stamp=778987902 filename=/dev/raw/raw2

datafile 4 switched to datafile copy

input datafile copy recid=3 stamp=778987902 filename=/dev/raw/raw4

 

contents of Memory Script:

{

   Alter clone database open resetlogs;

}

executing Memory Script

 

database opened

Finished Duplicate Db at 27-3月 -12

 

RMAN>

 

10)、驗證數據庫複製

[oracle@clone_sigle /]$ hostname

clone_sigle

[oracle@clone_sigle /]$ sq

[uniread] Loaded history (423 lines)

 

SQL*Plus: Release 10.2.0.4.0 - Production on 星期二 3月 27 01:36:32 2012

 

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

 

SQL> conn /as sysdba

Connected.

SQL> show parameter name

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_file_name_convert                 string

db_name                              string      orclaux

db_unique_name                       string      orclaux

global_names                         boolean     FALSE

instance_name                        string      orclaux

lock_name_space                      string

log_file_name_convert                string

service_names                        string      orclaux

SQL> select * from test_rman;

 

        T1 T2

---------- --------------

         1 23-3月 -12

 

SQL>

 

重啓數據庫後再進行一次驗證

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

 

Total System Global Area  486539264 bytes

Fixed Size                  1268196 bytes

Variable Size             138413596 bytes

Database Buffers          339738624 bytes

Redo Buffers                7118848 bytes

Database mounted.

Database opened.

SQL> show parameter name

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_file_name_convert                 string

db_name                              string      orclaux

db_unique_name                       string      orclaux

global_names                         boolean     FALSE

instance_name                        string      orclaux

lock_name_space                      string

log_file_name_convert                string

service_names                        string      orclaux

SQL>

SQL> select * from test_rman;

 

        T1 T2

---------- --------------

         1 23-3月 -12

 

SQL>

 

    至此,使用RMAN來進行數據庫複製的試驗結束,試驗達到了預期目標。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章