ASM 磁盘组如何重命名

2021-07-08 10:48:06 浏览数 (1)

大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起聊聊ASM 磁盘组如何重命名的问题,欢迎点击上方蓝字关注我,标星或置顶,更多干货第一时间到达!

前几天在 MOS 上看到一篇“如何在 11gR2 版本上重命名 ASM 磁盘组”的文章。记得很久之前有人问过是否可以重命名,当时要是看到这篇的话就可以参考一下了。不过对于这种操作来说还是很少见的,毕竟磁盘组名叫啥除了 DBA 关心外好像不关其他人什么事,而且 OCR、VOTE 盘是没法重命名的。其他磁盘组到是可以重命名,但也要注意由于 ASM 文件名(如 <OLD_DG_NAME>files / controlfiles 等)包括磁盘组名称,因此在重命名后,需要注意(更新 pfile 或重命名 <OLD_DG_NAME>files )RDBMS 实例。

  1. 首先,需要卸载所需的磁盘组(如果这是 RAC 配置,则从每个节点卸载): $ asmcmd umount <OLD_DG_NAME>
  2. 验证所需的磁盘组是否已卸载:
代码语言:javascript复制
$ asmcmd lsdg

State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name

MOUNTED NORMAL N 512 4096 1048576 32756 31828 244 15792 0 N <OLD_DG_NAME>_OCR/

MOUNTED EXTERN N 512 4096 1048576 16378 10134 0 10134 0 N LOB<OLD_DG_NAME>/

3. 然后执行rename语句:

代码语言:javascript复制
# renamedg phase=both dgname=<OLD_DG_NAME> newdgname=<NEW_DG_NAME> verbose=true

Parsing parameters..

Parameters in effect:

Old DG name : <OLD_DG_NAME>

New DG name : <NEW_DG_NAME>

Phases :

Phase 1

Phase 2

Discovery str : (null)

Clean : TRUE

Raw only : TRUE

renamedg operation: phase=both dgname=<OLD_DG_NAME> newdgname=<NEW_DG_NAME> 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:<DISK_NAME>1 with disk number:0 and timestamp (32925601 -972709888)

Identified disk ASM:/opt/oracle/extapi/64/asm/orcl/1/libasm.so:ORCL:<DISK_NAME>2 with disk number:1 and timestamp (32925601 -972709888)

Identified disk ASM:/opt/oracle/extapi/64/asm/orcl/1/libasm.so:ORCL:<DISK_NAME>3 with disk number:2 and timestamp (32925601 -972709888)

Checking for hearbeat...

Re-discovering the group

Performing discovery with string:

Identified disk ASM:/opt/oracle/extapi/64/asm/orcl/1/libasm.so:ORCL:<DISK_NAME>1 with disk number:0 and timestamp (32925601 -972709888)

Identified disk ASM:/opt/oracle/extapi/64/asm/orcl/1/libasm.so:ORCL:<DISK_NAME>2 with disk number:1 and timestamp (32925601 -972709888)

Identified disk ASM:/opt/oracle/extapi/64/asm/orcl/1/libasm.so:ORCL:<DISK_NAME>3 with disk number:2 and timestamp (32925601 -972709888)

Checking if the diskgroup is mounted

Checking disk number:0

Checking disk number:1

Checking disk number:2

Checking if diskgroup is used by CSS

Generating configuration file..

Completed phase 1

Executing phase 2

Looking for ORCL:<DISK_NAME>1

Modifying the header

Looking for ORCL:<DISK_NAME>2

Modifying the header

Looking for ORCL:<DISK_NAME>3

Modifying the header

Completed phase 2

Terminating kgfd context 0x2af21517e0a0

如果上面的命令失败,搜索磁盘,那么我们需要包含磁盘字符串,然后你需要使用

代码语言:javascript复制
renamedg phase=both dgname=<OLD_DG_NAME> newdgname=<NEW_DG_NAME> verbose=true asm_diskstring='<discoverystring1>','<discoverystring2>'
  1. 最后,挂载重命名的磁盘组并验证它是否已挂载(如果这是 RAC 配置,则在每个节点上):
代码语言:javascript复制
$ asmcmd mount <NEW_DG_NAME>
$ asmcmd lsdg

State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name

MOUNTED NORMAL N 512 4096 1048576 32756 31828 244 15792 0 N <OLD_DG_NAME>_OCR/

