oracle中rename asm diskgroup的例子

作者:袖梨 2022-06-29

在11.2之后,已经可以rename asm diskgroup了,而不必再新建diskgroup之后,再做image copy。

在11.2.中的gi home中,自带了一个命令renamedg,看下面的例子:

renamedg phase= dgname=  newdgname= [asm_diskstring='' ] [verbose=true]
其步骤可以分成2个phase,第一个是生成一个configure文件(renamedg_config),第二个phase是执行这个configure文件,而文档中说的phase=both,是表示生成完后直接执行。

此外,在10g和11gR1也可以修改,但其实也是利用11gR2的renamedg工具。

注意:在操作的时候,踩了几个坑,在这里和大家分享一下。

(一)有可能需要设置asm_diskstring,我第一次没加这个参数,报错了KFNDG-00407:

[oracle@rac1 ~]$ renamedg phase=both dgname=FRA  newdgname=NEW_FRA verbose=true
NOTE: No asm libraries found in the system
 
Parsing parameters..
 
Parameters in effect:
 
         Old DG name       : FRA
         New DG name          : NEW_FRA
         Phases               :
                 Phase 1
                 Phase 2
         Discovery str        : (null)
         Clean              : TRUE
         Raw only           : TRUE
renamedg operation: phase=both dgname=FRA newdgname=NEW_FRA verbose=true
Executing phase 1
Discovering the group
Performing discovery with string:
KFNDG-00407: file not found; arguments: []
 
Terminating kgfd context 0x7fd4b29520a0
[oracle@rac1 ~]$
注,disk所在的路径,可以参考asm实例中初始化参数asm_diskstring的设置,或者直接用kfod disks=all看也可以。

(二)第二次的时候,加了asm_diskstring这个参数,但是只是操作前仅umount了node1,忘记umount node2上的diskgroup,报错了KFNDG-00305:

[oracle@rac1 dev]$ renamedg phase=both dgname=FRA  newdgname=NEW_FRA  asm_diskstring='/dev/asm*' verbose=true
NOTE: No asm libraries found in the system
 
Parsing parameters..
 
Parameters in effect:
 
         Old DG name       : FRA
         New DG name          : NEW_FRA
         Phases               :
                 Phase 1
                 Phase 2
         Discovery str        : /dev/asm*
         Clean              : TRUE
         Raw only           : TRUE
renamedg operation: phase=both dgname=FRA newdgname=NEW_FRA asm_diskstring=/dev/asm* verbose=true
Executing phase 1
Discovering the group
Performing discovery with string:/dev/asm*
Identified disk UFS:/dev/asm-fra03 with disk number:2 and timestamp (33005975 -1778129920)
Identified disk UFS:/dev/asm-fra04 with disk number:3 and timestamp (33005975 -1778129920)
Identified disk UFS:/dev/asm-fra01 with disk number:0 and timestamp (33005975 -1778129920)
Identified disk UFS:/dev/asm-fra02 with disk number:1 and timestamp (33005975 -1778129920)
Checking for hearbeat...
Re-discovering the group
Performing discovery with string:/dev/asm*
Identified disk UFS:/dev/asm-fra03 with disk number:2 and timestamp (33005975 -1778129920)
Identified disk UFS:/dev/asm-fra04 with disk number:3 and timestamp (33005975 -1778129920)
Identified disk UFS:/dev/asm-fra01 with disk number:0 and timestamp (33005975 -1778129920)
Identified disk UFS:/dev/asm-fra02 with disk number:1 and timestamp (33005975 -1778129920)
Checking if the diskgroup is mounted or used by CSS
Checking disk number:2
Checking disk number:3
Checking disk number:0
Checking disk number:1
Generating configuration file..
KFNDG-00305: file not found
 
Terminating kgfd context 0x7f82d62960a0
[oracle@rac1 dev]$
解决了上面的2个问题,才是正常修改成功:

[oracle@rac1 ~]$ renamedg phase=both dgname=FRA  newdgname=NEW_FRA  asm_diskstring='/dev/asm*' verbose=true
NOTE: No asm libraries found in the system
 
Parsing parameters..
 
Parameters in effect:
 
         Old DG name       : FRA
         New DG name          : NEW_FRA
         Phases               :
                 Phase 1
                 Phase 2
         Discovery str        : /dev/asm*
         Clean              : TRUE
         Raw only           : TRUE
