您的位置:首页 > 其它

RAC 实例 迁移到 单实例 -- 使用RMAN Duplicate

2014-07-21 11:08 330 查看
测试环境: Oracle 10gR2 RAC + Redhat 5.4 +ASM + RAW

源库:

       db_name=orcl  SID=orcc1/orcl2

       IP: 192.168.6.223/224

 

目标库:

       db_name=orcl SID=orcl

       IP:192.168.6.229

 

操作过程和RMAN 的异机复制有点类似。 区别在参数文件的处理上。

       RMAN 异机 复制数据库

       http://blog.csdn.net/tianlesoftware/archive/2010/07/20/5749932.aspx

 

 

一. 目标库的准备

1. 安装redhat 5.4 操作系统

2. 安装Oracle 软件, 这里只安装软件,不创建实例。

 

       参考:linux平台下oracle数据库安装

              http://blog.csdn.net/tianlesoftware/archive/2009/10/24/4718218.aspx

 

3. 建立相关目录

[oracle@singledb ~]$ mkdir -p /u01/app/oracle/admin/orcl/cdump

[oracle@singledb ~]$ mkdir -p /u01/app/oracle/admin/orcl/bdump

[oracle@singledb ~]$ mkdir -p /u01/app/oracle/admin/orcl/adump

[oracle@singledb ~]$ mkdir -p /u01/app/oracle/admin/orcl/udump

[oracle@singledb ~]$ mkdir -p /u01/app/oracle/admin/orcl/cdump

[oracle@singledb ~]$ mkdir -p /u01/app/oracle/flash_recovery_area/

[oracle@singledb ~]$ mkdir -p /u01/app/oracle/oradata/orcl/

 

 

二. 源库操作

1. 创建pfile文件

       SQL> create pfile from spfile;

       File created.

 

2. 将创建的pfile文件传到目标数据库的$ORACLE_HOME/dbs/ 目录下

[oracle@racdb1 ~]$ cd /u01/app/oracle/product/10.2.0/db_1/dbs/

[oracle@racdb1 dbs]$ ls

ab_+ASM1.dat  hc_orcl1.dat   initdw.ora  initorcl1.ora  orapworcl1

hc_+ASM1.dat  init+ASM1.ora  init.ora    orapw+ASM1

[oracle@racdb1 dbs]$ scp initorcl1.ora 192.168.6.229:/u01/app/oracle/product/10.2.0/db_1/dbs/

The authenticity of host '192.168.6.229 (192.168.6.229)' can't be established.

RSA key fingerprint is 2a:5a:fb:63:ca:64:75:68:86:f8:43:b3:0b:80:0e:7c.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.6.229' (RSA) to the list of known hosts.

oracle@192.168.6.229's password:

initorcl1.ora                                                     100% 1468     1.4KB/s   00:00   

 

确认一下:

[oracle@singledb dbs]$ pwd

/u01/app/oracle/product/10.2.0/db_1/dbs

[oracle@singledb dbs]$ ls

initdw.ora  init.ora  initorcl1.ora

 

 

3. 监听配置

在源库的的tnsnames.ora 文件里添加如下内容:

targetorcl =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.6.229)(PORT = 1521))

    (LOAD_BALANCE = yes)

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )

 

4.  备份源库,并将备份文件传到目标库的相同位置。 备份目录必须相同。

 

先创建备份目录

[root@racdb1 ~]# mkdir -p /u02/backup

[root@racdb1 ~]# chown -R oracle:oinstall /u02

[root@racdb1 ~]# chmod 777 /u02

 

用RMAN 全备数据库:

[oracle@racdb1 ~]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Sun Dec 5 18:00:02 2010

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

connected to target database: ORCL (DBID=1264379992)

RMAN> RUN {

allocate channel c1 type disk;

allocate channel c2 type disk;

BACKUP FORMAT '/u02/backup/orcl_%U_%T' skip inaccessible filesperset 5  DATABASE TAG orcl_hot_db_bk;

sql 'alter system archive log current';

BACKUP FORMAT '/u02/backup/arch_%U_%T' skip inaccessible filesperset 5 ARCHIVELOG ALL DELETE INPUT;

backup current controlfile tag='bak_ctlfile' format='/u02/backup/ctl_file_%U_%T';

backup spfile tag='spfile' format='/u02/backup/ORCL_spfile_%U_%T';

release channel c2;

release channel c1;

}

 

using target database control file instead of recovery catalog

allocated channel: c1

channel c1: sid=124 instance=orcl1 devtype=DISK

 

allocated channel: c2