MOUNTED EXTERN N 512 4096 1048576 24567 14267 0 14267 0 N <NEW_DG_NAME>/
MOUNTED EXTERN N 512 4096 1048576 16378 10134 0 10134 0 N LOB<OLD_DG_NAME>/

>>>请避免使用重命名 OCR/VOTE 磁盘组。>>>

重要提示:使用重命名磁盘组名称会发生变化。由于 ASM 文件名(如 <OLD_DG_NAME>files / controlfiles 等)包括磁盘组名称,因此在重命名后,您需要注意(更新 pfile 或重命名 <OLD_DG_NAME>files )RDBMS 实例。

下面来一起试试:

在 19c 环境中新建一个磁盘组来试验一下:

查看可使用的裸盘

代码语言:javascript复制
ASMCMD> lsdsk --candidate -p
Group_Num  Disk_Num      Incarn  Mount_Stat  Header_Stat  Mode_Stat  State   Path
        0         0           0  CLOSED      CANDIDATE    ONLINE     NORMAL  /dev/asmdisks/asm-mgmt

静默创建磁盘组

代码语言:javascript复制
asmca -silent -createDiskGroup -sysAsmPassword Oracle19c -asmsnmpPassword Oracle19c -oui_internal  -diskString '/dev/asmdisks/asm*' -diskGroupName TEST -diskList /dev/asmdisks/asm-mgmt -redundancy EXTERNAL -au_size 4 -compatible.asm 19.0.0.0.0	

静默创建的语法如下:

代码语言:javascript复制
jieke-rac1:/dev/asmdisks( ASM1)$ asmca -silent -h
asmca [-silent] [-sysAsmPassword <SYS 用户口令>] [-asmsnmpPassword <ASM 监视口令>] {<command> <options>}
有关详细信息, 请参阅手册。
您可以输入以下命令之一:

1. 通过指定以下命令和参数来配置 ASM 实例:
        -configureASM
                [-sysAsmPassword <SYS 用户口令>]
                [-asmsnmpPassword <ASM 监视口令>]
                [(-param <paramname=paramvalue>)]
                -diskString <磁盘搜索路径>
                (-diskGroupName <磁盘组名>
                        (-disk <磁盘路径> [-diskName <磁盘名>] |
                         -diskList <逗号分隔的磁盘列表>
                                [-diskSize <磁盘大小 (MB)>] 
                                [-failuregroup <故障组名>] 
                                [-force|-noforce] 
                                [-quorum|-noquorum])
                        [-redundancy <HIGH|NORMAL|EXTERNAL|FLEX|EXTENDED>]
                        [-au_size <1 ~ 64>]
                        [-compatible.asm <11.2.0.2 ~ 12.2>]
                        [-compatible.rdbms <11.2.0.2 ~ 12.2>]
                        [-compatible.advm <11.2.0.2 ~ 12.2>])

2. 通过指定以下命令和参数来配置 ASM 参数:
        -configureParameter
                (-param <paramname=paramvalue>)
                (-target <ASM|APX|IOS> 为其配置初始化参数的目标。如果未配置 spfile, 则将为该目标配置新的 spfile)
                [-sysAsmPassword <SYS 用户口令>]

3. 通过指定以下命令和参数来创建磁盘组:
        -createDiskGroup
                [-diskString <磁盘搜索路径>]
                (-diskGroupName <磁盘组名>
                        (-disk <磁盘路径> [-diskName <磁盘名>] |
                         -diskList <逗号分隔的磁盘列表>
                                [-diskSize <磁盘大小 (MB)>] 
                                [-failureGroups <逗号分隔的故障组名列表>] 
                                [-quorumFailureGroups <逗号分隔的故障组名列表>] 
                                [-sites <站点名称>] 
                                [-force|-noforce] 
                                [-quorum|-noquorum])
                        [-redundancy <HIGH|NORMAL|EXTERNAL|FLEX|EXTENDED>]
                        [-au_size <1 ~ 64>]
                        [-compatible.asm <11.2.0.2 ~ 12.2>]
                        [-compatible.rdbms <11.2.0.2 ~ 12.2>]
                        [-compatible.advm <11.2.0.2 ~ 12.2>]
                        [-sector_size.physical <512, 4k>]
                        [-sector_size.logical <512, 4k>]
                        [-autoLabel <自动生成 AFD 标签; 如果未指定标签前缀, 则将磁盘组名用作前缀>])
                        [-labelPrefix <标签前缀将用于创建 AFD 标签>]
                [-sysAsmPassword <SYS 用户口令>]

