环境: Linux 5.6 x86-64 + ASM(single instance) + Oracle 11.2.0.3(single instance)
--迁移前控制文件,数据文件(临时文件),日志文件,参数文件。
SQL> show parameter spfile
spfile string /u01/app/oracle/product/11.2.0.3.0/db_1/dbs/spfilehdb11g.ora
SQL> show parameter control_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/app/oracle/oradata/hdb11g/control01.ctl, /u01/app/oracle/fast_recovery_area/hdb11g/control02.ctl
ora11gr2.sannet.net | hdb11g | /u01/app/oracle/oradata/hdb11g > ls -l
total 2140088
-rw-r----- 1 oracle dba 16785408 Aug 28 06:31 AUDIT_TS.ora
-rw-r----- 1 oracle dba 9846784 Aug 28 07:01 control01.ctl
-rw-r----- 1 oracle dba 138289152 Aug 28 06:31 example01.dbf
-rw-r----- 1 oracle dba 16785408 Aug 28 06:31 FGA_TS.ora
-rw-r----- 1 oracle dba 52429312 Aug 28 07:26 redo01.log
-rw-r----- 1 oracle dba 52429312 Aug 28 07:26 redo02.log
-rw-r----- 1 oracle dba 52429312 Aug 28 08:37 redo03.log
-rw-r----- 1 oracle dba 26222592 Aug 28 06:31 stream_ts.ora
-rw-r----- 1 oracle dba 775954432 Aug 28 06:31 sysaux01.dbf
-rw-r----- 1 oracle dba 775954432 Aug 28 06:31 system01.dbf
-rw-r----- 1 oracle dba 58728448 Aug 27 11:41 temp01.dbf
-rw-r----- 1 oracle dba 16785408 Aug 28 06:31 transport_ts2.ora
-rw-r----- 1 oracle dba 10493952 Aug 28 06:31 tsmgmt_ts1.ora
-rw-r----- 1 oracle dba 10493952 Aug 28 06:31 tsmgmt_ts2.ora
-rw-r----- 1 oracle dba 10493952 Aug 28 06:31 tsmgmt_ts3.ora
-rw-r----- 1 oracle dba 10493952 Aug 28 06:31 tsmgmt_ts4.ora
-rw-r----- 1 oracle dba 16785408 Aug 28 06:31 TS_TEST_PRIVS.DBF
-rw-r----- 1 oracle dba 131080192 Aug 28 06:31 undotbs01.dbf
-rw-r----- 1 oracle dba 1056768 Aug 28 06:31 user02.dbf
-rw-r----- 1 oracle dba 9183232 Aug 28 06:31 users01.dbf
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ------------------------------------------------------------ ---
3 ONLINE /u01/app/oracle/oradata/hdb11g/redo03.log NO
2 ONLINE /u01/app/oracle/oradata/hdb11g/redo02.log NO
1 ONLINE /u01/app/oracle/oradata/hdb11g/redo01.log NO
SQL> alter system set db_create_file_dest='+DATA' scope=both;
RMAN> restore controlfile to '+DATA' from '/u01/app/oracle/oradata/hdb11g/control01.ctl';
SQL> alter system set control_files='+DATA/HDB11G/CONTROLFILE/current.256.824626491' scope=spfile;
SQL> shutdown immediate;
SQL> startup mount;
RMAN> backup full database tag 'FULL' format='/u01/FULL_%d_%T_%s';
RMAN> backup current controlfile tag 'CTRL' format '/u01/CTRL_%d_%T_%s';
RMAN> run{
SET NEWNAME FOR DATABASE TO '+DATA';
SET NEWNAME FOR TEMPFILE 1 TO '+DATA';
RESTORE DATABASE;
SWITCH DATAFILE ALL;
SWITCH TEMPFILE ALL;
如果需要将redo log也放在ASM中,则需要重建redo log,在open状态下可以进行如下操作。
SQL> alter system set db_create_online_log_dest_1='+DATA' scope=both;
SQL> select * from v$log;
SQL> select * from v$logfile;
删除inactive状态的日志组,重建日志。
SQL> alter database drop logfile group 1;
SQL> alter database add logfile group 1 size 50M;
SQL> alter database drop logfile group 2;
SQL> alter database add logfile size 50M;
SQL> alter system switch logfile;
SQL> alter system checkpoint;
SQL> alter database drop logfile group 3;
SQL> alter database add logfile ('+DATA','+RECOVERY') size 50M;
如果需要将spfile也放在ASM中,如下步骤。
SQL> create pfile from spfile;
SQL> shutdown immediate;
SQL> startup nomount pfile='?/dbs/inithdb11g.ora';
SQL> create spfile='+DATA' from pfile;
ora11gr2.sannet.net | hdb11g | /u01/app/oracle/product/11.2.0.3.0/db_1/dbs > rm -rf spfilehdb11g.ora
ora11gr2.sannet.net | hdb11g | /u01/app/oracle/product/11.2.0.3.0/db_1/dbs > vi inithdb11g.ora
spfile='+DATA/HDB11G/PARAMETERFILE/spfile.276.824633307'
SQL> shutdown immediate;
SQL> startup;
SQL> show parameter pfile;
--迁移前控制文件,数据文件(临时文件),日志文件,参数文件。
SQL> show parameter spfile
spfile string /u01/app/oracle/product/11.2.0.3.0/db_1/dbs/spfilehdb11g.ora
SQL> show parameter control_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/app/oracle/oradata/hdb11g/control01.ctl, /u01/app/oracle/fast_recovery_area/hdb11g/control02.ctl
ora11gr2.sannet.net | hdb11g | /u01/app/oracle/oradata/hdb11g > ls -l
total 2140088
-rw-r----- 1 oracle dba 16785408 Aug 28 06:31 AUDIT_TS.ora
-rw-r----- 1 oracle dba 9846784 Aug 28 07:01 control01.ctl
-rw-r----- 1 oracle dba 138289152 Aug 28 06:31 example01.dbf
-rw-r----- 1 oracle dba 16785408 Aug 28 06:31 FGA_TS.ora
-rw-r----- 1 oracle dba 52429312 Aug 28 07:26 redo01.log
-rw-r----- 1 oracle dba 52429312 Aug 28 07:26 redo02.log
-rw-r----- 1 oracle dba 52429312 Aug 28 08:37 redo03.log
-rw-r----- 1 oracle dba 26222592 Aug 28 06:31 stream_ts.ora
-rw-r----- 1 oracle dba 775954432 Aug 28 06:31 sysaux01.dbf
-rw-r----- 1 oracle dba 775954432 Aug 28 06:31 system01.dbf
-rw-r----- 1 oracle dba 58728448 Aug 27 11:41 temp01.dbf
-rw-r----- 1 oracle dba 16785408 Aug 28 06:31 transport_ts2.ora
-rw-r----- 1 oracle dba 10493952 Aug 28 06:31 tsmgmt_ts1.ora
-rw-r----- 1 oracle dba 10493952 Aug 28 06:31 tsmgmt_ts2.ora
-rw-r----- 1 oracle dba 10493952 Aug 28 06:31 tsmgmt_ts3.ora
-rw-r----- 1 oracle dba 10493952 Aug 28 06:31 tsmgmt_ts4.ora
-rw-r----- 1 oracle dba 16785408 Aug 28 06:31 TS_TEST_PRIVS.DBF
-rw-r----- 1 oracle dba 131080192 Aug 28 06:31 undotbs01.dbf
-rw-r----- 1 oracle dba 1056768 Aug 28 06:31 user02.dbf
-rw-r----- 1 oracle dba 9183232 Aug 28 06:31 users01.dbf
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ------------------------------------------------------------ ---
3 ONLINE /u01/app/oracle/oradata/hdb11g/redo03.log NO
2 ONLINE /u01/app/oracle/oradata/hdb11g/redo02.log NO
1 ONLINE /u01/app/oracle/oradata/hdb11g/redo01.log NO
##################################
步骤:
+ 控制文件,数据文件,临时文件迁移。
+ 在线日志迁移
+ 参数文件迁移
##################################
SQL> alter system set db_create_file_dest='+DATA' scope=both;
RMAN> restore controlfile to '+DATA' from '/u01/app/oracle/oradata/hdb11g/control01.ctl';
SQL> alter system set control_files='+DATA/HDB11G/CONTROLFILE/current.256.824626491' scope=spfile;
SQL> shutdown immediate;
SQL> startup mount;
RMAN> backup full database tag 'FULL' format='/u01/FULL_%d_%T_%s';
RMAN> backup current controlfile tag 'CTRL' format '/u01/CTRL_%d_%T_%s';
RMAN> run{
SET NEWNAME FOR DATABASE TO '+DATA';
SET NEWNAME FOR TEMPFILE 1 TO '+DATA';
RESTORE DATABASE;
SWITCH DATAFILE ALL;
SWITCH TEMPFILE ALL;
}
SQL> alter database open;
如果需要将redo log也放在ASM中,则需要重建redo log,在open状态下可以进行如下操作。
SQL> alter system set db_create_online_log_dest_1='+DATA' scope=both;
SQL> select * from v$log;
SQL> select * from v$logfile;
删除inactive状态的日志组,重建日志。
SQL> alter database drop logfile group 1;
SQL> alter database add logfile group 1 size 50M;
SQL> alter database drop logfile group 2;
SQL> alter database add logfile size 50M;
SQL> alter system switch logfile;
SQL> alter system checkpoint;
SQL> alter database drop logfile group 3;
SQL> alter database add logfile ('+DATA','+RECOVERY') size 50M;
如果需要将spfile也放在ASM中,如下步骤。
SQL> create pfile from spfile;
SQL> shutdown immediate;
SQL> startup nomount pfile='?/dbs/inithdb11g.ora';
SQL> create spfile='+DATA' from pfile;
ora11gr2.sannet.net | hdb11g | /u01/app/oracle/product/11.2.0.3.0/db_1/dbs > rm -rf spfilehdb11g.ora
ora11gr2.sannet.net | hdb11g | /u01/app/oracle/product/11.2.0.3.0/db_1/dbs > vi inithdb11g.ora
spfile='+DATA/HDB11G/PARAMETERFILE/spfile.276.824633307'
SQL> shutdown immediate;
SQL> startup;
SQL> show parameter pfile;