channel c2: sid=146 instance=orcl1 devtype=DISK

 

Starting backup at 05-DEC-10

channel c1: starting full datafile backupset

channel c1: specifying datafile(s) in backupset

input datafile fno=00001 name=+DATA/orcl/datafile/system.256.736598559

input datafile fno=00004 name=+DATA/orcl/datafile/users.259.736598641

channel c1: starting piece 1 at 05-DEC-10

channel c2: starting full datafile backupset

channel c2: specifying datafile(s) in backupset

input datafile fno=00003 name=+DATA/orcl/datafile/sysaux.257.736598563

input datafile fno=00002 name=+DATA/orcl/datafile/undotbs1.258.736598599

input datafile fno=00005 name=+DATA/orcl/datafile/undotbs2.264.736599805

channel c2: starting piece 1 at 05-DEC-10

channel c2: finished piece 1 at 05-DEC-10

piece handle=/u02/backup/orcl_04luqhqp_1_1_20101205 tag=ORCL_HOT_DB_BK comment=NONE

channel c2: backup set complete, elapsed time: 00:08:21

channel c2: starting full datafile backupset

channel c2: specifying datafile(s) in backupset

including current control file in backupset

channel c2: starting piece 1 at 05-DEC-10

channel c1: finished piece 1 at 05-DEC-10

piece handle=/u02/backup/orcl_03luqhqp_1_1_20101205 tag=ORCL_HOT_DB_BK comment=NONE

channel c1: backup set complete, elapsed time: 00:09:37

channel c1: starting full datafile backupset

channel c1: specifying datafile(s) in backupset

including current SPFILE in backupset

channel c1: starting piece 1 at 05-DEC-10

channel c2: finished piece 1 at 05-DEC-10

piece handle=/u02/backup/orcl_05luqiaq_1_1_20101205 tag=ORCL_HOT_DB_BK comment=NONE

channel c2: backup set complete, elapsed time: 00:01:09

channel c1: finished piece 1 at 05-DEC-10

piece handle=/u02/backup/orcl_06luqicu_1_1_20101205 tag=ORCL_HOT_DB_BK comment=NONE

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

Finished backup at 05-DEC-10

 

sql statement: alter system archive log current

 

Starting backup at 05-DEC-10

current log archived

channel c1: starting archive log backupset

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

input archive log thread=1 sequence=3 recid=4 stamp=736718437

input archive log thread=1 sequence=4 recid=6 stamp=736752948

input archive log thread=1 sequence=5 recid=7 stamp=736772474

input archive log thread=1 sequence=6 recid=9 stamp=736893879

input archive log thread=1 sequence=7 recid=12 stamp=736944911

channel c1: starting piece 1 at 05-DEC-10

channel c2: starting archive log backupset

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

input archive log thread=1 sequence=2 recid=3 stamp=736718159

channel c2: starting piece 1 at 05-DEC-10

channel c1: finished piece 1 at 05-DEC-10

piece handle=/u02/backup/arch_07luqif5_1_1_20101205 tag=TAG20101205T181350 comment=NONE

channel c1: backup set complete, elapsed time: 00:00:59

channel c1: deleting archive log(s)

archive log filename=+FRA/archivelog/orcl/1_3_736599263.dbf recid=4 stamp=736718437

archive log filename=+FRA/archivelog/orcl/1_4_736599263.dbf recid=6 stamp=736752948

archive log filename=+FRA/archivelog/orcl/1_5_736599263.dbf recid=7 stamp=736772474

archive log filename=+FRA/archivelog/orcl/1_6_736599263.dbf recid=9 stamp=736893879

archive log filename=+FRA/archivelog/orcl/1_7_736599263.dbf recid=12 stamp=736944911

channel c2: finished piece 1 at 05-DEC-10

piece handle=/u02/backup/arch_08luqif6_1_1_20101205 tag=TAG20101205T181350 comment=NONE

channel c2: backup set complete, elapsed time: 00:01:01

channel c2: deleting archive log(s)

archive log filename=+FRA/archivelog/orcl/1_2_736599263.dbf recid=3 stamp=736718159

channel c1: starting archive log backupset

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

input archive log thread=2 sequence=3 recid=5 stamp=736752401

input archive log thread=2 sequence=4 recid=8 stamp=736772568

input archive log thread=2 sequence=5 recid=10 stamp=736893888

input archive log thread=2 sequence=6 recid=11 stamp=736944342

input archive log thread=2 sequence=7 recid=14 stamp=736968019

channel c1: starting piece 1 at 05-DEC-10

channel c2: starting archive log backupset

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