4. 通过指定以下命令和参数将磁盘添加到磁盘组:
        -addDisk
                [-diskString <磁盘搜索路径>]
                (-diskGroupName <磁盘组名>
                        (-disk <磁盘路径> [-diskName <磁盘名>] |
                         -diskList <逗号分隔的磁盘列表>
                                [-diskSize <磁盘大小 (MB)>] 
                                [-failuregroup <故障组名>] 
                                [-force|-noforce] 
                                [-quorum|-noquorum])
                        [-autoLabel <自动生成 AFD 标签; 如果未指定标签前缀, 则将磁盘组名用作前缀>]
                        [-labelPrefix <标签前缀将用于创建 AFD 标签>]
                [-sysAsmPassword <SYS 用户口令>]

5. 通过指定以下命令和参数来创建卷:
        -createVolume
                (-volumeName <ASM 卷名>
                -volumeDiskGroup <卷的 ASM 磁盘组名>
                -volumeSizeGB <ASM 卷大小 (GB)>
                [-volumeRedundancy <INHERIT|MIRROR|HIGH|UNPROTECTED>])
                [-sysAsmPassword <SYS 用户口令>]

6. 通过指定以下命令和参数来创建 ASM 集群文件系统:
        -createACFS
                (-acfsVolumeDevice <ASM 卷设备>)
                (-acfsMountPoint <现有主机文件系统路径>)
                [-acfsUserName <ACFS 用户名>]
                [-acfsGroupName <ACFS 组名>]
                [-sysAsmPassword <SYS 用户口令>]

7. 通过指定以下命令和参数来创建 ACFS 快照:
        -createACFSSnapshot
                (-acfsMountPoint <ACFS 装载点>)
                (-snapshotName <ACFS 快照名>)
                [-snapshotMode <ACFS 快照模式 r|w>]
                [-parentSnapshotName <父 ACFS 快照名>]

8. 通过指定以下命令和参数来删除现有 ACFS 快照:
        -deleteACFSSnapshot
                (-acfsMountPoint <ACFS 装载点>)
                (-snapshotName <ACFS 快照名>)

9. 通过指定以下命令和参数, 在给定磁盘组上创建一个或多个新的文件组:
        -createFileGroups
                (-diskGroupName <磁盘组名>)
                (-fileGroupNames <包含要处理的所有文件组名称的逗号分隔列表>)
                (-fileGroupUsages <包含用法字符串的逗号分隔列表, 这些用法字符串对应于要处理的所有文件组>)
                (-fileGroupUsageIDs <包含用法 ID 字符串的逗号分隔列表, 这些用法 ID 字符串对应于要处理的所有文件组>)

10. 通过指定以下命令和参数, 删除给定磁盘组上的一个或多个文件组:
        -dropFileGroups
                (-diskGroupName <磁盘组名>)
                (-fileGroupNames <包含要处理的所有文件组名称的逗号分隔列表>)

11. 通过指定以下命令和参数, 在给定磁盘组上创建一个或多个新的限额组:
        -createQuotaGroups
                (-diskGroupName <磁盘组名>)
                (-quotaGroupNames <包含要处理的所有限额组名称的逗号分隔列表>)
                (-quotaGroupSizes <包含大小的逗号分隔列表, 这些大小对应于要处理的所有限额组>)

12. 通过指定以下命令和参数, 删除给定磁盘组上的一个或多个限额组:
        -dropQuotaGroups
                (-diskGroupName <磁盘组名>)
                (-quotaGroupNames <包含要处理的所有限额组名称的逗号分隔列表>)

13. 编辑现有磁盘组的一个或多个属性的当前值。
        -editDiskGroupAttributes
                (-diskGroupName <磁盘组名>)
                (-attribute <<attribute name=attribute value> 格式的字节组用于指定磁盘组属性。>)

查看创建成功

代码语言:javascript复制
ASMCMD> lsdg
State    Type    Rebal  Sector  Logical_Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512             512   4096  4194304    307200   122736                0          122736              0             N  DATA/
MOUNTED  EXTERN  N         512             512   4096  4194304    102400    92120                0           92120              0             N  FRA/
MOUNTED  NORMAL  N         512             512   4096  4194304      9216     8236             3072            2582              0             Y  OCR/
MOUNTED  EXTERN  N         512             512   4096  4194304     51200    51064                0           51064              0             N  TEST/

当然也可直接修改 compatible 属性

代码语言:javascript复制
su - grid 
sqlplus / as sysasm 
SYS@ ASM2>col value for a30
SYS@ ASM2>col name for a30
SYS@ ASM2>set lin 120
SYS@ ASM2>select name,value from v$asm_attribute where group_number=4 and name like 'compatible%';
NAME               VALUE
------------------ ------------------------------
compatible.asm     19.0.0.0.0
compatible.rdbms   10.1.0.0.0
compatible.advm    19.0.0.0.0
SYS@ ASM2>ALTER DISKGROUP TEST SET ATTRIBUTE 'compatible.rdbms' = '19.0.0.0.0';

然后我们用新建的磁盘组来尝试重命名,对于有数据的磁盘本次暂未考虑。

首先两节点均卸载磁盘组

代码语言:javascript复制
asmcmd umount test

然后开始重命名

代码语言:javascript复制
renamedg phase=both dgname=TEST newdgname=JIEKE verbose=true

重命名前一定得卸载两节点的磁盘组

挂载新命名的磁盘组 JIEKE

上边有报错,用下边的命令继续将磁盘组 JIEKE 重命名为 JIEKEXU

代码语言:javascript复制

下面是详细日志,无报错。

代码语言:javascript复制
jieke-rac1:/home/grid( ASM1)$ renamedg phase=both dgname=JIEKE newdgname=JIEKEXU verbose=true asm_diskstring='/dev/asmdisks/asm-mgmt'

Parameters in effect:

         Old DG name       : JIEKE 
         New DG name          : JIEKEXU 
         Phases               :
                 Phase 1
                 Phase 2
         Discovery str        : /dev/asmdisks/asm-mgmt 
         Clean              : TRUE
         Raw only           : TRUE
renamedg operation: phase=both dgname=JIEKE newdgname=JIEKEXU verbose=true asm_diskstring=/dev/asmdisks/asm-mgmt
Executing phase 1
Discovering the group
Performing discovery with string:/dev/asmdisks/asm-mgmt
Identified disk UFS:/dev/asmdisks/asm-mgmt with disk number:0 and timestamp (33119146 1388808192)
Checking for hearbeat...
Re-discovering the group
Performing discovery with string:/dev/asmdisks/asm-mgmt
Identified disk UFS:/dev/asmdisks/asm-mgmt with disk number:0 and timestamp (33119146 1388808192)
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 /dev/asmdisks/asm-mgmt
Modifying the header
Completed phase 2

两个节点 mount 磁盘组

代码语言:javascript复制
asmcmd mount jiekexu
代码语言:javascript复制
ASMCMD> lsdg
State    Type    Rebal  Sector  Logical_Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512             512   4096  4194304    307200   122736                0          122736              0             N  DATA/
MOUNTED  EXTERN  N         512             512   4096  4194304    102400    92120                0           92120              0             N  FRA/
MOUNTED  EXTERN  N         512             512   4096  4194304     51200    51064                0           51064              0             N  JIEKEXU/
MOUNTED  NORMAL  N         512             512   4096  4194304      9216     8236             3072            2582              0             Y  OCR/
ASMCMD>

本次重命名只是一块新的磁盘组没有存放任何数据,操作比较简单,如果磁盘里存放数据文件、密码文件、参数文件等数据库重要文件,肯定难度指数级上升。只供测试环境学习使用,生产环境禁用,以上仅供参考。


好了,今天的文章就到此为止了。如果此文对您有帮助,欢迎点赞、在看与转发,写作不易,举手之劳,便是对作者最大的支持,也能让更多的人受益。

参考文档:

How To Rename A Diskgroup On ASM 11gR2? (Doc ID 948040.1)

———————————————————————— 公众号:JiekeXu DBA之路 墨天轮:https://www.modb.pro/u/4347 CSDN :https://blog.csdn.net/JiekeXu 腾讯云:https://cloud.tencent.com/developer/user/5645107 ————————————————————————

0 人点赞