如何重命名diskgroup

ASM 11.2.0.1 版本开始增加了diskgroup重命名的新功能,通过renamedg命令重命名已经创建的diskgroup,重命名前需要先dismount diskgroup。

如果重命名的diskgroup已经用于存储数据库的数据文件,那么需要手动同步数据文件的位置。

--检查ASM diskgroup当前名字为DGASMDB

$ su - grid

$ sqlplus / as sysasm

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    MOUNTED  EXTERN            0              1048576      4096      3992      1879

--检查数据库当前信息(spfile/controlfile/datafile/redo)

su - Oracle

$ sqlplus / as sysdba

SQL> show parameter spfile;

NAME                                TYPE        VALUE

------------------------------------ ----------- ------------------------------

spfile                              string      +DGASMDB/asmdb/spfileasmdb.ora

SQL> show parameter control

NAME                                TYPE        VALUE

------------------------------------ ----------- ------------------------------

control_files                        string      +DGASMDB/asmdb/controlfile/current.256.856653049

SQL> 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.dbf

SQL> 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=true

Parsing parameters..

Parameters in effect:

Old DG name      : DGASMDB

New DG name          : DGASMDB_NEW

Phases              :

Phase 1

Phase 2

Discovery str        : (null)

Clean              : TRUE

Raw only          : TRUE

renamedg operation: phase=both dgname=dgasmdb newdgname=dgasmdb_new verbose=true

Executing phase 1

Discovering the group

Performing 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 group

Performing 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 CSS

Checking disk number:0

Generating configuration file..

Completed phase 1

Executing phase 2

Looking for ORCL:ASMDISK4G1

Modifying the header

Completed phase 2

Terminating 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'

--启动数据库nomount

su - oracle

sqlplus / as sysdba

startup 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_files

NAME                                TYPE        VALUE

------------------------------------ ----------- ------------------------------

control_files                        string      +DGASMDB_NEW/asmdb/controlfile

/current.256.856653049

--确认当前记录的datafile还是位于原来diskgroup DGASMDB

SQL> select FILE#,name from v$datafile;

FILE# NAME

---------- ----------------------------------------------------------------------------------------------------

1 +DGASMDB/asmdb/datafile/system.260.856653053

2 +DGASMDB/asmdb/datafile/sysaux.261.856653059

3 +DGASMDB/asmdb/datafile/undotbs1.262.856653061

4 +DGASMDB/asmdb/datafile/users.264.856653075

5 +DGASMDB/asmdb/datafile/asm_test.dbf

SQL> select file#, name from v$tempfile;

FILE# NAME

---------- --------------------------------------------------------------------------------

1 +DGASMDB/asmdb/tempfile/temp.263.856653061

--修改datafile/tempfile位置:

SQL> conn / as sysdba

SQL> 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.856653053

2 +DGASMDB_NEW/asmdb/datafile/sysaux.261.856653059

3 +DGASMDB_NEW/asmdb/datafile/undotbs1.262.856653061

4 +DGASMDB_NEW/asmdb/datafile/users.264.856653075

5 +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 这个磁盘组,因此重命名过程不会有数据被修改,因此不需要额外的同步。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/f0241cdc39e266a7c03858a7cb51c152.html