input archive log thread=1 sequence=8 recid=13 stamp=736968002

input archive log thread=1 sequence=9 recid=15 stamp=736971214

input archive log thread=1 sequence=10 recid=18 stamp=736971229

input archive log thread=2 sequence=1 recid=1 stamp=736717965

input archive log thread=2 sequence=2 recid=2 stamp=736718031

channel c2: starting piece 1 at 05-DEC-10

channel c1: finished piece 1 at 05-DEC-10

piece handle=/u02/backup/arch_09luqih3_1_1_20101205 tag=TAG20101205T181350 comment=NONE

channel c1: backup set complete, elapsed time: 00:00:30

channel c1: deleting archive log(s)

archive log filename=+FRA/archivelog/orcl/2_3_736599263.dbf recid=5 stamp=736752401

archive log filename=+FRA/archivelog/orcl/2_4_736599263.dbf recid=8 stamp=736772568

archive log filename=+FRA/archivelog/orcl/2_5_736599263.dbf recid=10 stamp=736893888

archive log filename=+FRA/archivelog/orcl/2_6_736599263.dbf recid=11 stamp=736944342

archive log filename=+FRA/archivelog/orcl/2_7_736599263.dbf recid=14 stamp=736968019

channel c2: finished piece 1 at 05-DEC-10

piece handle=/u02/backup/arch_0aluqih5_1_1_20101205 tag=TAG20101205T181350 comment=NONE

channel c2: backup set complete, elapsed time: 00:00:31

channel c2: deleting archive log(s)

archive log filename=+FRA/archivelog/orcl/1_8_736599263.dbf recid=13 stamp=736968002

archive log filename=+FRA/archivelog/orcl/1_9_736599263.dbf recid=15 stamp=736971214

archive log filename=+FRA/archivelog/orcl/1_10_736599263.dbf recid=18 stamp=736971229

archive log filename=+FRA/archivelog/orcl/2_1_736599263.dbf recid=1 stamp=736717965

archive log filename=+FRA/archivelog/orcl/2_2_736599263.dbf recid=2 stamp=736718031

channel c1: starting archive log backupset

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

input archive log thread=2 sequence=8 recid=16 stamp=736971215

input archive log thread=2 sequence=9 recid=17 stamp=736971223

channel c1: starting piece 1 at 05-DEC-10

channel c1: finished piece 1 at 05-DEC-10

piece handle=/u02/backup/arch_0bluqii4_1_1_20101205 tag=TAG20101205T181350 comment=NONE

channel c1: backup set complete, elapsed time: 00:00:04

channel c1: deleting archive log(s)

archive log filename=+FRA/archivelog
149b3
/orcl/2_8_736599263.dbf recid=16 stamp=736971215

archive log filename=+FRA/archivelog/orcl/2_9_736599263.dbf recid=17 stamp=736971223

Finished backup at 05-DEC-10

 

Starting backup at 05-DEC-10

channel c1: starting full datafile backupset

channel c1: specifying datafile(s) in backupset

including current control file in backupset

channel c1: starting piece 1 at 05-DEC-10

channel c1: finished piece 1 at 05-DEC-10

piece handle=/u02/backup/ctl_file_0cluqil1_1_1_20101205 tag=BAK_CTLFILE comment=NONE

channel c1: backup set complete, elapsed time: 00:00:37

Finished backup at 05-DEC-10

 

Starting backup at 05-DEC-10

channel c1: starting full datafile backupset

channel c1: specifying datafile(s) in backupset

including current SPFILE in backupset

channel c1: starting piece 1 at 05-DEC-10

channel c1: finished piece 1 at 05-DEC-10

piece handle=/u02/backup/ORCL_spfile_0dluqimo_1_1_20101205 tag=SPFILE comment=NONE

channel c1: backup set complete, elapsed time: 00:00:08

Finished backup at 05-DEC-10

 

released channel: c2

released channel: c1

 

       这里要注意, 我是把归档文件放在了ASM里,所以可以这样备份,如果不是这么放的,可能需要其他配置,具体参考:

       RAC 之 RMAN 备份

       http://blog.csdn.net/tianlesoftware/archive/2010/09/22/5901053.aspx

 

       Linux 平台下 RMAN 全备 和 增量备份 shell 脚本

       http://blog.csdn.net/tianlesoftware/archive/2010/07/16/5740630.aspx

 

 

三. 目标库操作

1. 创建目标库ORCL 的口令文件

[oracle@singledb dbs]$ cd $ORACLE_HOME/bin

[oracle@singledb bin]$ orapwd file=$ORACLE_HOME/dbs/orapworcl password=admin

