联系:手机/微信(+86 17813235971) QQ(107644445)
标题:ASM迁移至文件系统
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
--创建pfile文件 SQL> create pfile ='/tmp/pfile' from spfile; File created. SQL> exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production With the Partitioning, OLAP and Data Mining options --修改pfile中关于asm中的内容 control_files db_recovery_file_dest log_archive_dest_1 指定到文件系统 --登录rman [oracle@localhost tmp]$ rman target / Recovery Manager: Release 10.2.0.3.0 - Production on Mon Jun 27 12:48:26 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. connected to target database: TOS (DBID=1569606545) --执行backup as copy datafile RMAN> backup as copy datafile '+DATA/tos/datafile/users.276.754906035' format '/u01/oradata/tos/USERS01.dbf'; Starting backup at 27-JUN-11 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=141 devtype=DISK channel ORA_DISK_1: starting datafile copy input datafile fno=00004 name=+DATA/tos/datafile/users.276.754906035 output filename=/u01/oradata/tos/USERS01.dbf tag=TAG20110627T124853 recid=17 stamp=754922939 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07 Finished backup at 27-JUN-11 RMAN> backup as copy datafile '+DATA/tos/datafile/sysaux.271.754905929' format '/u01/oradata/tos/SYSAUX01.dbf'; Starting backup at 27-JUN-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy input datafile fno=00003 name=+DATA/tos/datafile/sysaux.271.754905929 output filename=/u01/oradata/tos/SYSAUX01.dbf tag=TAG20110627T124929 recid=18 stamp=754923029 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:05 Finished backup at 27-JUN-11 RMAN> backup as copy datafile '+DATA/tos/datafile/undotbs1.273.754906021' format '/u01/oradata/tos/UNDOTBS101.dbf'; Starting backup at 27-JUN-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy input datafile fno=00002 name=+DATA/tos/datafile/undotbs1.273.754906021 output filename=/u01/oradata/tos/UNDOTBS101.dbf tag=TAG20110627T125049 recid=19 stamp=754923057 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15 Finished backup at 27-JUN-11 RMAN> backup as copy datafile '+DATA/tos/datafile/system.270.754905833' format '/u01/oradata/tos/SYSTEM01.dbf'; Starting backup at 27-JUN-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy input datafile fno=00001 name=+DATA/tos/datafile/system.270.754905833 output filename=/u01/oradata/tos/SYSTEM01.dbf tag=TAG20110627T125112 recid=20 stamp=754923150 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:25 channel ORA_DISK_1: starting datafile copy copying current control file RMAN-03009: failure of backup command on ORA_DISK_1 channel at 06/27/2011 12:52:39 ORA-01580: error creating control backup file /u01/oradata/tos/SYSTEM01.dbf ORA-27038: created file already exists Additional information: 1 continuing other job steps, job failed will not be re-run channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset including current SPFILE in backupset channel ORA_DISK_1: starting piece 1 at 27-JUN-11 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03009: failure of backup command on ORA_DISK_1 channel at 06/27/2011 12:52:42 ORA-19504: failed to create file "/u01/oradata/tos/SYSTEM01.dbf" ORA-27038: created file already exists Additional information: 1 注:因为默认情况下,备份system数据文件是,会自动备份控制文件,这里因为system01.dbf已经备份好,而控制文件再次备份为该名称所以失败 RMAN> backup as copy datafile '+DATA/tos/datafile/example.272.754905995' format '/u01/oradata/tos/EXAMPLE01.dbf'; Starting backup at 27-JUN-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy input datafile fno=00005 name=+DATA/tos/datafile/example.272.754905995 output filename=/u01/oradata/tos/EXAMPLE01.dbf tag=TAG20110627T125341 recid=21 stamp=754923244 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25 Finished backup at 27-JUN-11 RMAN> backup as copy datafile '+DATA/tos/datafile/xff.274.754906027' format '/u01/oradata/tos/XFF01.dbf'; Starting backup at 27-JUN-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy input datafile fno=00006 name=+DATA/tos/datafile/xff.274.754906027 output filename=/u01/oradata/tos/XFF01.dbf tag=TAG20110627T125415 recid=22 stamp=754923257 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03 Finished backup at 27-JUN-11 RMAN> backup as copy datafile '+DATA/tos/datafile/xff.275.754906031' format '/u01/oradata/tos/XFF02.dbf'; Starting backup at 27-JUN-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy input datafile fno=00007 name=+DATA/tos/datafile/xff.275.754906031 output filename=/u01/oradata/tos/XFF02.dbf tag=TAG20110627T125507 recid=23 stamp=754923309 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:04 Finished backup at 27-JUN-11 RMAN> exit Recovery Manager complete. --登录sqlplus [oracle@localhost tmp]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.3.0 - Production on Mon Jun 27 12:55:29 2011 Copyright (c) 1982, 2006, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production With the Partitioning, OLAP and Data Mining options --备份控制文件 SQL> alter database backup controlfile to '/tmp/control.ctl'; Database altered. --关闭数据库 SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. --启动数据库只nomount状态 SQL> startup pfile='/tmp/pfile' nomount; ORACLE instance started. Total System Global Area 167772160 bytes Fixed Size 1260672 bytes Variable Size 79692672 bytes Database Buffers 79691776 bytes Redo Buffers 7127040 bytes SQL> exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production With the Partitioning, OLAP and Data Mining options [oracle@localhost tmp]$ rman target / Recovery Manager: Release 10.2.0.3.0 - Production on Mon Jun 27 12:58:22 2011 Copyright (c) 1982, 2005, Oracle. All rights reserved. connected to target database: tos (not mounted) --恢复控制文件 RMAN> restore controlfile from '/tmp/control.ctl'; Starting restore at 27-JUN-11 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=156 devtype=DISK channel ORA_DISK_1: copied control file copy output filename=/u01/oradata/tos/control01.ctl output filename=/u01/oradata/tos/control02.ctl Finished restore at 27-JUN-11 --启动数据库只mount状态 RMAN> alter database mount; database mounted released channel: ORA_DISK_1 --修改数据文件在控制文件中位置 RMAN> switch tablespace SYSTEM to copy; Starting implicit crosscheck backup at 27-JUN-11 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=156 devtype=DISK Finished implicit crosscheck backup at 27-JUN-11 Starting implicit crosscheck copy at 27-JUN-11 using channel ORA_DISK_1 Crosschecked 15 objects Finished implicit crosscheck copy at 27-JUN-11 searching for all files in the recovery area cataloging files... no files cataloged datafile 1 switched to datafile copy "/u01/oradata/tos/SYSTEM01.dbf" RMAN> switch tablespace UNDOTBS1 to copy; datafile 2 switched to datafile copy "/u01/oradata/tos/UNDOTBS101.dbf" RMAN> switch tablespace SYSAUX to copy; datafile 3 switched to datafile copy "/u01/oradata/tos/SYSAUX01.dbf" RMAN> switch tablespace USERS to copy; datafile 4 switched to datafile copy "/u01/oradata/tos/USERS01.dbf" RMAN> switch tablespace EXAMPLE to copy; datafile 5 switched to datafile copy "/u01/oradata/tos/EXAMPLE01.dbf" RMAN> switch tablespace XFF to copy; datafile 6 switched to datafile copy "/u01/oradata/tos/XFF01.dbf" datafile 7 switched to datafile copy "/u01/oradata/tos/XFF02.dbf" --恢复数据库 RMAN> recover database; Starting recover at 27-JUN-11 using channel ORA_DISK_1 starting media recovery archive log thread 1 sequence 9 is already on disk as file +DATA/tos/onlinelog/group_6.279.754906321 archive log filename=+DATA/tos/onlinelog/group_6.279.754906321 thread=1 sequence=9 media recovery complete, elapsed time: 00:00:03 Finished recover at 27-JUN-11 --打开数据库 RMAN> alter database open; RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of alter db command at 06/27/2011 13:00:36 ORA-01589: must use RESETLOGS or NORESETLOGS option for database open RMAN> alter database open resetlogs; database opened 注:不能直接使用open打开 RMAN> exit Recovery Manager complete. [oracle@localhost tmp]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.3.0 - Production on Mon Jun 27 13:02:53 2011 Copyright (c) 1982, 2006, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production With the Partitioning, OLAP and Data Mining options --增加redo log SQL> alter database add logfile group 1 '/u01/oradata/tos/redo01.log' size 10m; Database altered. SQL> alter database add logfile group 2 '/u01/oradata/tos/redo02.log' size 10m; Database altered. SQL> alter database add logfile group 3 '/u01/oradata/tos/redo03.log' size 10m; Database altered. --切换日志 SQL> alter system switch logfile; System altered. SQL> / System altered. SQL> / System altered. SQL> / System altered. --内存中数据写入硬盘 SQL> alter system checkpoint; System altered. --查询当前日志组状态 SQL> select group#,status from v$log; GROUP# STATUS ---------- ---------------- 1 CURRENT 2 INACTIVE 3 INACTIVE 4 INACTIVE 5 INACTIVE 6 INACTIVE 6 rows selected. --删除asm中日志 SQL> alter database drop logfile group 4; Database altered. SQL> alter database drop logfile group 5; Database altered. SQL> alter database drop logfile group 6; Database altered. --添加临时文件 SQL> alter tablespace temp add tempfile '/u01/oradata/tos/temp01.dbf' size 30m autoextend on maxsize 1g; Tablespace altered. --查看临时表空间中临时文件 SQL> select name from v$tempfile; NAME -------------------------------------------------------------------------------- /u01/oradata/tos/temp01.dbf +DATA/tos/tempfile/temp.280.754906369 --删除asm中临时文件 SQL> alter tablespace temp drop tempfile '+DATA/tos/tempfile/temp.280.754906369'; Tablespace altered. --查看迁移结果 SQL> set pagesize 100 SQL> select name from v$datafile 2 union 3 select member from v$logfile 4 union 5 select name from v$controlfile 6 union 7 select name from v$tempfile; NAME ------------------------------------------------------------------ /u01/oradata/tos/EXAMPLE01.dbf /u01/oradata/tos/SYSAUX01.dbf /u01/oradata/tos/SYSTEM01.dbf /u01/oradata/tos/UNDOTBS101.dbf /u01/oradata/tos/USERS01.dbf /u01/oradata/tos/XFF01.dbf /u01/oradata/tos/XFF02.dbf /u01/oradata/tos/control01.ctl /u01/oradata/tos/control02.ctl /u01/oradata/tos/redo01.log /u01/oradata/tos/redo02.log /u01/oradata/tos/redo03.log /u01/oradata/tos/temp01.dbf 13 rows selected. --创建spfile文件 SQL> create spfile from pfile='/tmp/pfile'; File created.
可以使用switch database to copy;
取代 switch tablespace name to copy;
实用,谢谢飞总