首页 / 数据库 / MySQL / ASM管理 - 如何重命名diskgroup
ASM 11.2.0.1 版本开始增加了diskgroup重命名的新功能,通过renamedg命令重命名已经创建的diskgroup,重命名前需要先dismount diskgroup。如果重命名的diskgroup已经用于存储数据库的数据文件,那么需要手动同步数据文件的位置。--检查ASM diskgroup当前名字为DGASMDB$ su - grid$ sqlplus / as sysasmSQL> select GROUP_NUMBER,name,state,type, offline_disks, ALLOCATION_UNIT_SIZE,BLOCK_SIZE,TOTAL_MB,FREE_MB from v$asm_diskgroup;GROUP_NUMBER NAME STATE TYPE OFFLINE_DISKS ALLOCATION_UNIT_SIZE BLOCK_SIZE TOTAL_MB FREE_MB------------ ---------- -------- ------ ------------- -------------------- ---------- ---------- ----------1 DGASMDB MOUNTED EXTERN 0 1048576 4096 3992 1879--检查数据库当前信息(spfile/controlfile/datafile/redo)su - Oracle$ sqlplus / as sysdbaSQL> show parameter spfile;NAME TYPE VALUE------------------------------------ ----------- ------------------------------spfile string +DGASMDB/asmdb/spfileasmdb.oraSQL> show parameter controlNAME TYPE VALUE------------------------------------ ----------- ------------------------------control_files string +DGASMDB/asmdb/controlfile/current.256.856653049SQL> select name from v$datafile;NAME--------------------------------------------------------------------------------+DGASMDB/asmdb/datafile/system.260.856653053+DGASMDB/asmdb/datafile/sysaux.261.856653059+DGASMDB/asmdb/datafile/undotbs1.262.856653061+DGASMDB/asmdb/datafile/users.264.856653075+DGASMDB/asmdb/datafile/asm_test.dbfSQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.--dismount diskgroup dgasmdb$ su - grid$ asmcmd umount dgasmdb--重命令diskgroup,新的diskgroup名为dgasmdb_new$ renamedg phase=both dgname=dgasmdb newdgname=dgasmdb_new verbose=trueParsing parameters..Parameters in effect:Old DG name : DGASMDBNew DG name : DGASMDB_NEWPhases :Phase 1Phase 2Discovery str : (null)Clean : TRUERaw only : TRUErenamedg operation: phase=both dgname=dgasmdb newdgname=dgasmdb_new verbose=trueExecuting phase 1Discovering the groupPerforming discovery with string:Identified disk ASM:/opt/oracle/extapi/64/asm/orcl/1/libasm.so:ORCL:ASMDISK4G1 with disk number:0 and timestamp (33006423 142494720)Checking for hearbeat...Re-discovering the groupPerforming discovery with string:Identified disk ASM:/opt/oracle/extapi/64/asm/orcl/1/libasm.so:ORCL:ASMDISK4G1 with disk number:0 and timestamp (33006423 142494720)Checking if the diskgroup is mounted or used by CSSChecking disk number:0Generating configuration file..Completed phase 1Executing phase 2Looking for ORCL:ASMDISK4G1Modifying the headerCompleted phase 2Terminating kgfd context 0x7fa6c2bee0a0--mount新的diksgroup dgasmdb_new$ asmcmd mount dgasmdb_new--查看新的diskgroup信息SQL> select GROUP_NUMBER,name,state,type, offline_disks, ALLOCATION_UNIT_SIZE,BLOCK_SIZE,TOTAL_MB,FREE_MB from v$asm_diskgroup;GROUP_NUMBER NAME STATE TYPE OFFLINE_DISKS ALLOCATION_UNIT_SIZE BLOCK_SIZE TOTAL_MB FREE_MB------------ ----------- -------- ------ ------------- -------------------- ---------- ---------- ----------1 DGASMDB_NEW MOUNTED EXTERN 0 1048576 4096 3992 1879--修改DB 初始化参数(/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initasmdb.ora)配置信息原来:SPFILE="+DGASMDB/asmdb/spfileasmdb.ora"修改后:SPFILE="+DGASMDB_NEW/asmdb/spfileasmdb.ora"--启动数据库nomountsu - oraclesqlplus / as sysdbastartup nomount;--修改control_files参数:SQL> alter system set control_files="+DGASMDB_NEW/asmdb/controlfile/current.256.856653049" scope=spfile;SQL> shutdown immediate;SQL> startup mount;SQL> show parameter control_filesNAME TYPE VALUE------------------------------------ ----------- ------------------------------control_files string +DGASMDB_NEW/asmdb/controlfile/current.256.856653049--确认当前记录的datafile还是位于原来diskgroup DGASMDBSQL> select FILE#,name from v$datafile;FILE# NAME---------- ----------------------------------------------------------------------------------------------------1 +DGASMDB/asmdb/datafile/system.260.8566530532 +DGASMDB/asmdb/datafile/sysaux.261.8566530593 +DGASMDB/asmdb/datafile/undotbs1.262.8566530614 +DGASMDB/asmdb/datafile/users.264.8566530755 +DGASMDB/asmdb/datafile/asm_test.dbfSQL> select file#, name from v$tempfile;FILE# NAME---------- --------------------------------------------------------------------------------1 +DGASMDB/asmdb/tempfile/temp.263.856653061--修改datafile/tempfile位置:SQL> conn / as sysdbaSQL> ALTER DATABASE RENAME FILE "+DGASMDB/asmdb/datafile/system.260.856653053" TO "+DGASMDB_NEW/asmdb/datafile/system.260.856653053";SQL> ALTER DATABASE RENAME FILE "+DGASMDB/asmdb/datafile/sysaux.261.856653059" TO "+DGASMDB_NEW/asmdb/datafile/sysaux.261.856653059";SQL> ALTER DATABASE RENAME FILE "+DGASMDB/asmdb/datafile/undotbs1.262.856653061" TO "+DGASMDB_NEW/asmdb/datafile/undotbs1.262.856653061";SQL> ALTER DATABASE RENAME FILE "+DGASMDB/asmdb/datafile/users.264.856653075" TO "+DGASMDB_NEW/asmdb/datafile/users.264.856653075";SQL> ALTER DATABASE RENAME FILE "+DGASMDB/asmdb/datafile/asm_test.dbf" TO "+DGASMDB_NEW/asmdb/datafile/asm_test.dbf";SQL> ALTER DATABASE RENAME FILE "+DGASMDB/asmdb/tempfile/temp.263.856653061" TO "+DGASMDB_NEW/asmdb/tempfile/temp.263.856653061";--修改后确认:SQL> select FILE#,name from v$datafile;FILE# NAME---------- ----------------------------------------------------------------------------------------------------1 +DGASMDB_NEW/asmdb/datafile/system.260.8566530532 +DGASMDB_NEW/asmdb/datafile/sysaux.261.8566530593 +DGASMDB_NEW/asmdb/datafile/undotbs1.262.8566530614 +DGASMDB_NEW/asmdb/datafile/users.264.8566530755 +DGASMDB_NEW/asmdb/datafile/asm_test.dbf--修改redo log位置alter database rename file "+DGASMDB/asmdb/onlinelog/group_1.257.856653049" to "+DGASMDB_NEW/asmdb/onlinelog/group_1.257.856653049";alter database rename file "+DGASMDB/asmdb/onlinelog/group_2.258.856653051" to "+DGASMDB_NEW/asmdb/onlinelog/group_2.258.856653051";alter database rename file "+DGASMDB/asmdb/onlinelog/group_3.259.856653051" to "+DGASMDB_NEW/asmdb/onlinelog/group_3.259.856653051";select * from v$logfile;--启动数据库SQL> alter database open; 重命名diskgroup后,对数据库有什么影响?如何同步数据?重命名diskgroup前,需要先手动dismount 这个磁盘组,因此重命名过程不会有数据被修改,因此不需要额外的同步。更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址