[oracle@singledb bin]$ cd $ORACLE_HOME/dbs

[oracle@singledb dbs]$ ls

initdw.ora  init.ora  initorcl1.ora  orapworcl

 

windows下oracle默认的位置是$ORACLE_HOME/database目录,文件名格式是pwdSID.ora。

linux下oracle默认的位置是$ORACLE_HOME/dbs目录,文件名格式是orapwSID。

创建完后,数据库需要重启动,新的口令文件才能生效。

 

关于口令文件创建,详细内容参考blog:

       Oracle OS认证 口令文件 密码丢失处理

       http://blog.csdn.net/tianlesoftware/archive/2009/10/20/4698293.aspx

 

2. 创建备份目录

[root@singledb Server]# mkdir -p /u02/backup

 [root@singledb Server]# chown -R oracle:oinstall /u02

[root@singledb Server]# chmod 777 /u02

 

3. 配置监听

3.1 创建listener.ora 文件中,并添加如下内容

 

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)

      (PROGRAM = extproc)

    )

    (SID_DESC =

      (GLOBAL_DBNAME = orcl)

      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)

      (SID_NAME = orcl)

    )

  )

 

 

3.2 创建tnsnames.ora 文件,并添加如下内容

 

sourceorcl =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.6.223)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

      (INSTANCE_NAME = orcl1)

    )

  )

 

ORCL =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = orcl)

    )

  )

 

建议使用net manager 工具从界面来修改,这样不容易出错:

 

       Oracle 数据库监听配置

       http://blog.csdn.net/tianlesoftware/archive/2009/11/25/4861572.aspx

 

       Oracle Listener 动态注册 与 静态注册

       http://blog.csdn.net/tianlesoftware/archive/2010/04/30/5543166.aspx

 

4. 修改参数文件

       之前已经将参数文件传了过来。 我们先对参数文件重命名。

 

[oracle@singledb dbs]$ mv initorcl1.ora initorcl.ora -- 改成orcl

[oracle@singledb dbs]$ cat initorcl.ora

orcl2.__db_cache_size=117440512

orcl1.__db_cache_size=54525952

orcl1.__java_pool_size=4194304

orcl2.__java_pool_size=4194304

orcl1.__large_pool_size=4194304

orcl2.__large_pool_size=4194304

orcl2.__shared_pool_size=92274688

orcl1.__shared_pool_size=155189248

orcl1.__streams_pool_size=0

orcl2.__streams_pool_size=0

*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'

*.background_dump_dest='/u01/app/oracle/admin/orcl/bdump'

*.cluster_database_instances=2

*.cluster_database=true

*.compatible='10.2.0.1.0'

*.control_files='+DATA/orcl/controlfile/current.260.736599257','+FRA/orcl/controlfile/current.256.736599259'

*.core_dump_dest='/u01/app/oracle/admin/orcl/cdump'

*.db_block_size=8192

*.db_create_file_dest='+DATA'

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='orcl'

*.db_recovery_file_dest='+FRA'

*.db_recovery_file_dest_size=3040870400

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

orcl1.instance_number=1

orcl2.instance_number=2

*.job_queue_processes=10

*.log_archive_dest_1='LOCATION=+FRA/archivelog/orcl/'

*.log_archive_format='%t_%s_%r.dbf'

*.nls_language='SIMPLIFIED CHINESE'

*.nls_territory='AMERICA'

*.open_cursors=300

*.pga_aggregate_target=73400320

*.processes=150

*.remote_listener='LISTENERS_ORCL'

*.remote_login_passwordfile='exclusive'

*.sga_target=221249536

orcl2.thread=2

orcl1.thread=1

*.undo_management='AUTO'

orcl2.undo_tablespace='UNDOTBS2'

orcl1.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/u01/app/oracle/admin/orcl/udump'

[oracle@singledb dbs]$

 

红色部分就是我们需要删除或者修改的。

 

修改之后的pfile 文件如下:

[oracle@singledb dbs]$ cat initorcl.ora

*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'

*.background_dump_dest='/u01/app/oracle/admin/orcl/bdump'

*.cluster_database=false

*.compatible='10.2.0.1.0'

*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl','/u01/app/oracle/oradata/orcl/control03.ctl'

*.core_dump_dest='/u01/app/oracle/admin/orcl/cdump'

*.db_block_size=8192

*.db_create_file_dest='/u01/app/oracle/oradata/orcl/'

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='orcl'

*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area/'

*.db_recovery_file_dest_size=2147483648

*.job_queue_processes=10

