海内存知己 2019-05-27
在运维操作过程中会出现一些失误,针对在使用ASM磁盘管理下,给表空间添加数据文件,添加的数据文件不符合创建规则,因此需要对数据文件进行rename操作,关于使用文件系统的rename操作网上已经有很多,在此不在多讲。
一、首先创建测试的表空间及数据文件。
SQL> create tablespace pandy datafile '+DG_DAT/zxnora/datafile/pandy_dat_01.dbf' size 200m autoextend on next 100m maxsize 200m extent management local;
Tablespace created.
SQL> alter tablespace pandy add datafile '+DG_DAT/zxnora/datafile/pandy_dat_02.db' size 200m autoextend on next 100m maxsize 2000m;
Tablespace altered.
注:+DG_DAT/zxnora/datafile/pandy_dat_02.db,此文件名为不符合创建规则,在后期维护中也有其弊端。
二、查看已经创建好的测试数据。
SQL> select file_name,tablespace_name,file_id,online_status from dba_data_files where tablespace_name='PANDY';
FILE_NAME TABLESPACE_NAME FILE_ID ONLINE_
--------------------------------------------- ------------------------------ ---------- -------
+DG_DAT/zxnora/datafile/pandy_dat_01.dbf PANDY 6 ONLINE
+DG_DAT/zxnora/datafile/pandy_dat_02.db PANDY 7 ONLINE
三、在11.2中已经支持在线对数据文件进行重命名,不需要对表空间进行offline,只需要将操作数据文件进行offline即可。
SQL> alter database datafile 7 offline;
Database altered.
SQL> select file_name,tablespace_name,file_id,online_status from dba_data_files where tablespace_name='PANDY';
FILE_NAME TABLESPACE_NAME FILE_ID ONLINE_
--------------------------------------------- ------------------------------ ---------- -------
+DG_DAT/zxnora/datafile/pandy_dat_01.dbf PANDY 6 ONLINE
+DG_DAT/zxnora/datafile/pandy_dat_02.db PANDY 7 RECOVER
四、在ASM磁盘组中提供了mkalias和rmalias两个命令来对ASM创建的single-file文件进行别名操作。能过 ls --absolutepath 来查看已经存在的别名。
ASMCMD> ls --absolutepath
+DG_DAT/ZXNORA/DATAFILE/pandy_dat_01.dbf => PANDY.309.933774621
+DG_DAT/ZXNORA/DATAFILE/pandy_dat_02.db => PANDY.311.933778649
none => SYSAUX.257.933178281
none => SYSTEM.256.933178281
none => UNDOTBS1.258.933178281
none => UNDOTBS2.271.933178505
none => USERS.259.933178281
pandy_dat_01.dbf
pandy_dat_02.db
五、在ASMCMD模式下,删除有问题文件别名。
ASMCMD> rmalias alias pandy_dat_02.db
ASMCMD-8002: entry 'alias' does not exist in directory '+dg_dat/ZXNORA/datafile/'
ASMCMD> ls -l
Type Redund Striped Time Sys Name
DATAFILE MIRROR COARSE JAN 20 13:00:00 Y PANDY.309.933774621
DATAFILE MIRROR COARSE JAN 20 15:00:00 Y PANDY.311.933778649
DATAFILE MIRROR COARSE JAN 20 12:00:00 Y SYSAUX.257.933178281
DATAFILE MIRROR COARSE JAN 17 16:00:00 Y SYSTEM.256.933178281
DATAFILE MIRROR COARSE JAN 17 16:00:00 Y UNDOTBS1.258.933178281
DATAFILE MIRROR COARSE JAN 17 16:00:00 Y UNDOTBS2.271.933178505
DATAFILE MIRROR COARSE JAN 17 16:00:00 Y USERS.259.933178281
N pandy_dat_01.dbf => +DG_DAT/ZXNORA/DATAFILE/PANDY.309.933774621
六、在ASMCMD模式下,创建文件别名。
ASMCMD> mkalias PANDY.311.933778649 pandy_dat_02.dbf
ASMCMD>
ASMCMD> ls --absolutepath
+DG_DAT/ZXNORA/DATAFILE/pandy_dat_01.dbf => PANDY.309.933774621
+DG_DAT/ZXNORA/DATAFILE/pandy_dat_02.dbf => PANDY.311.933778649
none => SYSAUX.257.933178281
none => SYSTEM.256.933178281
none => UNDOTBS1.258.933178281
none => UNDOTBS2.271.933178505
none => USERS.259.933178281
pandy_dat_01.dbf
pandy_dat_02.dbf
七:将不规则的single-file文件进行规则rename操作。
SQL> alter database rename file '+DG_DAT/zxnora/datafile/pandy_dat_02.db' to '+DG_DAT/zxnora/datafile/pandy_dat_02.dbf';
Database altered.
八、在变更了数据文件之后需要对操作文件进行recover操作。
SQL> recover datafile 7;
Media recovery complete.
九、将操作文件置为online.
SQL> alter database datafile 7 online;
Database altered.
SQL> select file_name,tablespace_name,file_id,online_status from dba_data_files where tablespace_name='PANDY';
FILE_NAME TABLESPACE_NAME FILE_ID ONLINE_
--------------------------------------------- ------------------------------ ---------- -------
+DG_DAT/zxnora/datafile/pandy_dat_01.dbf PANDY 6 ONLINE
+DG_DAT/zxnora/datafile/pandy_dat_02.dbf PANDY 7 ONLINE
十、删除测试表空间及asm磁盘组的底层文件。
SQL> drop tablespace pandy;
Tablespace dropped.
ASMCMD> ls --absolutepath
+DG_DAT/ZXNORA/DATAFILE/pandy_dat_01.dbf => PANDY.309.933774621
+DG_DAT/ZXNORA/DATAFILE/pandy_dat_02.dbf => PANDY.311.933778649
none => SYSAUX.257.933178281
none => SYSTEM.256.933178281
none => UNDOTBS1.258.933178281
none => UNDOTBS2.271.933178505
none => USERS.259.933178281
pandy_dat_01.dbf
pandy_dat_02.dbf
ASMCMD> rm pandy_dat_01.dbf
ASMCMD> rm pandy_dat_02.dbf
提示:在对于有业务运行时段需要将业务暂停,在有ogg实时同步时,需要将ogg 暂停。