renamedg operation: phase=both dgname=FRA newdgname=NEW_FRA asm_diskstring=/dev/asm* verbose=true
Executing phase 1
Discovering the group
Performing discovery with string:/dev/asm*
Identified disk UFS:/dev/asm-fra03 with disk number:2 and timestamp (33005975 -1778129920)
Identified disk UFS:/dev/asm-fra04 with disk number:3 and timestamp (33005975 -1778129920)
Identified disk UFS:/dev/asm-fra01 with disk number:0 and timestamp (33005975 -1778129920)
Identified disk UFS:/dev/asm-fra02 with disk number:1 and timestamp (33005975 -1778129920)
Checking for hearbeat...
Re-discovering the group
Performing discovery with string:/dev/asm*
Identified disk UFS:/dev/asm-fra03 with disk number:2 and timestamp (33005975 -1778129920)
Identified disk UFS:/dev/asm-fra04 with disk number:3 and timestamp (33005975 -1778129920)
Identified disk UFS:/dev/asm-fra01 with disk number:0 and timestamp (33005975 -1778129920)
Identified disk UFS:/dev/asm-fra02 with disk number:1 and timestamp (33005975 -1778129920)
Checking if the diskgroup is mounted or used by CSS
Checking disk number:2
Checking disk number:3
Checking disk number:0
Checking disk number:1
Generating configuration file..
Completed phase 1
Executing phase 2
Looking for /dev/asm-fra03
Modifying the header
Looking for /dev/asm-fra04
Modifying the header
Looking for /dev/asm-fra01
Modifying the header
Looking for /dev/asm-fra02
Modifying the header
Completed phase 2
Terminating kgfd context 0x7fa4f29790a0
[oracle@rac1 ~]$
看上面的log看,似乎是锁定对应diskgroup的盘之后,修改asm盘头信息(Modifying the header),从而实现rename的目的。

从这个角度讲,如果手工的kfed修改盘头信息,kfdhdb.grpname字段,再merge进去,其实也是可以做到rename diskgroup的。而从理论上讲,diskgroup name的信息,只是包含在盘头信息中,不涉及盘头信息中disk的create timestamp和disk directory中disk的create timestamp一致性的问题了。所以只需要修改盘头就可以了。

下面,我就把已经用renamedg工具改成NEW_FRA的diskgroup,再改回FRA的名字。修改过程如下:
(注:USE kfed at your own risk!)

[oracle@rac1 ~]$ kfod disks=all
--------------------------------------------------------------------------------
 Disk          Size Path                                     User     Group  
================================================================================
   1:       6142 Mb /dev/asm-acfs01                          oracle   dba    
   2:       6142 Mb /dev/asm-acfs02                          oracle   dba    
   3:       1019 Mb /dev/asm-data01                          oracle   dba    
   4:       1019 Mb /dev/asm-data02                          oracle   dba    
   5:       1019 Mb /dev/asm-data03                          oracle   dba    
   6:       1019 Mb /dev/asm-data04                          oracle   dba    
   7:       1019 Mb /dev/asm-data05                          oracle   dba    
   8:       1019 Mb /dev/asm-fra01                           oracle   dba    
   9:       1019 Mb /dev/asm-fra02                           oracle   dba    
  10:       1019 Mb /dev/asm-fra03                           oracle   dba    
  11:       1019 Mb /dev/asm-fra04                           oracle   dba    
  12:        611 Mb /dev/asm-ocrvot1                         oracle   dba    
  13:        611 Mb /dev/asm-ocrvot2                         oracle   dba    
  14:        611 Mb /dev/asm-ocrvot3                         oracle   dba    
--------------------------------------------------------------------------------
ORACLE_SID ORACLE_HOME                                                         
================================================================================
     +ASM1 /u01/app/11.2.0.3/grid                                              
     +ASM2 /u01/app/11.2.0.3/grid                                              