*.log_archive_dest_1='LOCATION=/u01/archivelog/'

*.log_archive_format='%t_%s_%r.arch'

*.open_cursors=300

*.pga_aggregate_target=150229440

*.processes=150

*.remote_login_passwordfile='exclusive'

*.sga_target=359785472

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/u01/app/oracle/admin/orcl/udump'

*.log_file_name_convert=('+DATA/orcl/onlinelog','/u01/app/oracle/oradata/orcl')

*.log_file_name_convert=('+FRA/orcl/onlinelog','/u01/app/oracle/oradata/orcl')

*.db_file_name_convert=('+DATA/orcl/datafile','/u01/app/oracle/oradata/orcl')

*.db_file_name_convert=('+DATA/orcl/tempfile','/u01/app/oracle/oradata/orcl')

 

 

       注意最后两行,因为RAC的目录结构和我们的单实例不一样,所以我们这里进行转换一下。 这里面要根据自己的情况来决定。 比如我将redo 放到了FRA了。所以在这里也需要进行转换。

 

这里可以根据RMAN duplicate的命令进行判断:

RMAN> duplicate target database to orcl;

..

RMAN-05001: auxiliary filename +FRA/orcl/onlinelog/group_2.258.736599295 conflicts with a file used by the target database

 

这是我测试时遇到的问题。 把FRA也做一下转换就搞定了。

 

如果这里不写这个参数的话,那么在RMAN恢复的时候就需要用命令转换。 如:

       SET NEWNAME FOR DATAFILE 1 to '/u01/app/oracle/oradata/orcl/sys01.dbf';

 

 

查看文件位置:

SQL> select file#,name from v$datafile;

     FILE# NAME

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

         1 +DATA/orcl/datafile/system.256.736598559

         2 +DATA/orcl/datafile/undotbs1.258.736598599

         3 +DATA/orcl/datafile/sysaux.257.736598563

         4 +DATA/orcl/datafile/users.259.736598641

         5 +DATA/orcl/datafile/undotbs2.264.736599805

SQL> select file#,name from v$tempfile;

     FILE# NAME

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

         1 +DATA/orcl/tempfile/temp.263.73659950

SQL> select member from v$logfile;

MEMBER

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

+DATA/orcl/onlinelog/group_2.262.736599285

+FRA/orcl/onlinelog/group_2.258.736599295

+DATA/orcl/onlinelog/group_1.261.736599263

+FRA/orcl/onlinelog/group_1.257.736599275

+DATA/orcl/onlinelog/group_3.265.736600119

+FRA/orcl/onlinelog/group_3.259.736600137

+DATA/orcl/onlinelog/group_4.266.736600151

+FRA/orcl/onlinelog/group_4.260.736600165

8 rows selected.

 

5. 用SCP将源库的备份copy到目标库

