首页 > 数据库 > Oracle > Oracle 11g单实例ASM迁移到文件系统
CentOS5.8Oracle11.2.0.1单实例名sdzy建在ASM上
ASM:/dev/sdb1->+DATA ASM 20GB
[oracle/grid]$crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.DATA.dg ora....up.type ONLINE ONLINE oracle
ora....ER.lsnr ora....er.type ONLINE ONLINE oracle
ora.asm ora.asm.type ONLINE ONLINE oracle
ora.cssd ora.cssd.type ONLINE ONLINE oracle
ora.diskmon ora....on.type ONLINE ONLINE oracle
ora.sdzy.db ora....se.type ONLINE ONLINE oracle
[oracle/grid]$asmcmd
ASMCMD> lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 1048576 20473 17842 0 17842 0 N DATA/
SQL> select file_name,bytes/1024/1024 MB,tablespace_name from dba_data_files;
FILE_NAME MB TABLESPACE_NAME
--------------------------------------------- ---------- ------------------------------
+DATA/sdzy/datafile/system.264.851788437 700 SYSTEM
+DATA/sdzy/datafile/sysaux.265.851788459 600 SYSAUX
+DATA/sdzy/datafile/undotbs1.266.851788475 850 UNDOTBS1
+DATA/sdzy/datafile/users.268.851788491 5 USERS
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- --------------------------------------------- ---
1 ONLINE +DATA/sdzy/onlinelog/group_1.258.851788425 NO
1 ONLINE +DATA/sdzy/onlinelog/group_1.259.851788427 YES
2 ONLINE +DATA/sdzy/onlinelog/group_2.260.851788429 NO
2 ONLINE +DATA/sdzy/onlinelog/group_2.261.851788431 YES
3 ONLINE +DATA/sdzy/onlinelog/group_3.262.851788433 NO
3 ONLINE +DATA/sdzy/onlinelog/group_3.263.851788435 YES
SQL> show parameter pfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/sdzy/spfilesdzy.ora
SQL> show parameter control;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string +DATA/sdzy/controlfile/current
.256.851788423, +DATA/sdzy/con
trolfile/current.257.851788425
SQL> select file#,status,bytes/1024/1024 MB,TS#,name from v$tempfile;
FILE# STATUS MB TS# NAME
---------- ------- ---------- ---------- ---------------------------------------------
1 ONLINE 68 3 +DATA/sdzy/tempfile/temp.267.851788481
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 68
Next log sequence to archive 70
Current log sequence 70
SQL> show parameter DB_RECOVERY_FILE_DEST;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string +DATA
db_recovery_file_dest_size big integer 4977M
connected to target database: SDZY (DBID=1456076355)
RMAN>
备份参数和控制文件
关闭数据库,启动到nomount状态,恢复控制文件
再使用backup as copy命令复制ASM数据文件到文件系统
SQL> alter system set control_files='/db/oracle/admin/sdzy/oradata/control01.ctl','/db/oracle/admin/sdzy/oradata/control02.ctl' scope=spfile;
SQL> create pfile='/home/oracle/pfile.ora' from spfile;
RMAN> backup current controlfile format '/home/oracle/controlfile.ctl';
Starting backup at 2014-07-14 23:00:27
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=28 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
channel ORA_DISK_1: starting piece 1 at 2014-07-14 23:00:29
channel ORA_DISK_1: finished piece 1 at 2014-07-14 23:00:30
piece handle=/home/oracle/controlfile.ctl tag=TAG20140714T230028 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2014-07-14 23:00:30
RMAN> shutdown immediate;
RMAN> startup nomount pfile='/home/oracle/pfile.ora';
connected to target database (not started)
Oracle instance started
Total System Global Area 1503199232 bytes
Fixed Size 2213536 bytes
Variable Size 1006635360 bytes
Database Buffers 486539264 bytes
Redo Buffers 7811072 bytes
RMAN> restore controlfile from '/home/oracle/controlfile.ctl';
Starting restore at 2014-07-14 23:15:00
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1146 device type=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/db/oracle/admin/sdzy/oradata/control01.ctl
output file name=/db/oracle/admin/sdzy/oradata/control02.ctl
Finished restore at 2014-07-14 23:15:02
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
backup as copy datafile '+DATA/sdzy/datafile/system.264.851788437' format '/db/oracle/admin/sdzy/oradata/system01.dbf';
backup as copy datafile '+DATA/sdzy/datafile/sysaux.265.851788459' format '/db/oracle/admin/sdzy/oradata/sysaux01.dbf';
backup as copy datafile '+DATA/sdzy/datafile/undotbs1.266.851788475' format '/db/oracle/admin/sdzy/oradata/undotbs1.dbf';
backup as copy datafile '+DATA/sdzy/datafile/users.268.851788491' format '/db/oracle/admin/sdzy/oradata/users01.dbf';
备注:backup as copy 命令是以副本的方式备份数据库,其作用和操作系统的COPY
命令是一样的,只是二者的执行者不同而已。这里必须同时制定ASM文件的名字和
副本的名字。而且backup as copy 命令只备份数据文件,不备份日志文件,也不备份临时文件
rman>switch database to copy;
备注:因为控制文件内部对数据文件的指向依然是ASM文件的目录路径。我们的目的
是让它的指向修改为文件系统的数据库文件。该命令的功能正是如此。
【注意】此处不能使用alter database rename file 命令修改控制文件内部数据文件
的指针。因为alter database rename file命令不能跨越系统进行操作。所
不能使用其将ASM系统的ASM文件路径改为文件系统的数据文件路径。
rman>recover database;
备注:应用日志到恢复后的数据文件上,以实现对其的修复
rman>alter database open resetlogs;
sql>alter database add logfile group 4 '/db/oracle/admin/sdzy/oradata/redo04_01.log' size 50m;
sql>alter database add logfile group 5 '/db/oracle/admin/sdzy/oradata/redo05_01.log' size 50m;
sql>alter database add logfile group 6 '/db/oracle/admin/sdzy/oradata/redo06_01.log' size 50m;
sql>alter system switch logfile;
sql>alter system checkpoint;
sql>alter database drop logfile group 1;
sql>alter database drop logfile group 2;
sql>alter database drop logfile group 3;
【备注】因为backup as copy database 命令只复制数据文件不复制联机日志文件,所
以需要手工添加联机日志文件,删除位于ASM磁盘组的日志文件。在删除过程中,
日志文件可能处于当前使用状态或者是活动状态,故分别使用如下命令进行解决:
alter system switch logfile;(日志切换)
alter system checkpoint;(将脏数据写入数据文件,以使日志文件状态变为非活动)
SQL> alter tablespace temp add tempfile '/db/oracle/admin/sdzy/oradata/temp01.dbf' size 100M;
Tablespace altered.
SQL> alter tablespace temp drop tempfile '+DATA/sdzy/tempfile/temp.267.851788481';
Tablespace altered.
【备注】因为backup as copy database 命令只复制数据文件不复制临时文件,所
以需要手工添加临时文件。
事先创建归档目录:
/db/oracle/admin/sdzy/oradata/arch
关闭数据库
SQL> shutdown immediate;
修改备份的pfile文件:
*.db_create_file_dest='/db/oracle/admin/sdzy/oradata'
*.db_recovery_file_dest='/db/oracle/admin/sdzy/oradata/arch'
利用备份的pfile文件启动数据库:
SQL> startup pfile='/home/oracle/pfile.ora';
ORACLE instance started.
Total System Global Area 1503199232 bytes
Fixed Size 2213536 bytes
Variable Size 1006635360 bytes
Database Buffers 486539264 bytes
Redo Buffers 7811072 bytes
Database mounted.
Database opened.
创建SPFILE文件
SQL> create spfile from pfile='/home/oracle/pfile.ora';
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup;
ORACLE instance started.
Total System Global Area 1503199232 bytes
Fixed Size 2213536 bytes
Variable Size 1006635360 bytes
Database Buffers 486539264 bytes
Redo Buffers 7811072 bytes
Database mounted.
Database opened.
确认数据文件、归档、参数文件、控制文件、临时文件、日志文件等都迁移到文件系统中,且数据未丢失
确认ASM不再使用,可以将ASM磁盘组删除
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26217983/viewspace-1461698/ ,如需转载,请注明出处,否则将追究法律责任。