Oracle 11gR2 使用 RMAN duplicate from active database 复制数据库

简介:

Oracle10g下,我们可以使用RMANduplicate命令创建一个具有不同DBID的复制库。到了Oracle11gR2RMANduplicate2种方法实现:

1.Activedatabaseduplication

2.Backup-basedduplication

Activedatabaseduplication通过网络,直接copytarget库到auxiliary库,然后创建复制库。这种方法就不需要先用RMAN备份数据库,然后将备份文件发送到auxiliary端。

这个功能的作用是非常大的。尤其是对T级别的库。因为对这样的库进行备份,然后将备份集发送到备库,在进行duplicate的代价是非常大的。一备份要占用时间,二要占用备份空间,三在网络传送的时候,还需要占用带宽和时间。所以Activedatabaseduplicate很好的解决了以上的问题。它对大库的迁移非常有用。

如果是从RACduplicate到单实例,操作是一样的。如果是从单实例duplicateRAC那么先duplicate单实例。然后将单实例转换成RAC

下面我们看一下11gR2下,ActiveDatabaseDuplicate的步骤如下:

1.创建Auxiliary库的InitializationParameter

如果使用spfile,那么在pfile文件里只需要设置一个DB_NAME参数,其他参数会在duplicate命令中自己设置。

如果使用pfile,那么需要设置如下参数:

DB_NAME

CONTROL_FILES

DB_BLOCK_SIZE

DB_FILE_NAME_CONVERT

LOG_FILE_NAME_CONVERT

DB_RECOVERY_FILE_DEST

2.Auxiliary库创建PasswordFile文件

对于Backup-basedduplicationPasswordFile不是必须的,但是对于ActiveDatabaseDuplicationPasswordFile是必须的。因为ActiveDatabaseDuplication使用相同的SYSDBA密码直接连接到auxiliary库。所以,确保targetAuxiliary库的SYSDBA密码一样很重要。

当然,我们也可以在duplicate命令中加上PASSWORDFILE选项(也是默认值),这样RMANcopy的时候也会从target库把密码文件copy过来,如果auxiliary库上已经存在了Passwordfile,那么该操作会重写那个文件。

如:

RMAN>DUPLICATETARGETDATABASETODave

2>FROMACTIVEDATABASE

3>NOFILENAMECHECK

4>PASSWORDFILE

5>SPFILE;

3.如果是windows平台,还需要创建Databaseservice

%setORACLE_SID=DAVE
%setORACLE_HOME=E:/oracle/product/11.1.0/db_1
%oradim-NEW-SIDDAVE

4.配置oraclenet,修改listener.orathetnsnames.ora文件:

Target库和Auxiliary都要修改。这个也可以使用netcanetmgr命令配置。

Listener.ora

[oracle@qs-dmm-rh1admin]$catlistener.ora

LISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=localhost6.localdomain6)(PORT=1521))

)

)

ADR_BASE_LISTENER=/u01/app/oracle

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(GLOBAL_DBNAME=orcl)

(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)

(SID_NAME=orcl)

)

)

tnsname.ora

[oracle@qs-dmm-rh1admin]$cattnsnames.ora

ORCL_ST=

(DESCRIPTION=

(ADDRESS_LIST=

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

)

(CONNECT_DATA=

(SERVICE_NAME=orcl)

)

)

ORCL_PD=

(DESCRIPTION=

(ADDRESS_LIST=

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

)

(CONNECT_DATA=

(SERVICE_NAME=orcl)

)

)

5.用第一步创建的pfile文件,将Auxiliary启动到nomout状态。然后进行ActiveDatabaseduplicate

我们看一个完整的复制示例:

TargetDB

IP:192.168.2.42

SIDorcl

Auxiliary

IP192.168.2.43

SID:orcl

我这里复制的目录相同。如果不同的话需要在pfile里面加入db_file_name_convertlog_file_name_convert.

1.Auxiliary创建pfile参数文件:

[oracle@qs-dmm-rh2dbs]$pwd

/u01/app/oracle/product/11.2.0/dbhome_1/dbs

[oracle@qs-dmm-rh2dbs]$catinitorcl.ora

DB_NAME=orcl

只有一个参数:DB_NAME

2.Auxiliary库上创建口令文件

[oracle@qs-dmm-rh2admin]$orapwdfile=?/dbs/orapworclpassword=oracle

3.Auxiliary库创建相关的目录结构:

[oracle@qs-dmm-rh2trace]$mkdir-p/u01/app/oracle/oradata/orcl

不然在duplicate时会报如下错误:

ORA-19505:failedtoidentifyfile"/u01/app/oracle/oradata/orcl/users01.dbf"

ORA-27040:filecreateerror,unabletocreatefile

4.启动Auxiliarynomout状态:

[oracle@qs-dmm-rh2admin]$sqlplus/nolog

SQL*Plus:Release11.2.0.1.0ProductiononTueMar800:28:482011

Copyright(c)1982,2009,Oracle.Allrightsreserved.

SQL>conn/assysdba;

Connectedtoanidleinstance.

SQL>startupnomountpfile=?/dbs/initorcl.ora

ORACLEinstancestarted.

TotalSystemGlobalArea146472960bytes

FixedSize1335080bytes

VariableSize92274904bytes

DatabaseBuffers50331648bytes

RedoBuffers2531328bytes

SQL>

5.TargetAuxiliary都配置OracleNetListener.oraandtnsnames.ora):

[oracle@qs-dmm-rh1admin]$catlistener.ora

LISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=localhost6.localdomain6)(PORT=1521))

)

)

ADR_BASE_LISTENER=/u01/app/oracle

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(GLOBAL_DBNAME=orcl)

(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)

(SID_NAME=orcl)

)

)

[oracle@qs-dmm-rh1admin]$cattnsnames.ora

ORCL_ST=

(DESCRIPTION=

(ADDRESS_LIST=

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

)

(CONNECT_DATA=

(SERVICE_NAME=orcl)

)

)

ORCL_PD=

(DESCRIPTION=

(ADDRESS_LIST=

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

)

(CONNECT_DATA=

(SERVICE_NAME=orcl)

)

)

6.开始RMANduplicatefromactivedatabase

注意:如果targetAuxiliary库的目录结构相同,记得加上nofilenamecheck参数,不然会报如下错误:

RMAN-05001:auxiliaryfilename/u01/app/oracle/oradata/orcl/users01.dbfconflictswithafileusedbythetargetdatabase

如果目录不同,在pfile里加如下2个参数进行转换:

db_file_name_convert

log_file_name_convert.

[oracle@qs-dmm-rh2dbs]$rmantargetsys/oracle@orcl_pdauxiliarysys/oracle@orcl_st

RecoveryManager:Release11.2.0.1.0-ProductiononTueMar801:01:422011

Copyright(c)1982,2009,Oracleand/oritsaffiliates.Allrightsreserved.

connectedtotargetdatabase:ORCL(DBID=1272955137)

connectedtoauxiliarydatabase:ORCL(notmounted)

RMAN>duplicatetargetdatabasetoorclfromactivedatabasenofilenamecheck;

StartingDuplicateDbat08-MAR-11

usingtargetdatabasecontrolfileinsteadofrecoverycatalog

allocatedchannel:ORA_AUX_DISK_1

channelORA_AUX_DISK_1:SID=20devicetype=DISK

contentsofMemoryScript:

{

sqlclone"createspfilefrommemory";

}

executingMemoryScript

sqlstatement:createspfilefrommemory

contentsofMemoryScript:

{

shutdowncloneimmediate;

startupclonenomount;

}

executingMemoryScript

Oracleinstanceshutdown

connectedtoauxiliarydatabase(notstarted)

Oracleinstancestarted

TotalSystemGlobalArea146472960bytes

FixedSize1335080bytes

VariableSize92274904bytes

DatabaseBuffers50331648bytes

RedoBuffers2531328bytes

contentsofMemoryScript:

{

sqlclone"altersystemsetdb_name=

''ORCL''comment=

''ModifiedbyRMANduplicate''scope=spfile";

sqlclone"altersystemsetdb_unique_name=

''ORCL''comment=

''ModifiedbyRMANduplicate''scope=spfile";

shutdowncloneimmediate;

startupcloneforcenomount

backupascopycurrentcontrolfileauxiliaryformat'/u01/app/oracle/product/11.2.0/dbhome_1/dbs/cntrlorcl.dbf';

alterclonedatabasemount;

}

executingMemoryScript

sqlstatement:altersystemsetdb_name=''ORCL''comment=''ModifiedbyRMANduplicate''scope=spfile

sqlstatement:altersystemsetdb_unique_name=''ORCL''comment=''ModifiedbyRMANduplicate''scope=spfile

Oracleinstanceshutdown

Oracleinstancestarted

TotalSystemGlobalArea146472960bytes

FixedSize1335080bytes

VariableSize92274904bytes

DatabaseBuffers50331648bytes

RedoBuffers2531328bytes

Startingbackupat08-MAR-11

allocatedchannel:ORA_DISK_1

channelORA_DISK_1:SID=43devicetype=DISK

channelORA_DISK_1:startingdatafilecopy

copyingcurrentcontrolfile

outputfilename=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_orcl.ftag=TAG20110308T010214RECID=3STAMP=745203735

channelORA_DISK_1:datafilecopycomplete,elapsedtime:00:00:01

Finishedbackupat08-MAR-11

databasemounted

contentsofMemoryScript:

{

setnewnamefordatafile1to

"/u01/app/oracle/oradata/orcl/system01.dbf";

setnewnamefordatafile2to

"/u01/app/oracle/oradata/orcl/sysaux01.dbf";

setnewnamefordatafile3to

"/u01/app/oracle/oradata/orcl/undotbs01.dbf";

setnewnamefordatafile4to

"/u01/app/oracle/oradata/orcl/users01.dbf";

backupascopyreuse

datafile1auxiliaryformat

"/u01/app/oracle/oradata/orcl/system01.dbf"datafile

2auxiliaryformat

"/u01/app/oracle/oradata/orcl/sysaux01.dbf"datafile

3auxiliaryformat

"/u01/app/oracle/oradata/orcl/undotbs01.dbf"datafile

4auxiliaryformat

"/u01/app/oracle/oradata/orcl/users01.dbf";

sql'altersystemarchivelogcurrent';

}

executingMemoryScript

executingcommand:SETNEWNAME

executingcommand:SETNEWNAME

executingcommand:SETNEWNAME

executingcommand:SETNEWNAME

Startingbackupat08-MAR-11

usingchannelORA_DISK_1

channelORA_DISK_1:startingdatafilecopy

--在这里开始copy数据文件,比较慢。

inputdatafilefilenumber=00001name=/u01/app/oracle/oradata/orcl/system01.dbf

outputfilename=/u01/app/oracle/oradata/orcl/system01.dbftag=TAG20110308T010221

channelORA_DISK_1:datafilecopycomplete,elapsedtime:00:00:45

channelORA_DISK_1:startingdatafilecopy

inputdatafilefilenumber=00002name=/u01/app/oracle/oradata/orcl/sysaux01.dbf

outputfilename=/u01/app/oracle/oradata/orcl/sysaux01.dbftag=TAG20110308T010221

channelORA_DISK_1:datafilecopycomplete,elapsedtime:00:00:35

channelORA_DISK_1:startingdatafilecopy

inputdatafilefilenumber=00003name=/u01/app/oracle/oradata/orcl/undotbs01.dbf

outputfilename=/u01/app/oracle/oradata/orcl/undotbs01.dbftag=TAG20110308T010221

channelORA_DISK_1:datafilecopycomplete,elapsedtime:00:00:15

channelORA_DISK_1:startingdatafilecopy

inputdatafilefilenumber=00004name=/u01/app/oracle/oradata/orcl/users01.dbf

outputfilename=/u01/app/oracle/oradata/orcl/users01.dbftag=TAG20110308T010221

channelORA_DISK_1:datafilecopycomplete,elapsedtime:00:00:01

Finishedbackupat08-MAR-11

sqlstatement:altersystemarchivelogcurrent

contentsofMemoryScript:

{

backupascopyreuse

archiveloglike"/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_03_08/o1_mf_1_7_6qb3zyoo_.arc"auxiliaryformat

"/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_7_745174404.dbf";

catalogclonearchivelog"/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_7_745174404.dbf";

switchclonedatafileall;

}

executingMemoryScript

Startingbackupat08-MAR-11

usingchannelORA_DISK_1

channelORA_DISK_1:startingarchivedlogcopy

inputarchivedlogthread=1sequence=7RECID=3STAMP=745203841

outputfilename=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_7_745174404.dbfRECID=0STAMP=0

channelORA_DISK_1:archivedlogcopycomplete,elapsedtime:00:00:07

Finishedbackupat08-MAR-11

catalogedarchivedlog

archivedlogfilename=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_7_745174404.dbfRECID=3STAMP=745203848

datafile1switchedtodatafilecopy

inputdatafilecopyRECID=3STAMP=745203849filename=/u01/app/oracle/oradata/orcl/system01.dbf

datafile2switchedtodatafilecopy

inputdatafilecopyRECID=4STAMP=745203849filename=/u01/app/oracle/oradata/orcl/sysaux01.dbf

datafile3switchedtodatafilecopy

inputdatafilecopyRECID=5STAMP=745203849filename=/u01/app/oracle/oradata/orcl/undotbs01.dbf

datafile4switchedtodatafilecopy

inputdatafilecopyRECID=6STAMP=745203849filename=/u01/app/oracle/oradata/orcl/users01.dbf

contentsofMemoryScript:

{

setuntilscn844147;

recover

clonedatabase

deletearchivelog

;

}

executingMemoryScript

executingcommand:SETuntilclause

Startingrecoverat08-MAR-11

allocatedchannel:ORA_AUX_DISK_1

channelORA_AUX_DISK_1:SID=18devicetype=DISK

startingmediarecovery

archivedlogforthread1withsequence7isalreadyondiskasfile/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_7_745174404.dbf

archivedlogfilename=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_7_745174404.dbfthread=1sequence=7

mediarecoverycomplete,elapsedtime:00:00:01

Finishedrecoverat08-MAR-11

contentsofMemoryScript:

{

shutdowncloneimmediate;

startupclonenomount;

sqlclone"altersystemsetdb_name=

''ORCL''comment=

''ResettooriginalvaluebyRMAN''scope=spfile";

sqlclone"altersystemresetdb_unique_namescope=spfile";

shutdowncloneimmediate;

startupclonenomount;

}

executingMemoryScript

databasedismounted

Oracleinstanceshutdown

connectedtoauxiliarydatabase(notstarted)

Oracleinstancestarted

TotalSystemGlobalArea146472960bytes

FixedSize1335080bytes

VariableSize92274904bytes

DatabaseBuffers50331648bytes

RedoBuffers2531328bytes

sqlstatement:altersystemsetdb_name=''ORCL''comment=''ResettooriginalvaluebyRMAN''scope=spfile

sqlstatement:altersystemresetdb_unique_namescope=spfile

Oracleinstanceshutdown

connectedtoauxiliarydatabase(notstarted)

Oracleinstancestarted

TotalSystemGlobalArea146472960bytes

FixedSize1335080bytes

VariableSize92274904bytes

DatabaseBuffers50331648bytes

RedoBuffers2531328bytes

sqlstatement:CREATECONTROLFILEREUSESETDATABASE"ORCL"RESETLOGSARCHIVELOG

MAXLOGFILES16

MAXLOGMEMBERS3

MAXDATAFILES100

MAXINSTANCES8

MAXLOGHISTORY292

LOGFILE

GROUP1('/u01/app/oracle/oradata/orcl/redo01.log')SIZE50MREUSE,