[oracle@singledb admin]$ scp 192.168.6.223:/u02/backup/* /u02/backup

oracle@192.168.6.223's password:

arch_07luqif5_1_1_20101205                                        100%   56MB 909.4KB/s   01:03   

arch_08luqif6_1_1_20101205                                        100%   50MB 711.1KB/s   01:12   

arch_09luqih3_1_1_20101205                                        100%   43MB   1.3MB/s   00:34   

arch_0aluqih5_1_1_20101205                                        100%   22MB 933.7KB/s   00:24   

arch_0bluqii4_1_1_20101205                                        100% 1341KB 670.3KB/s   00:02   

ctl_file_0cluqil1_1_1_20101205                                    100%   15MB 998.4KB/s   00:15   

orcl_03luqhqp_1_1_20101205                                        100%  354MB   1.3MB/s   04:42   

orcl_04luqhqp_1_1_20101205                                        100%  210MB   2.3MB/s   01:31   

orcl_05luqiaq_1_1_20101205                                        100%   15MB   2.9MB/s   00:05   

orcl_06luqicu_1_1_20101205                                        100%   96KB  96.0KB/s   00:01   

ORCL_spfile_0dluqimo_1_1_20101205                                 100%   96KB  96.0KB/s   00:00   

[oracle@singledb admin]$

 

 

6. 将目标库启动到nomount 状态,并进行duplicate
 
6.1 启动目标库到nomount状态
 
[oracle@singledb dbs]$ export ORACLE_SID=orcl
[oracle@singledb dbs]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Dec 7 18:47:36 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup nomount;
ORACLE instance started.
 
Total System Global Area  360710144 bytes
Fixed Size                  1219424 bytes
Variable Size             109053088 bytes
Database Buffers          247463936 bytes
Redo Buffers                2973696 bytes
SQL>
 
6.2 进行duplicate
[oracle@singledb dbs]$ tnsping sourceorcl
TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 07-DEC-2010 18:49:35
Copyright (c) 1997, 2005, Oracle.  All rights reserved.
Used parameter files:
 
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.6.223)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) (INSTANCE_NAME = orcl1)))
OK (200 msec)
 
[oracle@singledb dbs]$ rman target sys/h2oiswater@sourceorcl auxiliary /
Recovery Manager: Release 10.2.0.1.0 - Production on Tue Dec 7 18:54:37 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
connected to target database: ORCL (DBID=1264379992)
connected to auxiliary database: ORCL (not mounted)
RMAN>duplicate target database to orcl;
-- 这里要注意, 因为我是将RAC的归档文件放在ASM上的,所以可以这么写。 如果归档不是这么放的,就需要手工配置通过。如

       run{

              allocate channel d1 type disk connect sys/oracle@rac1;

              allocate channel d2 type disk connect sys/oracle@rac2;

              allocate auxiliary channel d3 type disk;

              duplicate target database to orcl;   

       }

 
RMAN> duplicate target database to orcl;
 
Starting Duplicate Db at 07-DEC-10
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: sid=155 devtype=DISK
 
contents of Memory Script:
{
   set until scn  861023;
   set newname for datafile  1 to
 "/u01/app/oracle/oradata/orcl/system.256.736598559"; -- 在pfile里设置的参数
   set newname for datafile  2 to
 "/u01/app/oracle/oradata/orcl/undotbs1.258.736598599";
   set newname for datafile  3 to
 "/u01/app/oracle/oradata/orcl/sysaux.257.736598563";
   set newname for datafile  4 to
 "/u01/app/oracle/oradata/orcl/users.259.736598641";
   set newname for datafile  5 to
 "/u01/app/oracle/oradata/orcl/undotbs2.264.736599805";
   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
executing command: SET NEWNAME
 
Starting restore at 07-DEC-10
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 00002 to /u01/app/oracle/oradata/orcl/undotbs1.258.736598599
restoring datafile 00003 to /u01/app/oracle/oradata/orcl/sysaux.257.736598563
restoring datafile 00005 to /u01/app/oracle/oradata/orcl/undotbs2.264.736599805
-- 先将数据从备份集中restore 到/u01/app/oracle/oradata/orcl目录
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/orcl_0fluu1ac_1_1_20101207
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/u02/backup/orcl_0fluu1ac_1_1_20101207 tag=ORCL_HOT_DB_BK
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:55
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 /u01/app/oracle/oradata/orcl/system.256.736598559
restoring datafile 00004 to /u01/app/oracle/oradata/orcl/users.259.736598641
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/orcl_0eluu1aa_1_1_20101207
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/u02/backup/orcl_0eluu1aa_1_1_20101207 tag=ORCL_HOT_DB_BK
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:05
Finished restore at 07-DEC-10
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "ORCL"
-- 创建控制文件
RESETLOGS ARCHIVELOG
  MAXLOGFILES    192
  MAXLOGMEMBERS      3
  MAXDATAFILES     1024
  MAXINSTANCES    32
  MAXLOGHISTORY      292
 LOGFILE
  GROUP  1 ( '/u01/app/oracle/oradata/orcl/group_1.261.736599263', '/u01/app/oracle/oradata/orcl/group_1.257.736599275' ) SIZE 50 M REUSE,
  GROUP  2 ( '/u01/app/oracle/oradata/orcl/group_2.262.736599285', '/u01/app/oracle/oradata/orcl/group_2.258.736599295' ) SIZE 50 M REUSE
 DATAFILE
  '/u01/app/oracle/oradata/orcl/system.256.736598559'
 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=737150574 filename=/u01/app/oracle/oradata/orcl/undotbs1.258.736598599
datafile 3 switched to datafile copy
input datafile copy recid=2 stamp=737150574 filename=/u01/app/oracle/oradata/orcl/sysaux.257.736598563
datafile 4 switched to datafile copy
input datafile copy recid=3 stamp=737150574 filename=/u01/app/oracle/oradata/orcl/users.259.736598641
datafile 5 switched to datafile copy
input datafile copy recid=4 stamp=737150574 filename=/u01/app/oracle/oradata/orcl/undotbs2.264.736599805
 
contents of Memory Script:
{
   set until scn  861023;
   recover
   clone database
    delete archivelog
   ;
}
executing Memory Script
 
executing command: SET until clause
 
Starting recover at 07-DEC-10
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: sid=155 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
-- restore 归档文件
archive log thread=2 sequence=11
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/arch_0hluu1q6_1_1_20101207
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/u02/backup/arch_0hluu1q6_1_1_20101207 tag=TAG20101207T015407
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:04
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=12
channel ORA_AUX_DISK_1: restoring archive log
archive log thread=1 sequence=13
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/arch_0iluu1q7_1_1_20101207
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/u02/backup/arch_0iluu1q7_1_1_20101207 tag=TAG20101207T015407
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
archive log filename=/u01/archivelog/1_12_736599263.arch thread=1 sequence=12
archive log filename=/u01/archivelog/2_11_736599263.arch thread=2 sequence=11
channel clone_default: deleting archive log(s)
archive log filename=/u01/archivelog/2_11_736599263.arch recid=1 stamp=737150585
channel ORA_AUX_DISK_1: starting archive log restore to default destination
channel ORA_AUX_DISK_1: restoring archive log
archive log thread=2 sequence=12
channel ORA_AUX_DISK_1: reading from backup piece /u02/backup/arch_0jluu1qu_1_1_20101207
channel ORA_AUX_DISK_1: restored backup piece 1
piece handle=/u02/backup/arch_0jluu1qu_1_1_20101207 tag=TAG20101207T015407
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
archive log filename=/u01/archivelog/2_12_736599263.arch thread=2 sequence=12
channel clone_default: deleting archive log(s)
archive log filename=/u01/archivelog/1_12_736599263.arch recid=3 stamp=737150587
archive log filename=/u01/archivelog/1_13_736599263.arch thread=1 sequence=13
channel clone_default: deleting archive log(s)
archive log filename=/u01/archivelog/1_13_736599263.arch recid=2 stamp=737150587
channel clone_default: deleting archive log(s)
archive log filename=/u01/archivelog/2_12_736599263.arch recid=4 stamp=737150593
media recovery complete, elapsed time: 00:00:06
Finished recover at 07-DEC-10
 
contents of Memory Script:
{
   shutdown clone;
   startup clone nomount ;
}
executing Memory Script
-- 如果在这里卡住,就检查一下有没有session窗口是开的,有关闭即可
 
database dismounted
Oracle instance shut down
 
connected to auxiliary database (not started)
Oracle instance started
 
Total System Global Area     360710144 bytes
 
Fixed Size                     1219424 bytes
Variable Size                109053088 bytes
Database Buffers             247463936 bytes
Redo Buffers                   2973696 bytes
sql statement: CREATE CONTROLFILE REUSE SET DATABASE "ORCL" RESETLOGS ARCHIVELOG
  MAXLOGFILES    192
  MAXLOGMEMBERS      3
  MAXDATAFILES     1024
  MAXINSTANCES    32
  MAXLOGHISTORY      292
 LOGFILE
  GROUP  1 ( '/u01/app/oracle/oradata/orcl/group_1.261.736599263', '/u01/app/oracle/oradata/orcl/group_1.257.736599275' ) SIZE 50 M REUSE,
  GROUP  2 ( '/u01/app/oracle/oradata/orcl/group_2.262.736599285', '/u01/app/oracle/oradata/orcl/group_2.258.736599295' ) SIZE 50 M REUSE
 DATAFILE
  '/u01/app/oracle/oradata/orcl/system.256.736598559'
 CHARACTER SET ZHS16GBK
 
 
contents of Memory Script:
{
   set newname for tempfile  1 to
 "/u01/app/oracle/oradata/orcl/temp.263.736599505";
   switch clone tempfile all;
   catalog clone datafilecopy  "/u01/app/oracle/oradata/orcl/undotbs1.258.736598599";
   catalog clone datafilecopy  "/u01/app/oracle/oradata/orcl/sysaux.257.736598563";
   catalog clone datafilecopy  "/u01/app/oracle/oradata/orcl/users.259.736598641";
   catalog clone datafilecopy  "/u01/app/oracle/oradata/orcl/undotbs2.264.736599805";
   switch clone datafile all;
}
executing Memory Script
 
executing command: SET NEWNAME
 
renamed temporary file 1 to /u01/app/oracle/oradata/orcl/temp.263.736599505 in control file
 
cataloged datafile copy
datafile copy filename=/u01/app/oracle/oradata/orcl/undotbs1.258.736598599 recid=1 stamp=737150639
 
cataloged datafile copy
datafile copy filename=/u01/app/oracle/oradata/orcl/sysaux.257.736598563 recid=2 stamp=737150640
 
cataloged datafile copy
datafile copy filename=/u01/app/oracle/oradata/orcl/users.259.736598641 recid=3 stamp=737150641
 
cataloged datafile copy
datafile copy filename=/u01/app/oracle/oradata/orcl/undotbs2.264.736599805 recid=4 stamp=737150642
 
datafile 2 switched to datafile copy
input datafile copy recid=1 stamp=737150639 filename=/u01/app/oracle/oradata/orcl/undotbs1.258.736598599
datafile 3 switched to datafile copy
input datafile copy recid=2 stamp=737150640 filename=/u01/app/oracle/oradata/orcl/sysaux.257.736598563
datafile 4 switched to datafile copy
input datafile copy recid=3 stamp=737150641 filename=/u01/app/oracle/oradata/orcl/users.259.736598641
datafile 5 switched to datafile copy
input datafile copy recid=4 stamp=737150642 filename=/u01/app/oracle/oradata/orcl/undotbs2.264.736599805
 
contents of Memory Script:
{
   Alter clone database open resetlogs;
}
executing Memory Script
 
database opened
Finished Duplicate Db at 07-DEC-10
 
RMAN>
 
至此,RMAN的duplicate 已经完成。 迁移基本完成。
 
 
四. 目标库的其他扫尾操作

 

4.1 清除多余的undo文件

查看UNDO 信息:

SQL> select name from v$tablespace where name like 'UNDO%';

NAME

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

UNDOTBS1

UNDOTBS2

 

因为我们使用的是UNDOTBS1,在pfile里设置的,所以把UNDOTBS2删除掉。

 

SQL> show parameter undo_tablespace;

NAME                                 TYPE        VALUE

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

undo_tablespace                      string      UNDOTBS1

SQL> drop tablespace undotbs2 including contents and datafiles;

Tablespace dropped.

SQL> select name from v$tablespace where name like 'UNDO%';

NAME

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

UNDOTBS1

SQL>

 

 

4.2 清除未使用线程的redo日志组

默认情况下,RAC 环境下,每个实例都有2个redo。 在单实例下,就没有必要了。 我们删除点线程2的redo 信息。

 

SQL> select thread#,status,enabled from v$thread;

 

   THREAD# STATUS ENABLED

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

         1 OPEN   PUBLIC

         2 CLOSED PRIVATE

SQL>  select group#,thread#,archived,status from v$log;

 

    GROUP#    THREAD# ARC STATUS

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

         1          1 YES UNUSED

         2          1 NO  CURRENT

         3          2 NO  CURRENT

         4          2 YES UNUSED

SQL> alter database disable thread 2;

Database altered.

SQL> alter database clear unarchived logfile group 3;

Database altered.

SQL> alter database drop logfile group 3;

Database altered.

SQL> alter database drop logfile group 4;

Database altered.

SQL> select group#,thread#,archived,status from v$log;

 

    GROUP#    THREAD# ARC STATUS

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

         1          1 YES INACTIVE

         2          1 NO  CURRENT

 

现在就剩2个了。 一般的单实例是3个online redo。 我们在添加一组。

SQL> alter database add logfile group 3 ('/u01/app/oracle/oradata/orcl/redo03.log') size 10m;

Database altered.

SQL> select group#,thread#,archived,status from v$log;

 

    GROUP#    THREAD# ARC STATUS

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

         1          1 YES INACTIVE

         2          1 NO  CURRENT

         3          1 YES UNUSED

 

 

 

Redo 的相关信息,也可以参考:

       Redo Log 和Checkpoint not complete

       http://blog.csdn.net/tianlesoftware/archive/2009/12/01/4908066.aspx

 

       如何搭建一个数据库服务器平台

       http://blog.csdn.net/tianlesoftware/archive/2010/05/17/5602291.aspx

 

4.3 重建临时表空间,并删除原来的数据文件

SQL> select file#,name from v$tempfile;

     FILE# NAME

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

         1 /u01/app/oracle/oradata/orcl/temp.263.736599505

 

Temp 重建参考:

       Oracle Temp 临时表空间

       http://blog.csdn.net/tianlesoftware/archive/2009/10/19/4697417.aspx

 

 

4.4  OEM 配置

       手工用命令创建一下,也就几个命令。 参考:

       Oracle OEM 重建

       http://blog.csdn.net/tianlesoftware/archive/2009/10/21/4702978.aspx

 

 

 

 

小结:

       步骤和RMAN的异机复制基本差不多了。 就多加了几个参数。  月底公司服务器要搬迁,从绍兴的IDC机房搬到萧山的IDC机房。 有20台左右的服务器,还有盘柜。搬迁之后还要对数据库做一次迁移和升级。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: