查看原文
其他

ASM 磁盘组如何重命名

JiekeXu JiekeXu DBA之路 2024-03-03

作者 | JiekeXu

来源 | JiekeXu DBA之路(ID: JiekeXu_IT)

大家好,我是 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. 验证所需的磁盘组是否已卸载:

$ 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语句:

# 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

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

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

$ 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 环境中新建一个磁盘组来试验一下:

查看可使用的裸盘

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

静默创建磁盘组

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

静默创建的语法如下:

jieke-rac1:/dev/asmdisks(+ASM1)$ asmca -silent -hasmca [-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> 格式的字节组用于指定磁盘组属性。>)

查看创建成功

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 属性

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

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

首先两节点均卸载磁盘组

asmcmd umount test

然后开始重命名

renamedg phase=both dgname=TEST newdgname=JIEKE verbose=true



执行上面命令会有一些找不到磁盘的错误但也会成功,将其 mount


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

挂载新命名的磁盘组 JIEKE

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


renamedg phase=both dgname=JIEKE newdgname=JIEKEXU verbose=true asm_diskstring='/dev/asmdisks/asm-mgmt'

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

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 磁盘组

asmcmd mount jiekexu
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

————————————————————————



Oracle 12c 及以上版本补丁更新说明及下载方法(收藏版)

Oracle 19c 19.10DBRU 最新补丁升级看这一篇就够了

ASM 管理的内部工具:KFED、KFOD、AMDU

性能优化|关于数据库历史性能问题的一道面试题

一线运维 DBA 五年经验常用 SQL 大全(二)

ORA-00349|激活 ADG 备库时遇到的问题

Oracle 轻量级实时监控工具 oratop

MySQL OCP 认证考试你知道吗?

Oracle 19C RAC 安装遇到的坑

Oracle 19C MAA 搭建指南

Oracle 每日一题系列合集

百花齐放的国产数据库

继续滑动看下一个

ASM 磁盘组如何重命名

JiekeXu JiekeXu DBA之路
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存