1/20用友股份-LE支持服务业务本部技术方案--《将数据库迁移到asm上的方法》建立日期:2013-10-20修改日期:xxxx-xx-xx文档属性:客户文控编号:LE-DY-JS-2013-01162/20文档控制创建记录适用范围审阅人日期审阅签字所属部门发布范围发布人姓名所属部门发布时间内部员工伙伴客户日期作者所属部门邮件地址版本2013-10-20白晓宇技术支持部V1.0版本领域模块备注3/20目录将数据库迁移到asm上的方法...............................................................................5步骤一:....................................................................................................................5步骤二:....................................................................................................................5步骤三:....................................................................................................................5步骤四:....................................................................................................................6步骤五:....................................................................................................................6步骤六:....................................................................................................................9步骤七:....................................................................................................................9步骤八:..................................................................................................................12步骤九:..................................................................................................................12步骤十:..................................................................................................................12步骤十一:..............................................................................................................12步骤十二:..............................................................................................................13步骤十三:..............................................................................................................13步骤十四:..............................................................................................................13步骤十五:..............................................................................................................13步骤十六:..............................................................................................................14步骤十七:..............................................................................................................14步骤十八:..............................................................................................................154/20步骤十九:..........................................................................................................15步骤二十:..........................................................................................................16步骤二十一:......................................................................................................16步骤二十二:......................................................................................................165/20将数据库迁移到asm上的方法迁移前需要收集一些数据信息:步骤一:确定数据库文件的位置信息,生成rman命令文件,在以后迁移回老的存储的时候是有用的。如果磁盘空间足够大,能放下整个非asm的数据库和你的asm磁盘组,可以不用磁带,直接迁移。步骤二:Duringthemigrationprocessallflashbacklogsarediscarded.Asaresult,anyguaranteedrestorepointsinthedatabasebecomeunusable.Youshoulddropallguaranteedrestorepointsbeforeperformingthemigration.在迁移的过程中,闪回的日志都被丢弃,在迁移之前,要删除掉所有的确保restore点。步骤三:调整归档sys@TOASM.REGRESS.RDBMS.DEV.US.ORACLE.COM>shutdownimmediate数据库已经关闭。已经卸载数据库。ORACLE例程已经关闭。sys@TOASM.REGRESS.RDBMS.DEV.US.ORACLE.COM>startupmountORACLE例程已经启动。6/20TotalSystemGlobalArea612368384bytesFixedSize1250428bytesVariableSize171969412bytesDatabaseBuffers432013312bytesRedoBuffers7135232bytes数据库装载完毕。sys@TOASM.REGRESS.RDBMS.DEV.US.ORACLE.COM>alterdatabasearchivelog;数据库已更改。sys@TOASM.REGRESS.RDBMS.DEV.US.ORACLE.COM>alterdatabaseopen;步骤四:迁移前先备份数据库:步骤五:迁移数据文件到asm上RMAN>run{2>allocatechanneldev1typedisk;3>backupascopyINCREMENTALLEVEL0DATABASEformat'+SYS_DATA'tag'ora_asm_mig';4>}7/20分配的通道:dev1通道dev1:sid=146devtype=DISK启动backup于15-9月-13通道dev1:启动数据文件副本输入数据文件fno=00001name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\TOASM\SYSTEM01.DBF输出文件名=+SYS_DATA/toasm/datafile/system.269.826220663标记=ORA_ASM_MIGrecid=2时间戳=826220725通道dev1:数据文件复制完毕,经过时间:00:01:15通道dev1:启动数据文件副本输入数据文件fno=00003name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\TOASM\SYSAUX01.DBF输出文件名=+SYS_DATA/toasm/datafile/sysaux.270.826220733标记=ORA_ASM_MIGrecid=3时间戳=826220769通道dev1:数据文件复制完毕,经过时间:00:00:46通道dev1:启动数据文件副本输入数据文件fno=00002name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\TOASM\UNDOTBS01.DBF输出文件名=+SYS_DATA/toasm/datafile/undotbs1.271.826220777标记=ORA_ASM_MIGrecid=4时间戳=826220782通道dev1:数据文件复制完毕,经过时间:00:00:07通道dev1:启动数据文件副本8/20输入数据文件fno=00004name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\TOASM\USERS01.DBF输出文件名=+SYS_DATA/toasm/datafile/users.272.826220785标记=ORA_ASM_MIGrecid=5时间戳=826220786通道dev1:数据文件复制完毕,经过时间:00:00:03通道dev1:启动数据文件副本输入数据文件fno=00005name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\TOASM\TOASM.DBF输出文件名=+SYS_DATA/toasm/datafile/toasm.273.826220789标记=ORA_ASM_MIGrecid=6时间戳=826220790通道dev1:数据文件复制完毕,经过时间:00:00:03通道dev1:启动数据文件副本复制当前控制文件输出文件名=+SYS_DATA/toasm/controlfile/backup.274.826220791标记=ORA_ASM_MIGrecid=7时间戳=826220795通道dev1:数据文件复制完毕,经过时间:00:00:07通道dev1:启动增量级别0数据文件备份集通道dev1:正在指定备份集中的数据文件在备份集中包含当前的SPFILE通道dev1:正在启动段1于15-9月-13通道dev1:已完成段1于15-9月-139/20段句柄=+SYS_DATA/toasm/backupset/2013_09_15/nnsnn0_ora_asm_mig_0.275.826220801标记=ORA_ASM_MIG注释=NONE通道dev1:备份集已完成,经过时间:00:00:03完成backup于15-9月-13释放的通道:dev1步骤六:为了确保备份一致,在备份完后归档当前的redologRMAN>sql'altersystemarchivelogcurrent';步骤七:如果在迁移的过程中,数据库上有很多的活动,或是使用了多通道,在备份的过程完成后,需要做一个增量备份,来拷贝开始迁移后的改变。使用下面的命令:RMAN>backupincrementallevel1forrecoverofcopywithtag'ORA_ASM_MIG'database;RMAN>recovercopyofdatabasewithtag'ORA_ASM_MIG';RMAN>backupincrementallevel1forrecoverofcopywithtag'ORA_ASM_MIG'database;启动backup于15-9月-13分配的通道:ORA_DISK_1通道ORA_DISK_1:sid=146devtype=DISK通道ORA_DISK_1:启动增量级别1数据文件备份集10/20通道ORA_DISK_1:正在指定备份集中的数据文件输入数据文件fno=00001name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\TOASM\SYSTEM01.DBF输入数据文件fno=00003name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\TOASM\SYSAUX01.DBF输入数据文件fno=00002name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\TOASM\UNDOTBS01.DBF输入数据文件fno=00004name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\TOASM\USERS01.DBF输入数据文件fno=00005name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\TOASM\TOASM.DBF通道ORA_DISK_1:正在启动段1于15-9月-13通道ORA_DISK_1:已完成段1于15-9月-13段句柄=E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TOASM\BACKUPSET\2013_09_15\O1_MF_NNND1_TAG20130915T174949_93C0OZ05_.BKP标记=TAG20130915T174949注释=NONE通道ORA_DISK_1:备份集已完成,经过时间:00:00:35通道ORA_DISK_1:启动增量级别1数据文件备份集通道ORA_DISK_1:正在指定备份集中的数据文件备份集中包括当前控制文件在备份集中包含当前的SPFILE通道ORA_DISK_1:正在启动段1于15-9月-13通道ORA_DISK_1:已完成段1于15-9月-1311/20段句柄=E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TOASM\BACKUPSET\2013_09_15\O1_MF_NCSN1_TAG20130915T174949_93C0Q5B5_.BKP标记=TAG20130915T174949注释=NONE通道ORA_DISK_1:备份集已完成,经过时间:00:00:05完成backup于15-9月-13RMAN>recovercopyofdatabasewithtag'ORA_ASM_MIG';启动recover于15-9月-13使用通道ORA_DISK_1通道ORA_DISK_1:正在开始恢复增量数据文件备份集通道ORA_DISK_1:指定要恢复的数据文件副本恢复数据文件副本fno=00001名称=+SYS_DATA/toasm/datafile/system.269.826220663恢复数据文件副本fno=00002名称=+SYS_DATA/toasm/datafile/undotbs1.271.826220777恢复数据文件副本fno=00003名称=+SYS_DATA/toasm/datafile/sysaux.270.826220733恢复数据文件副本fno=00004名称=+SYS_DATA/toasm/datafile/users.272.826220785恢复数据文件副本fno=00005名称=+SYS_DATA/toasm/datafile/toasm.273.826220789通道ORA_DISK_1:正在读取备份段E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TOASM\BACKUPSET\2013_09_15\O1_MF_NNND1_TAG20130915T174949_93C0OZ05_.BKP通道ORA_DISK_1:已恢复备份段112/20段句柄=E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TOASM\BACKUPSET\2013_09_15\O1_MF_NNND1_TAG20130915T174949_93C0OZ05_.BKP标记=TAG20130915T174949通道ORA_DISK_1:恢复完成,用时:00:00:17完成recover于15-9月-13步骤八:在asm磁盘组中创建spfile的备份,使用下面的语句,spfile存在+sys_data/spfile下Run{Backupasbackupsetspfile;Restorespfileto‘+sys_data/spfile’;}如果数据库是standby数据库,停止managedrecoverymode;SQL>ALTERDATABASERECOVERMANAGEDSTANDBYDATABASECANCEL;步骤九:如果启用blockchangetracking,就禁用它:步骤十:关闭数据库RMAN>SHUTDOWNIMMEDIATE;步骤十一:创建一个init.ora指定新的spfile的位置,用它来启动实例:13/20Spfile=+sys_data/spfile使用init.ora启动实例:>startupnomountpfile='E:\asmdisks\init.ora';步骤十二:迁移控制文件到asm修改control_file初始化参数的值:sys@TOASM.REGRESS.RDBMS.DEV.US.ORACLE.COM>altersystemsetcontrol_files='+SYS_DATA/toasm/datafile/control01.dbf','+SYS_DATA/toasm/datafile/control02.dbf'scopele;步骤十三:修改flashrecoveryareabysettingDB_RECOVERY_FILE_DESTandDB_RECOVERY_FILE_DEST_SIZE.SQL>altersystemsetDB_RECOVERY_FILE_DEST_SIZE=100GSID='*';SQL>altersystemsetDB_RECOVERY_FILE_DEST='+flash_data/toasm'SID='*';步骤十四:关闭在用init.ora重启到nomount状态,这样是上面修改的参数生效步骤十五:在asm中创建控制文件RMAN>restorecontrolfilefrom'E:\oracle\product\10.2.0\oradata\toasm\control01.ctl';14/20启动restore于16-9月-13使用目标数据库控制文件替代恢复目录分配的通道:ORA_DISK_1通道ORA_DISK_1:sid=156devtype=DISK通道ORA_DISK_1:已复制控制文件副本输出文件名=+SYS_DATA/toasm/datafile/control01.dbf输出文件名=+SYS_DATA/toasm/datafile/control02.dbf完成restore于16-9月-13这步要注意了,此处的from后的控制文件,一定是我的当前正使用的控制文件,以为之前在执行backupcopy的时候,我的备份拷贝的信息都是保存在这个控制文件中的。如果使用的是之前备份或别的控制文件,那么在下面的switchdatabasetocopy的时候,就会由于控制文件找不到数据文件的拷贝而导致失败。步骤十六:启动实例到mount状态sys@TOASM.REGRESS.RDBMS.DEV.US.ORACLE.COM>alterdatabasemount;步骤十七:切换数据文件RMAN>switchdatabasetocopy;释放的通道:ORA_DISK_115/20数据文件1已切换成数据文件副本"+SYS_DATA/toasm/datafile/system.274.826314517"数据文件2已切换成数据文件副本"+SYS_DATA/toasm/datafile/undotbs1.275.826314653"数据文件3已切换成数据文件副本"+SYS_DATA/toasm/datafile/sysaux.267.826314607"数据文件4已切换成数据文件副本"+SYS_DATA/toasm/datafile/users.268.826314667"数据文件5已切换成数据文件副本"+SYS_DATA/toasm/datafile/toasm.273.826314671"步骤十八:Recoverdatabase步骤十九:迁移临时文件到asm上,RMAN>run{2>setnewnamefortempfile1to'+SYS_DATA/toasm/datafile/tempfile.dbf';3>switchtempfileall;4>}正在执行命令:SETNEWNAME临时文件1在控制文件中已重命名为+SYS_DATA/toasm/datafile/tempfile.dbf只是控制文件中更改了,磁盘组中没有创建临时文件。在打开数据库的时候就会自动创建了。16/20步骤二十:禁用flashbackdatabase,然后在启用它Alterdatabaseflashbackoff;Alterdatabaseflashbackon;步骤二十一:Changetracking文件不能被迁移,只能禁用,然后在指定到磁盘组中的一个位置上面:SQL>alterdatabasedisableblockchangetracking;SQL>ALTERDATABASEENABLEBLOCKCHANGETRACKINGUSINGFILE'+DISK';步骤二十二:打开数据库:Alterdatabaseopen;官网上就是这样做的,但是redolog没有放到asm中去,数据文件倒是放上去了。sys@TOASM.REGRESS.RDBMS.DEV.US.ORACLE.COM>selectnamefromv$tempfile;NAME--------------------------------------------------------------------------------+SYS_DATA/toasm/datafile/tempfile.dbf可以看到临时文件生成了。sys@TOASM.REGRESS.RDBMS.DEV.US.ORACLE.COM>selectnamefromv$datafile;NAME---------------------------------------------------------------------------------+SYS_DATA/toasm/datafile/system.274.82631451717/20+SYS_DATA/toasm/datafile/undotbs1.275.826314653+SYS_DATA/toasm/datafile/sysaux.267.826314607+SYS_DATA/toasm/datafile/users.268.826314667+SYS_DATA/toasm/datafile/toasm.273.826314671sys@TOASM.REGRESS.RDBMS.DEV.US.ORACLE.COM>selectmemberfromv$logfile;MEMBER------------------------------------------------------------------------------E:\ORACLE\PRODUCT\10.2.0\ORADATA\TOASM\REDO03.LOGE:\ORACLE\PRODUCT\10.2.0\ORADATA\TOASM\REDO02.LOGE:\ORACLE\PRODUCT\10.2.0\ORADATA\TOASM\REDO01.LOG下面要把在线日志文件也给迁过来(这里面就是用了一个简单的过程,添加几个新的,把旧的删除)sys@TOASM.REGRESS.RDBMS.DEV.US.ORACLE.COM>alterdatabaseaddlogfilegroup4'+SYS_data/toasm/redo04.log'size10m;数据库已更改。sys@TOASM.REGRESS.RDBMS.DEV.US.ORACLE.COM>alterdatabaseaddlogfilegroup5'+SYS_data/toasm/redo05.log'size10m;数据库已更改。sys@TOASM.REGRESS.RDBMS.DEV.US.ORACLE.COM>alterdatabaseaddlogfilegroup6'+SYS_data/toasm/redo06.log'size10m;sys@TOASM.REGRESS.RDBMS.DEV.US.ORACLE.COM>selectgroup#,statusfromv$log;GROUP#STATUS------------------------------------------1CURRENT2INACTIVE3INACTIVE4UNUSED5UNUSED6UNUSED18/20因为要删除1-3组redolog,先进行redolog的切换TEST>altersystemswitchlogfile;Systemaltered.TEST>/Systemaltered.TEST>/Systemaltered.可以看到当前使用的是第6组EST>selectgroup#,statusfromv$log;GROUP#STATUS--------------------------1ACTIVE2INACTIVE3INACTIVE4ACTIVE5ACTIVE6CURRENT但是第1组redolog的状态仍然为ACTIVE,手工执行一次checkpoingTEST>altersystemcheckpoint;1-5组redolog的状态都为INACTIVE了TEST>selectgroup#,statusfromv$log;GROUP#STATUS--------------------------1INACTIVE2INACTIVE3INACTIVE4INACTIVE5INACTIVE6CURRENT删除1-3组redologTEST>alterdatabasedroplogfilegroup1;Databasealtered.TEST>alterdatabasedroplogfilegroup2;Databasealtered.TEST>alterdatabasedroplogfilegroup3;19/20Databasealtered.************************************************在windows上使用asmcmdE:\oracle\product\10.2.0\db_1\BIN>setoracle_home=E:\oracle\product\10.2.0\db_1E:\oracle\product\10.2.0\db_1\BIN>asmcmd.batASMCMD>lsFLASH_DATA/SYS_DATA/TEST_DATA/USER_DATA/ASMCMD>cdsys_dataASMCMD>lsASMTEST/DB_UNKNOWN/TOASM/spfileASMCMD>help=ycommands:--------cddufindhelplslsctlsdgmkaliasmkdirpwdrmrmaliasASMCMD>Altersystemcheckpoint;都干了什么?SpecifyCHECKPOINTtoexplicitlyforceOracleDatabasetoperformacheckpoint,ensuringthatallchangesmadebycommittedtransactionsarewrittentodatafilesondisk.20/20Logstatus:UNUSED-Onlineredologhasneverbeenwrittento.Thisisthestateofaredologthatwasjustadded,orjustafteraRESETLOGS,whenitisnotthecurrentredolog.CURRENT-Currentredolog.Thisimpliesthattheredologisactive.Theredologcouldbeopenorclosed.ACTIVE-Logisactivebutisnotthecurrentlog.Itisneededforcrashrecovery.Itmaybeinuseforblockrecovery.Itmayormaynotbearchived.CLEARING-Logisbeingre-createdasanemptylogafteranALTERDATABASECLEARLOGFILEstatement.Afterthelogiscleared,thestatuschangestoUNUSED.CLEARING_CURRENT-Currentlogisbeingclearedofaclosedthread.ThelogcanstayinthisstatusifthereissomefailureintheswitchsuchasanI/Oerrorwritingthenewlogheader.INACTIVE-Logisnolongerneededforinstancerecovery.Itmaybeinuseformediarecovery.Itmightormightnotbearchived.