ASM管理 - 如何重新命名diskgroup

531968912發表於2017-07-10

ASM管理 - 如何重新命名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;  

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-2141856/,如需轉載,請註明出處,否則將追究法律責任。

相關文章