GROUP2('/u01/app/oracle/oradata/orcl/redo02.log')SIZE50MREUSE,

GROUP3('/u01/app/oracle/oradata/orcl/redo03.log')SIZE50MREUSE

DATAFILE

'/u01/app/oracle/oradata/orcl/system01.dbf'

CHARACTERSETZHS16GBK

contentsofMemoryScript:

{

setnewnamefortempfile1to

"/u01/app/oracle/oradata/orcl/temp01.dbf";

switchclonetempfileall;

catalogclonedatafilecopy"/u01/app/oracle/oradata/orcl/sysaux01.dbf",

"/u01/app/oracle/oradata/orcl/undotbs01.dbf",

"/u01/app/oracle/oradata/orcl/users01.dbf";

switchclonedatafileall;

}

executingMemoryScript

executingcommand:SETNEWNAME

renamedtempfile1to/u01/app/oracle/oradata/orcl/temp01.dbfincontrolfile

catalogeddatafilecopy

datafilecopyfilename=/u01/app/oracle/oradata/orcl/sysaux01.dbfRECID=1STAMP=745203867

catalogeddatafilecopy

datafilecopyfilename=/u01/app/oracle/oradata/orcl/undotbs01.dbfRECID=2STAMP=745203867

catalogeddatafilecopy

datafilecopyfilename=/u01/app/oracle/oradata/orcl/users01.dbfRECID=3STAMP=745203867

datafile2switchedtodatafilecopy

inputdatafilecopyRECID=1STAMP=745203867filename=/u01/app/oracle/oradata/orcl/sysaux01.dbf

datafile3switchedtodatafilecopy

inputdatafilecopyRECID=2STAMP=745203867filename=/u01/app/oracle/oradata/orcl/undotbs01.dbf

datafile4switchedtodatafilecopy

inputdatafilecopyRECID=3STAMP=745203867filename=/u01/app/oracle/oradata/orcl/users01.dbf

contentsofMemoryScript:

{

Alterclonedatabaseopenresetlogs;

}

executingMemoryScript

databaseopened

FinishedDuplicateDbat08-MAR-11

RMAN>

复制结束。查询:

Target库:

SQL>selectname,dbidfromv$database;

NAMEDBID

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

ORCL1272955137

Auxiliary库:

SQL>selectname,dbidfromv$database;

NAMEDBID

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

ORCL1272984602














本文转自东方之子736651CTO博客,原文链接:http://blog.51cto.com/ecloud/1323025 ,如需转载请自行联系原作者



相关文章
|
7月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
642 93
|
6月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】使用NetManager创建Oracle数据库的监听器
Oracle NetManager是数据库网络配置工具,用于创建监听器、配置服务命名与网络连接,支持多数据库共享监听,确保客户端与服务器通信顺畅。
348 0
|
9月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
7月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
508 8
|
9月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
445 11
|
9月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—服务器异常断电导致Oracle数据库报错的数据恢复案例
Oracle数据库故障: 某公司一台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。该Oracle数据库没有备份,仅有一些断断续续的归档日志。 Oracle数据库恢复流程: 1、检测数据库故障情况; 2、尝试挂起并修复数据库; 3、解析数据库文件; 4、导出并验证恢复的数据库文件。
|
9月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。
265 0
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
2422 28
|
10月前
|
存储 Oracle 关系型数据库
oracle数据恢复—oracle数据库执行错误truncate命令的数据恢复案例
oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原报错等。下面和大家分享一例oracle数据库误执行truncate命令导致数据丢失的数据库数据恢复过程。
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回数据库
Oracle闪回数据库功能类似于“倒带按钮”,可快速将数据库恢复至 earlier 状态,无需还原备份。本文介绍了闪回数据库的使用方法及实战案例:包括设置归档模式、开启闪回功能、记录SCN号、执行误操作后的恢复步骤等。通过具体 SQL 操作演示了如何利用闪回数据库恢复被误删的用户数据。注意,使用此功能前需确保数据库为归档模式。
417 9

热门文章

最新文章

推荐镜像

更多
下一篇
开通oss服务