[三思笔记]-RMAN高级应用-Duplicate复制数据库:5454589君三思[[[[三思笔记]]]]RMANRMANRMANRMAN高级应用之DuplicateDuplicateDuplicateDuplicate复制数据库本系列中涉及到不少初级概念,比如不完全恢复啦,Catalog啦,通道啦之类,如果兄台对一些基础概念仍有不解,建议先参阅我之前写的“一步一步学RMAN”系列。----君三思junsansi@sina.com第一篇基本概述............................................................................................................................................................2007.10.152007.10.152007.10.152007.10.15第二篇创建辅助实例............................................................................................................................2007.10.182007.10.182007.10.182007.10.18第三篇不同环境下的复制流程............................................................2007.10.202007.10.202007.10.202007.10.20第四篇实战............................................................................................................................................................................................2007.10.222007.10.222007.10.222007.10.22第五篇附录............................................................................................................................................................................................2007.10.232007.10.232007.10.232007.10.23[三思笔记]-RMAN高级应用-Duplicate复制数据库:5454589君三思第一篇基本概述2007.10.152007.10.152007.10.152007.10.15CreatingCreatingCreatingCreatingaaaaDuplicateDuplicateDuplicateDuplicateDatabaseDatabaseDatabaseDatabasewithwithwithwithRMAN:RMAN:RMAN:RMAN:OverviewOverviewOverviewOverview使用RMANDUPLICATE命令可以在保留目标数据库的基础上依靠目标数据库(TargetDatabase)的备份创建一个副本数据库(DuplicateDatabase)。该副本即可与目标数据库完全相同,也可仅包含目标数据库表空间的一部子集。目标站点(TargetSite)以及副本站点(DuplicateSite)甚至可以在同一台机器上。哈哈,使用Duplicate命令创建Duplicate数据库,所谓术业有专攻仅字面意义理解用到这里也算名有所指了吧:)副本数据库呢是目标数据库的一个拷贝。言下之义即是说可以把它当成很正式的测试数据库,想干嘛干嘛:),比如:测试备份和恢复过程。导出数据,例如在生产数据库上被有意无意删除的表,然后你就可以再将其导入生产数据库。再比如,你可以从Host1复制生产数据库到Host2,然后使用Host2上的副本数据库实践修复、恢复等操作,而生产数据库则完全不受其影响。需要注意的是,虽然都可以通过Duplicate命令创建,但是副本数据库与备库(StandbyDatabase)还是有区别地。备库是主库(PrimaryDatabase)的一份拷贝,你可以根据主库的ArchivedLogs定期或不定期的更新它。如果主库崩溃,你还可以将其转换为主库使用。而副本数据库则并非为故障切换设计,而且也不支持这种Standby恢复和故障切换。(Duplicate命令创建备库与创建副本库只是语法上小有差异,但由于备库涉及的大部分操作均与duplicate无关联,所以本章节中不会体现,如有兴趣可以自行参照:OracleDataGuardConceptsandAdministration,或者你有足够的心耐心等俺出相关笔记,放心不出三五十年俺一定会写成的。)RMANRMANRMANRMAN如何创建数据库副本。首先需要创建一个辅助实例(auxiliaryinstance,至于如何创建嘛,本章是概述就不细致体现了,你要是着急想看,请翻页)。通过RMAN必须能够连接到目标数据库及启动到nomount模式下的辅助实例。至少在辅助实例上分配一条辅助通道,复制的主要工作都是通过在副本站点启动的服务器session的辅助通道实施的。然后应用主库的必要备份,并创建及恢复副本数据库。RMAN客户端可以在任何地方运行,只要能够连接到主、辅实例。所有可被副本站点访问到的备份以及archivedredologs都将被用于创建和恢复副本数据库。如果副本站点与目标站点不在一起,你必须确保副本站点的备份所在路径与主库路径一致,如果路径无法保持一致,则必须保证副本站点能够访问到备份所在路径。如果你使用的磁盘备份,可以通过下列方式确保路径可用:手工复制备份源站点到远程站点的相同路径。例如,源站点的备份文件在d:\oradata\bkp下,则复制到副本站点时也复制到d:\oradata\bkp目录下。手工操作备份从源站点到副本站点的新路径下,例如,源站点的备份文件在d:\oradata\bkp下,你可以将其复制到副本站点的d:\oradata\dup2下。d:\oradata\dup2对于目标站点和副本站点都要可访问到,运行Catalog命令添加这些备份到副本站点Rman备份集中。使用NFS共享磁盘来确保远程站点在相同路径下。如果使用的是磁带备份。。。。。。。。。。。。。。。。磁带这东西咱可没用过,如果你不想看使用说明书的话,那你就直接问上帝他老人家吧。[三思笔记]-RMAN高级应用-Duplicate复制数据库:5454589君三思做为复制操作的一部分,RMAN自动执行下列步骤:为副本数据库创建控制文件。Restore数据文件到副本数据库,并通过增量备份和ArchivedRedoLogs进行不完全恢复。重启辅助实例,以加载服务器端的初始化参数文件。不完全恢复后通过Resetlogs方式Open副本数据库以重建OnlineRedoLogs(Duplicate...ForStandby方式除外,该操作不会打开数据库)。为副本数据库产生一个新的,唯一的DBID(Duplicate...ForStandby方式除外,该方式不会创建新的唯一DBID)。在创建副本期间,RMAN必须进行不完全恢复,因为目标库的OnlineRedoLogs并不能时时备份并应用到副本数据库。RMAN最多也就能取到目标数据库最近一次备份的数据恢复到副本数据库。RMANRMANRMANRMAN数据库副本:可选操作为了避免你在创建副本数据库时,每次都翻着死鱼一样的白眼盯着黑乎乎的屏幕无所事事,oracle非常用心地提供了一些选项期望能让你每次的操作都可以不同如下:Duplicate命令可在Catalog或Nocatalog模式下运行(关于catalog的知识你可以找找三思的另一个系列:一步一步学RMAN)。使用SKIPREADONLY子句跳过只读表空间。默认情况下复制包含只读表空间。通过SKIPTABLESPACE子句跳过指定表空间。SYSTEM表空间或包含回滚、UNDO的表空间除外。可以将副本数据库创建到新站点,如果新站点的目录结构与主相同的话,必须指定NOFILENAMECHECK选项。从传统文件系统复制到ASM或OMF。默认情况下,DUPLICATE命令通过目标数据的最近一次备份创建副本数据库,并恢复到归档日志中的最近一致点。另外,你也可以使用RUN命令块,执行SETUNTIL命令,或者执行DUPLICATE命令时附带UNTIL子句,控制RMAN将副本数据库恢复到指定的时间点(不过,注意指定的时间点不要超出了备份的范围)。可以将副本数据库在相同恢复目录中注册成一个目标数据库,因为该副本数据库拥有一个新的唯一的DBID。在某些情况下,你可以设置副本数据库的DB_NAME与目标数据库DB_NAME不同,更明确的讲,如果副本数据库与目标库在相同的OracleHome,则DB_NAME的初始化参数必须不同。如果两者在不同的OracleHome,则副本数据库的DB_NAME在其所在的OracleHome中必须唯一。这才是副本数据库可以与目标库在相同站点的真正原因。[三思笔记]-RMAN高级应用-Duplicate复制数据库:5454589君三思第二篇创建辅助实例2007.10.182007.10.182007.10.182007.10.18PreparingPreparingPreparingPreparingthethethetheRMANRMANRMANRMANDUPLICATEDUPLICATEDUPLICATEDUPLICATEAuxiliaryAuxiliaryAuxiliaryAuxiliaryInstance:Instance:Instance:Instance:BasicBasicBasicBasicStepsStepsStepsSteps辅助实例是创建副本数据库的重要一步,一般而言会有下列几个步骤,有些你已经听说了,有些,你还从未听过。。。。。。。:一、创建辅助实例的密码文件(Create(Create(Create(CreateananananOracleOracleOracleOraclePasswordPasswordPasswordPasswordFileFileFileFileforforforforthethethetheAuxiliaryAuxiliaryAuxiliaryAuxiliaryInstance)Instance)Instance)Instance)Oracle提供了一个创建密码文件的命令:ORAPWD。该命令有两种调用方式,带参调用和不带参调用。不带参调用时,会返回该命令的调用方式和参数形式。F:\oracleorapwdUsage:orapwdfile=fnamepassword=passwordentries=usersforce=y/nwherefile-nameofpasswordfile(mand),password-passwordforSYS(mand),entries-maximumnumberofdistinctDBAandforce-whethertooverwriteexistingfile(opt),OPERs(opt),Therearenospacesaroundt