[oracle@rac1 ~]$
 
 
[oracle@rac1 amdu_2016_02_17_14_25_33]$
[oracle@rac1 amdu_2016_02_17_14_25_33]$ kfed read /dev/asm-fra01 text=fra_1.txt
[oracle@rac1 amdu_2016_02_17_14_25_33]$ kfed read /dev/asm-fra02 text=fra_2.txt
[oracle@rac1 amdu_2016_02_17_14_25_33]$ kfed read /dev/asm-fra03 text=fra_3.txt
[oracle@rac1 amdu_2016_02_17_14_25_33]$ kfed read /dev/asm-fra04 text=fra_4.txt
[oracle@rac1 amdu_2016_02_17_14_25_33]$
[oracle@rac1 amdu_2016_02_17_14_25_33]$ ## 修改前
[oracle@rac1 amdu_2016_02_17_14_25_33]$ cat fra_1.txt |grep grpname
kfdhdb.grpname:                 NEW_FRA ; 0x048: length=7
[oracle@rac1 amdu_2016_02_17_14_25_33]$ vi fra_1.txt
[oracle@rac1 amdu_2016_02_17_14_25_33]$
[oracle@rac1 amdu_2016_02_17_14_25_33]$ ## 修改后
[oracle@rac1 amdu_2016_02_17_14_25_33]$ cat fra_1.txt |grep grpname
kfdhdb.grpname:                     FRA ; 0x048: length=3
[oracle@rac1 amdu_2016_02_17_14_25_33]$
[oracle@rac1 amdu_2016_02_17_14_25_33]$
[oracle@rac1 amdu_2016_02_17_14_25_33]$ ## 修改剩余fra_2.txt,fra_3.txt,fra_4.txt三个文件
[oracle@rac1 amdu_2016_02_17_14_25_33]$
[oracle@rac1 amdu_2016_02_17_14_25_33]$ cat *.txt |grep grpname
kfdhdb.grpname:                     FRA ; 0x048: length=3
kfdhdb.grpname:                     FRA ; 0x048: length=3
kfdhdb.grpname:                     FRA ; 0x048: length=3
kfdhdb.grpname:                     FRA ; 0x048: length=3
[oracle@rac1 amdu_2016_02_17_14_25_33]$
[oracle@rac1 amdu_2016_02_17_14_25_33]$
[oracle@rac1 amdu_2016_02_17_14_25_33]$ ## 用kfed merge进去
[oracle@rac1 amdu_2016_02_17_14_25_33]$ kfed merge /dev/asm-fra01 text=fra_1.txt
[oracle@rac1 amdu_2016_02_17_14_25_33]$ kfed merge /dev/asm-fra02 text=fra_2.txt
[oracle@rac1 amdu_2016_02_17_14_25_33]$ kfed merge /dev/asm-fra03 text=fra_3.txt
[oracle@rac1 amdu_2016_02_17_14_25_33]$ kfed merge /dev/asm-fra04 text=fra_4.txt
[oracle@rac1 amdu_2016_02_17_14_25_33]$
[oracle@rac1 amdu_2016_02_17_14_25_33]$
[oracle@rac1 amdu_2016_02_17_14_25_33]$
[oracle@rac1 amdu_2016_02_17_14_25_33]$
[oracle@rac1 amdu_2016_02_17_14_25_33]$ ##检查盘头是否已经都修改正确了
[oracle@rac1 amdu_2016_02_17_14_25_33]$ kfed read /dev/asm-fra01 |grep grpname
kfdhdb.grpname:                     FRA ; 0x048: length=3
[oracle@rac1 amdu_2016_02_17_14_25_33]$ kfed read /dev/asm-fra02 |grep grpname
kfdhdb.grpname:                     FRA ; 0x048: length=3
[oracle@rac1 amdu_2016_02_17_14_25_33]$ kfed read /dev/asm-fra03 |grep grpname
kfdhdb.grpname:                     FRA ; 0x048: length=3
[oracle@rac1 amdu_2016_02_17_14_25_33]$ kfed read /dev/asm-fra04 |grep grpname
kfdhdb.grpname:                     FRA ; 0x048: length=3
[oracle@rac1 amdu_2016_02_17_14_25_33]$
 
 
[oracle@rac1 amdu_2016_02_17_14_25_33]$ sqlplus "/ as sysasm"
 
SQL*Plus: Release 11.2.0.4.0 Production on Wed Feb 17 14:45:17 2016
 
Copyright (c) 1982, 2013, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options
 
SQL> select GROUP_NUMBER,name,STATE from v$asm_diskgroup where name like '%FRA%';
 
GROUP_NUMBER NAME                           STATE
------------ ------------------------------ -----------
           3 FRA                            MOUNTED
 
SQL>
SQL>
SQL> select DISK_NUMBER,name,PATH,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE from v$asm_disk where GROUP_NUMBER=3;
 
DISK_NUMBER NAME                           PATH                           MOUNT_S HEADER_STATU MODE_ST STATE
----------- ------------------------------ ------------------------------ ------- ------------ ------- --------
          0 FRA_0000                       /dev/asm-fra01                 CACHED  MEMBER       ONLINE  NORMAL
          2 FRA_0002                       /dev/asm-fra03                 CACHED  MEMBER       ONLINE  NORMAL
          1 FRA_0001                       /dev/asm-fra02                 CACHED  MEMBER       ONLINE  NORMAL
          3 FRA_0003                       /dev/asm-fra04                 CACHED  MEMBER       ONLINE  NORMAL
 
SQL>

相关文章

精彩推荐