Oracle ASM特性介绍和增删盘操作

1. 介绍

1.1. 在没有ASM之前ORACLE数据库靠什么去解决存储问题:

  1. 裸设备:裸设备就是没有被文件系统格式化的分区或者是直接挂载到操作系统上的磁盘。ORACLE可以直接将数据写入到裸设备中,读写能非常优异。像ORACLE的数据文件、控制文件、REDO日志在过去经常使用裸设备作为存储介质。裸设备最大的缺点就是裸设备自身没有办法去保障数据的安全性。只能依靠频繁数据库备份让数据库更加安全。ORACLE11G R2这个版本开始,官方就已经不再支持在DBCA中创建裸设备类型的存储了。但是还可以通过其他的方式去实现。
  2. 文件系统:这里的文件系统指的就是正常的操作系统下的文件系统比如说(EXT3/4、UFS XFS ZFS JFS2 NTFS FAT32)等。文件系统最大的优点容易管理,而且具备文件系统日志可以在系统崩溃后对相关文件进行恢复。缺点就是读写性能尤其是写性能不如裸设备的,因为要写文件系统日志。但是虽然硬件的发展,在后期已经看不出来明显的区别了。现在仍有很多公司让ORACLE数据库安装在文件系统存储上。文件系统对小白特别友好。
  3. 自动存储管理系统-ASM --【Automatic Storage Management】
  • 是一种便于管理和高性能的集群文件系统(优点)
  • 管理Oracle数据文件 日志文件 控制文件等(作用)
  • 自动将数据在不同的磁盘间负载均衡(磁盘均衡)
  • 提供完整的磁盘镜像(故障组 数据冗余)
  • 解决很多存储管理上的难题(共享存储 负载均衡)
  • 可用于单实例或RAC数据库(ASM实例的多样性)
  • ASM可以使用OMF模式(ORACLE文件系统)

1.2. ASM 关键特性

ASM可以使数据在磁盘组中均匀的分布,并且可以独立于操作系统层面,做到磁盘的镜像,保证磁盘上面数据的安全。

1.3. ASM存储:物理和逻辑概念

  1. 磁盘组(DISK GROUP)是一个或者多个ASM磁盘组成的逻辑分区。ASM将其作为一个集合来管理。每个磁盘组都包含与自身关联的元数据。在概念上,ASM磁盘组类似于典型存储中VG.
SQL> select group_number,name,type,total_mb,free_mb   from v$asm_diskgroup;GROUP_NUMBER NAME                           TYPE     TOTAL_MB    FREE_MB
------------ ------------------------------ ------ ---------- ----------1 DGDATA01                       EXTERN       2048        4882 DGGRID01                       NORMAL       3072       18883 DGGRID02                       NORMAL       3072       21044 DGRECOVERY                     EXTERN       3072       28885 DGSYSTEM                       EXTERN       8192       2880
  1. 从磁盘组内分配文件空间(ASM FILE)。磁盘组中存储的文件的内容将在磁盘组的磁盘中平均分布或条带化。以便消除热点(频繁访问的部分)并在各个磁盘上提供一致的性能。每个ASM文件都包含在一个磁盘组中,但是,一个磁盘组可以包含多个ASM FILE。而一个数据库可以使用来自多个磁盘组不同的文件。

  1. ASM DISK(ASM磁盘)
  • 是为ASM磁盘组预留(可使用的)存储设备
  • 通过正常的操作系统接口来访问(IO接口)
  • 必须可由ASM所有者读取和写入(GRID:asmadmin)
  • RAC集群中的所有节点必须都可以访问
  • 在不同节点上可以有不同的操作系统名称或绝对路径(如果每个操作系统上连接的存储具有多条存储访问路径那么就要由多路[链路]融合软件去做融合)
SQL> select NAME,PATH,total_mb,free_mb from v$asm_disk;NAME                 PATH                                                 TOTAL_MB    FREE_MB
-------------------- -------------------------------------------------- ---------- ----------
DGGRID01_0001        /dev/asm-grid02                                          1024        608
DGGRID02_0002        /dev/asm-grid06                                          1024        704
DGGRID02_0000        /dev/asm-grid04                                          1024        704
DGGRID01_0002        /dev/asm-grid03                                          1024        632
DGGRID01_0000        /dev/asm-grid01                                          1024        648
DGGRID02_0001        /dev/asm-grid05                                          1024        696
DGRECOVERY_0000      /dev/asm-dgrecovery1                                     3072       2888
DGDATA01_0000        /dev/asm-dgdate01                                        2048        488
DGSYSTEM_0000        /dev/asm-dgsystem1                                       8192       2880

ASM DISK可以是:

  • 整个物理磁盘或物理分区
  • 存储阵列中的磁盘或分区
  • LVM VG上的逻辑卷(LV) 但是非常不建议你使用LVM。
  • 存储服务器上的逻辑单元(LUN)
  • 网络文件系统(NFS)非常不建议使用NFS,存储性能比较差

  1. 分配单元(AU):ASM磁盘划分的最小可用读写单元。而且也是ASM逻辑存储的基本构成。他是由存储器(磁盘 LUN RAID阵列磁盘)物理块构成的(参考你的ASM DISK所使用介质)。如果你的ASM磁盘是VG-LV构成的话,其使用的是LV的LE所对应的PE构成的。但是非常不建议你使用LVM。
  • 在创建磁盘组时可用配置AU大小
    • 11g默认是1MB
    • 19C默认的是4MB
    • 小AU的优点就是能够被数据库ASM的DB_BUFFER_CACHE快速缓存。
    • 大AU的优点就是能够提高更高效的连续读写操作或多块读取操作。

1.4. ORACLE19C-ASM冗余级别

ORACLE19C ASM提供了4种冗余级别:

  1. External:asm 磁盘组不提供数据冗余,依靠外部raid提供数据保护
  2. Normal:asm 磁盘组提供2份数据冗余,至少需要2个故障组,最多同时损坏一个故障组的磁盘,假定磁盘空间足够的话,最多可损坏n-1个磁盘
  3. High:asm 磁盘组提供3份数据冗余,至少需要3个故障组,最多同时损坏二个故障组的磁盘,假定磁盘空间足够的话,最多可损坏n-1个磁盘
  4. Flex:asm 磁盘组提供3份或者2份数据冗余,至少需要3个故障组,在拥有5个以及以上故障组情况下最多同时损坏二个故障组的磁盘,当故障组数少于5个时最多损坏一个故障组磁盘,最多可损坏n-1个磁盘

2. 实操

2.1. ASMCMD命令介绍

使用grid用户执行ASMCMD命令,在asm中,任何命令都可以使用help+命令来输出帮助。

[grid@hfdb30:/home/grid]$asmcmd help
asmcmdStarts asmcmd or executes the commandSynopsisasmcmd [-V] [--nocp] [-v {errors | warnings | normal | info | debug} ] [--privilege {sysasm | sysdba} ] [-p] [--inst <instance_name>] [--discover][<command>]DescriptionThe environment variables ORACLE_HOME and ORACLE_SID determine theinstance to which the program connects, and ASMCMD establishes abequeath connection to it, in the same manner as a SQLPLUS / ASSYSASM.  The user must be a member of the OSASM group.If Flex ASM is enabled, the ASMCMD connects to any one of the ASMinstances running in the cluster. The connection to ASM instance doesnot depend on the environment variables ORACLE_HOME and ORACLE_SID.The ASMCMD alert log shows to which instance ASMCMD is connected to.If the user wants to connect to a specific ASM instance, --inst optionshould be used to specify the instance name.Specifying the -V option prints the asmcmd version number andexits immediately.Specifying the --nocp option disables connection pooling feature forASMCMD.Specifying the -v option prints extra information that can helpadvanced users diagnose problems.Specify the --privilege option to choose the type of connection. There areonly two possibilities: connecting as SYSASM or as SYSDBA.The default value if this option is unspecified is SYSASM.Specifying the -p option allows the current directory to be displayedin the command prompt, like so:ASMCMD [+DATA/ORCL/CONTROLFILE] >Specifying the --discover option uses discovery string obtained fromListener, does not use ORACLE_SID.[command] specifies one of the following commands, along with itsparameters.Type "help [command]" to get help on a specific ASMCMD command.commands:--------afd_configure, afd_deconfigure, afd_di, afd_dsget, afd_dssetafd_filter, afd_label, afd_lsdsk, afd_lslbl, afd_refreshafd_scan, afd_state, afd_unlabelmd_backup, md_restoreamdu_extractlsattr, setattraudcleanaudittrail, audclearproperty, audcleartimestampaudcreatejob, auddropjob, audloaduniauditfiles, audsetdebugaudsetjobinterval, audsetjobstatus, audsetproperty, audsettimestampaudsettraillocation, audshowtimestamp, lsaudcleaneventslsaudcleanupjobs, lsaudconfigparamscd, cp, du, find, help, ls, lsct, lsdg, lsof, mkaliasmkdir, pwd, rm, rmalias, setsparseparent, showclustermodeshowclusterstate, showpatches, showversionchblk, lsblk, mapau, mapblk, mapextentchdg, chkdg, dropdg, iostat, lsdsk, lsod, mkdg, mountoffline, online, rebal, remap, stamp, stamplist, umountchfg, lsfg, mkfg, mvfile, rmfgpwcopy, pwcreate, pwdelete, pwget, pwmove, pwsetchqg, lsqg, mkqg, mvfg, rmqgchcc, dsget, dsset, lscc, lsop, mkcc, rmcc, shutdownspbackup, spcopy, spget, spmove, spset, startupchtmpl, lstmpl, mktmpl, rmtmplchgrp, chmod, chown, groups, grpmod, lsgrp, lspwusr, lsusrmkgrp, mkusr, orapwusr, passwd, rmgrp, rmusr, rpusrvolcreate, voldelete, voldisable, volenable, volinfovolresize, volset, volstat

常用命令

ls

ls -ls

列出ASM目录下的内容及其属性、磁盘空间占用 和 lsdg命令同理

du

du dgdata1

显示指定的ASM目录下ASM文件占用的所有磁盘空间

pwd

pwd

查看当前路径

cd

cd ..

进入上层目录

lsct

列出当前ASM客户端的信息

lsdg

列出所有磁盘组及其属性

lsof

列出数据文件 控制文件等文件的信息

lsdsk

列出盘的信息(ASM DISK)

rm

rm -rf

删除命令

cp

磁盘组与操作系统之间拷贝文件

[grid@hfdb30:/home/grid]$asmcmd ls -ls
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      5120     4972                0            4972              0             N  DGDATA1/
MOUNTED  NORMAL  N         512             512   4096  4194304      3072     2108             1024             542              0             Y  DGGRID1/
MOUNTED  NORMAL  N         512             512   4096  4194304      3072     2604             1024             790              0             N  DGGRID2/
MOUNTED  EXTERN  N         512             512   4096  4194304      5120     4460                0            4460              0             N  DGRECOVERY1/
MOUNTED  EXTERN  N         512             512   4096  4194304      8192      828                0             828              0             N  DGSYSTEM1/

        在 ASMCMD 环境中,ASM 本身并不直接支持文件重命名操作。ASM 的设计目的是管理存储,而不是提供文件系统级别的操作,如重命名。因此,你不能直接使用 ASMCMD 来重命名文件。

不过,你可以通过以下步骤间接实现文件的重命名:

ASMCMD> cp thread_2_seq_50.313.1186845409 thread_2_seq_50.313.1186845409.bak
copying +DGRECOVERY1/hfdb/ARCHIVELOG/2024_12_04/thread_2_seq_50.313.1186845409 -> +DGRECOVERY1/hfdb/ARCHIVELOG/2024_12_04/thread_2_seq_50.313.1186845409.bakASMCMD> cp +DATA/orcl/tablespace01.dbf +DATA/orcl/new_tablespace01.dbf

2.2. 系统动态添加ASM可用磁盘

2.2.1. 前期准备

目前 ASM 磁盘组信息:

[grid@hfdb30:/home/grid]$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      5120     4972                0            4972              0             N  DGDATA1/
MOUNTED  NORMAL  N         512             512   4096  4194304      3072     2108             1024             542              0             Y  DGGRID1/
MOUNTED  NORMAL  N         512             512   4096  4194304      3072     2604             1024             790              0             N  DGGRID2/
MOUNTED  EXTERN  N         512             512   4096  4194304      5120     4456                0            4456              0             N  DGRECOVERY1/
MOUNTED  EXTERN  N         512             512   4096  4194304      8192      828                0             828              0             N  DGSYSTEM1/

检查磁盘组配置情况:

[grid@hfdb30:/home/grid]$sqlplus / as sysasm
set line2222 pages1000
col name for a30
col path for a60
col mode_status for a10
col diskgroupname for a10
col type for a10
select a.path,a.name,a.mode_status,b.name diskgroupname,b.type 
from v$asm_disk a,v$asm_diskgroup b 
where a.group_number=b.group_number;
PATH                                                         NAME                           MODE_STATU DISKGROUPN TYPE
------------------------------------------------------------ ------------------------------ ---------- ---------- ----------
/dev/asm-grid3                                               DGGRID1_0002                   ONLINE     DGGRID1    NORMAL
/dev/asm-grid4                                               DGGRID2_0000                   ONLINE     DGGRID2    NORMAL
/dev/asm-grid1                                               DGGRID1_0000                   ONLINE     DGGRID1    NORMAL
/dev/asm-grid2                                               DGGRID1_0001                   ONLINE     DGGRID1    NORMAL
/dev/asm-dgsystem1                                           DGSYSTEM1_0000                 ONLINE     DGSYSTEM1  EXTERN
/dev/asm-grid6                                               DGGRID2_0002                   ONLINE     DGGRID2    NORMAL
/dev/asm-dgdata1                                             DGDATA1_0000                   ONLINE     DGDATA1    EXTERN
/dev/asm-grid5                                               DGGRID2_0001                   ONLINE     DGGRID2    NORMAL
/dev/asm-dgrecovery1                                         DGRECOVERY1_0000               ONLINE     DGRECOVERY EXTERN                                                                                                      19 rows selected.SQL> show parameter asm_diskstringNAME                                 TYPE       VALUE
------------------------------------ ---------- ------------------------------
asm_diskstring                       string     /dev/asm*

通过以上查询可以发现,dgdata1 磁盘组有 1 块磁盘组成,冗余方式为外部冗余。

📢 注意: 如果 DATA 磁盘组是 NORMAL 冗余,则需要至少 2 块新磁盘;如果 DATA 磁盘组是 HIGH 冗余,则需要至少 3 块新磁盘。

2.2.2. 配置新 ASM 磁盘

ASM 磁盘配置方式为多路径+UDEV 方式,新增两块盘大小一致磁盘 /dev/sdm/dev/sdn 作为需要更换的新磁盘,大小为 5G。

[root@hfdb30 ~]# ll /dev/sd*
brw-rw---- 1 root disk     8,   0 Dec  4 21:06 /dev/sda
brw-rw---- 1 root disk     8,   1 Dec  4 21:06 /dev/sda1
brw-rw---- 1 root disk     8,   2 Dec  4 21:06 /dev/sda2
brw-rw---- 1 root disk     8,  16 Dec  4 21:06 /dev/sdb
brw-rw---- 1 root disk     8,  17 Dec  4 21:06 /dev/sdb1
brw-rw---- 1 root disk     8,  32 Dec  4 21:06 /dev/sdc
brw-rw---- 1 root disk     8,  33 Dec  4 21:06 /dev/sdc1
brw-rw---- 1 grid asmadmin 8,  48 Dec  4 21:06 /dev/sdd
brw-rw---- 1 grid asmadmin 8,  64 Dec  4 21:06 /dev/sde
brw-rw---- 1 grid asmadmin 8,  80 Dec  4 21:06 /dev/sdf
brw-rw---- 1 grid asmadmin 8,  96 Dec  4 21:06 /dev/sdg
brw-rw---- 1 grid asmadmin 8, 112 Dec  4 21:06 /dev/sdh
brw-rw---- 1 grid asmadmin 8, 128 Dec  4 21:06 /dev/sdi
brw-rw---- 1 grid asmadmin 8, 144 Dec  4 21:06 /dev/sdj
brw-rw---- 1 grid asmadmin 8, 160 Dec  4 21:06 /dev/sdk
brw-rw---- 1 grid asmadmin 8, 176 Dec  4 21:06 /dev/sdl
brw-rw---- 1 root disk     8, 192 Dec  4 21:06 /dev/sdm
brw-rw---- 1 root disk     8, 208 Dec  4 21:06 /dev/sdn

生成uuid:

for i in  {m..n};
do
echo "KERNEL==\"sd?\",SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\",RESULT==\"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", SYMLINK+=\"asm-disk$i\",OWNER=\"grid\", GROUP=\"asmadmin\",MODE=\"0660\""
doneKERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="1ATA_VBOX_HARDDISK_VBb73b1077-44f36cb7", SYMLINK+="asm-dgdate02",OWNER="grid", GROUP="asmadmin",MODE="0660"
KERNEL=="sd?",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="1ATA_VBOX_HARDDISK_VBc212c542-6652c568", SYMLINK+="asm-dgdate03",OWNER="grid", GROUP="asmadmin",MODE="0660"

配置uuid:

[root@hfdb30 ~]# vi /etc/udev/rules.d/99-oracle-asmdevices.rules
[root@hfdb30 ~]# /sbin/udevadm trigger --type=devices --action=change
[root@hfdb30 ~]# ls -lsa /dev/asm*
0 lrwxrwxrwx 1 root root 3 Dec  4 21:18 /dev/asm-dgdata1 -> sdl
0 lrwxrwxrwx 1 root root 3 Dec  4 21:18 /dev/asm-dgdate02 -> sdm  ####磁盘的路径
0 lrwxrwxrwx 1 root root 3 Dec  4 21:18 /dev/asm-dgdate03 -> sdn
0 lrwxrwxrwx 1 root root 3 Dec  4 21:18 /dev/asm-dgrecovery1 -> sdk
0 lrwxrwxrwx 1 root root 3 Dec  4 21:18 /dev/asm-dgsystem1 -> sdj
0 lrwxrwxrwx 1 root root 3 Dec  4 21:18 /dev/asm-grid1 -> sdd
0 lrwxrwxrwx 1 root root 3 Dec  4 21:18 /dev/asm-grid2 -> sde
0 lrwxrwxrwx 1 root root 3 Dec  4 21:18 /dev/asm-grid3 -> sdf
0 lrwxrwxrwx 1 root root 3 Dec  4 21:18 /dev/asm-grid4 -> sdg
0 lrwxrwxrwx 1 root root 3 Dec  4 21:18 /dev/asm-grid5 -> sdh
0 lrwxrwxrwx 1 root root 3 Dec  4 21:18 /dev/asm-grid6 -> sdi
[root@hfdb30 ~]#-- 在节点2上面配置
[root@hfdb31 ~]# vi /etc/udev/rules.d/99-oracle-asmdevices.rules
[root@hfdb31 ~]# /sbin/udevadm trigger --type=devices --action=change
[root@hfdb31 ~]# ls -lsa /dev/asm*
0 lrwxrwxrwx 1 root root 3 Dec  4 21:21 /dev/asm-dgdata1 -> sdl
0 lrwxrwxrwx 1 root root 3 Dec  4 21:21 /dev/asm-dgdate02 -> sdm
0 lrwxrwxrwx 1 root root 3 Dec  4 21:21 /dev/asm-dgdate03 -> sdn
0 lrwxrwxrwx 1 root root 3 Dec  4 21:21 /dev/asm-dgrecovery1 -> sdk
0 lrwxrwxrwx 1 root root 3 Dec  4 21:21 /dev/asm-dgsystem1 -> sdj
0 lrwxrwxrwx 1 root root 3 Dec  4 21:21 /dev/asm-grid1 -> sdd
0 lrwxrwxrwx 1 root root 3 Dec  4 21:21 /dev/asm-grid2 -> sde
0 lrwxrwxrwx 1 root root 3 Dec  4 21:21 /dev/asm-grid3 -> sdf
0 lrwxrwxrwx 1 root root 3 Dec  4 21:21 /dev/asm-grid4 -> sdg
0 lrwxrwxrwx 1 root root 3 Dec  4 21:21 /dev/asm-grid5 -> sdh
0 lrwxrwxrwx 1 root root 3 Dec  4 21:21 /dev/asm-grid6 -> sdi[root@hfdb30 ~]# ls -lsa /dev/sd*
0 brw-rw---- 1 root disk     8,   0 Dec  4 21:18 /dev/sda
0 brw-rw---- 1 root disk     8,   1 Dec  4 21:18 /dev/sda1
0 brw-rw---- 1 root disk     8,   2 Dec  4 21:18 /dev/sda2
0 brw-rw---- 1 root disk     8,  16 Dec  4 21:18 /dev/sdb
0 brw-rw---- 1 root disk     8,  17 Dec  4 21:18 /dev/sdb1
0 brw-rw---- 1 root disk     8,  32 Dec  4 21:18 /dev/sdc
0 brw-rw---- 1 root disk     8,  33 Dec  4 21:18 /dev/sdc1
0 brw-rw---- 1 grid asmadmin 8,  48 Dec  4 21:18 /dev/sdd
0 brw-rw---- 1 grid asmadmin 8,  64 Dec  4 21:18 /dev/sde
0 brw-rw---- 1 grid asmadmin 8,  80 Dec  4 21:18 /dev/sdf
0 brw-rw---- 1 grid asmadmin 8,  96 Dec  4 21:18 /dev/sdg
0 brw-rw---- 1 grid asmadmin 8, 112 Dec  4 21:18 /dev/sdh
0 brw-rw---- 1 grid asmadmin 8, 128 Dec  4 21:18 /dev/sdi
0 brw-rw---- 1 grid asmadmin 8, 144 Dec  4 21:18 /dev/sdj
0 brw-rw---- 1 grid asmadmin 8, 160 Dec  4 21:18 /dev/sdk
0 brw-rw---- 1 grid asmadmin 8, 176 Dec  4 21:18 /dev/sdl
0 brw-rw---- 1 grid asmadmin 8, 192 Dec  4 21:18 /dev/sdm
0 brw-rw---- 1 grid asmadmin 8, 208 Dec  4 21:18 /dev/sdn

2.2.3. 原 ASM 磁盘组添加新磁盘

这里有两种方式,使用 sqlplus 命令行方式或者 ASMCA 图形化管理。

图形化方式过于简单,不做演示,本文使用命令行方式进行操作:

[grid@hfdb30:/home/grid]$sqlplus / as sysasmSQL> show parameter asm_power_limitNAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
asm_power_limit                      integer     1-- 当 asm_power_limit 设置为 0 时,不会自动重平衡,但是可以使用下面的语句来手动重平衡(比如白天加盘了,晚上再让它手动执行)
-- alter diskgroup DATA rebalance power 10;

查看磁盘状态-->进而获得哪个磁盘属于哪个磁盘组:

set lines 200;
col name for a30;
col path for a30;
select path, state, name, total_mb, free_mb from v$asm_disk;PATH                           STATE    NAME                             TOTAL_MB    FREE_MB
------------------------------ -------- ------------------------------ ---------- ----------
/dev/asm-dgdate02              NORMAL                                           0          0
/dev/asm-dgdate03              NORMAL                                           0          0
/dev/asm-grid2                 NORMAL   DGGRID1_0001                         1024        700
/dev/asm-grid1                 NORMAL   DGGRID1_0000                         1024        700
/dev/asm-grid4                 NORMAL   DGGRID2_0000                         1024        868
/dev/asm-grid3                 NORMAL   DGGRID1_0002                         1024        708
/dev/asm-dgdata1               NORMAL   DGDATA1_0000                         5120       4972
/dev/asm-dgrecovery1           NORMAL   DGRECOVERY1_0000                     5120       4456
/dev/asm-dgsystem1             NORMAL   DGSYSTEM1_0000                       8192        828
/dev/asm-grid5                 NORMAL   DGGRID2_0001                         1024        868
/dev/asm-grid6                 NORMAL   DGGRID2_0002                         1024        868SQL> select group_number,name,type,total_mb,free_mb   from v$asm_diskgroup;GROUP_NUMBER NAME                           TYPE     TOTAL_MB    FREE_MB
------------ ------------------------------ ------ ---------- ----------1 DGDATA1                        EXTERN       5120       49722 DGGRID1                        NORMAL       3072       21083 DGGRID2                        NORMAL       3072       26044 DGRECOVERY1                    EXTERN       5120       44565 DGSYSTEM1                      EXTERN       8192        828

添加新磁盘:

SQL> alter diskgroup DGDATA1 add disk '/dev/asm-dgdate02','/dev/asm-dgdate03' rebalance power 10;Diskgroup altered.SQL> select * from v$asm_operation;no rows selectedSQL>

等待磁盘组数据重平衡完毕,即 v$asm_operation 查询结果为空,重平衡后发现磁盘组的空间和磁盘发生变化,空间变成了新旧磁盘的总空间,新磁盘已经成功添加:

[grid@hfdb30:/home/grid]$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     12288    12116                0           12116              0             N  DGDATA1/
MOUNTED  NORMAL  N         512             512   4096  4194304      3072     2108             1024             542              0             Y  DGGRID1/
MOUNTED  NORMAL  N         512             512   4096  4194304      3072     2604             1024             790              0             N  DGGRID2/
MOUNTED  EXTERN  N         512             512   4096  4194304      5120     4456                0            4456              0             N  DGRECOVERY1/
MOUNTED  EXTERN  N         512             512   4096  4194304      8192      828                0             828              0             N  DGSYSTEM1/
[grid@hfdb30:/home/grid]$sqlplus / as sysasmset line2222 pages1000
col name for a30
col path for a60
col mode_status for a10
col diskgroupname for a10
col type for a10
select a.path,a.name,a.mode_status,b.name diskgroupname,b.type from v$asm_disk a,v$asm_diskgroup b where a.group_number=b.group_number;PATH                                                         NAME                           MODE_STATU DISKGROUPN TYPE
------------------------------------------------------------ ------------------------------ ---------- ---------- ----------
/dev/asm-dgdate02                                            DGDATA1_0001                   ONLINE     DGDATA1    EXTERN
/dev/asm-dgdate03                                            DGDATA1_0002                   ONLINE     DGDATA1    EXTERN
/dev/asm-grid2                                               DGGRID1_0001                   ONLINE     DGGRID1    NORMAL
/dev/asm-grid1                                               DGGRID1_0000                   ONLINE     DGGRID1    NORMAL
/dev/asm-grid4                                               DGGRID2_0000                   ONLINE     DGGRID2    NORMAL
/dev/asm-grid3                                               DGGRID1_0002                   ONLINE     DGGRID1    NORMAL
/dev/asm-dgdata1                                             DGDATA1_0000                   ONLINE     DGDATA1    EXTERN
/dev/asm-dgrecovery1                                         DGRECOVERY1_0000               ONLINE     DGRECOVERY EXTERN1/dev/asm-dgsystem1                                           DGSYSTEM1_0000                 ONLINE     DGSYSTEM1  EXTERN
/dev/asm-grid5                                               DGGRID2_0001                   ONLINE     DGGRID2    NORMAL
/dev/asm-grid6                                               DGGRID2_0002                   ONLINE     DGGRID2    NORMAL11 rows selected.

如果是扩容磁盘组,至此已经完成扩容了。

2.2.4. 从原 ASM 磁盘组踢出旧磁盘

ASM磁盘提倡:只增不减,在生产过程中最好不要去做这个操作。

-- 这里跟添加磁盘不一样,不能写磁盘路径名称,只能写磁盘名称,即 v$asm_disk.name
SQL> alter diskgroup DGDATA1 drop disk 'DGDATA1_0002'  rebalance power 10;Diskgroup altered.Diskgroup altered.SQL> select * from v$asm_operation;GROUP_NUMBER OPERA PASS      STAT      POWER     ACTUAL      SOFAR   EST_WORK   EST_RATE EST_MINUTES ERROR_CODE                                       CON_ID
------------ ----- --------- ---- ---------- ---------- ---------- ---------- ---------- ----------- -------------------------------------------- ----------1 REBAL COMPACT   WAIT          1          1          0          0          0           0                                                       01 REBAL REBALANCE RUN           1          1          0          0          0           0                                                       01 REBAL REBUILD   DONE          1          1          0          0          0           0                                                       0SQL> select * from v$asm_operation;GROUP_NUMBER OPERA PASS      STAT      POWER     ACTUAL      SOFAR   EST_WORK   EST_RATE EST_MINUTES ERROR_CODE                                       CON_ID
------------ ----- --------- ---- ---------- ---------- ---------- ---------- ---------- ----------- -------------------------------------------- ----------1 REBAL COMPACT   REAP          1          1          1          0          0           0                                                       01 REBAL REBALANCE DONE          1          1          7          7          0           0                                                       01 REBAL REBUILD   DONE          1          1          0          0          0           0                                                       0SQL> select * from v$asm_operation;no rows selected

等待磁盘组数据重平衡完毕,即 v$asm_operation 查询结果为空,重平衡后发现磁盘组的空间和磁盘发生变化,旧磁盘已经成功踢出:

[grid@hfdb30:/home/grid]$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     10240    10080                0           10080              0             N  DGDATA1/
MOUNTED  NORMAL  N         512             512   4096  4194304      3072     2108             1024             542              0             Y  DGGRID1/
MOUNTED  NORMAL  N         512             512   4096  4194304      3072     2604             1024             790              0             N  DGGRID2/
MOUNTED  EXTERN  N         512             512   4096  4194304      5120     4456                0            4456              0             N  DGRECOVERY1/
MOUNTED  EXTERN  N         512             512   4096  4194304      8192      828                0             828              0             N  DGSYSTEM1/
[grid@hfdb30:/home/grid]$

由于是使用UDEV 配置,所以需要将旧磁盘从配置中删除(所有节点均执行):

-- 从 UDEV 配置文件移除以下旧磁盘信息
vi /etc/udev/rules.d/99-oracle-asmdevices.rules
-- 刷新 UDEV 配置
/sbin/udevadm trigger --type=devices --action=change

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/34618.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

UiPath API接口说明

Swagger网址 私有云网址&#xff08;企业版&#xff09; https://企业/swagger/index.html 公有云网址&#xff08;社区版&#xff09; https://cloud.uipath.com/linan/LinanZhang/orchestrator_/swagger/index.html#/ 常见问题 Swagger页面测试请求时报错“You are not a…

【机械加工】数字化软件打造,如何实现3D交互可视化?

机械加工是制造业的重要领域之一&#xff0c;随着制造技术和工艺的不断发展&#xff0c;机械加工的精度和效率要求越来越高。HOOPS作为一款专业的3D图形引擎&#xff0c;可以为机械加工行业提供高效、灵活的3D建模、可视化和交互工具。下面将从以下几个方面介绍HOOPS技术在机械…

CAMAv2: A Vision-Centric Approach for Static Map Element Annotation

CAMAv2: 摘要简介相关工作A. 视觉为中心的地图构建&#xff08;Vision-centric HD Map Construction&#xff09;B. 地图元素数据集&#xff08;Map Element Datasets&#xff09;1. nuScenes 数据集2. Argoverse2 数据集3. 车道线数据集 CAMAv2A. 场景重建&#xff08;Scene R…

大数据新视界 -- 大数据大厂之 Hive 临时表与视图:灵活数据处理的技巧(上)(29 / 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Python批量生成个性化Word录用通知书

你是一名人力资源部门的员工&#xff0c;你需要根据一份Excel表格中的员工信息&#xff0c;为每位员工生成一份录用通知书。 Excel表格中包含了员工的姓名、性别、职位、入职日期等信息&#xff0c;你需要将这些信息填充到Word模板中&#xff0c;并生成独立的录用通知书文件。…

Android显示系统(05)- OpenGL ES - Shader绘制三角形(使用glsl文件)

一、前言&#xff1a; 上一篇文章我们使用了Shader绘制了一个基本的三角形&#xff0c;但是&#xff0c;发现那样写Shader程序特别麻烦&#xff0c;各种加双引号&#xff0c;还没有语法高亮提示。因为glsl也和java、c一样是一门语言&#xff0c;实际工程项目都是单独的glsl文件…

Linux显卡驱动安装

前言 使用Windows配置环境失败&#xff0c;其中有一个包只有Linux版本&#xff0c;Windows版本的只有python3.10的&#xff0c;所以直接选用Linux来配置环境&#xff0c;显卡安装比较麻烦&#xff0c;单独出一期。 显卡驱动安装 参考文章&#xff1a;Ubuntu显卡驱动安装和这…

【Linux】进程控制

目录 一、进程创建1.1 fork函数1.2 fork函数返回值1.3 写时拷贝1.4 fork常规用法1.5 fork调用失败的原因1.6 使用fork创建多进程 二、进程退出2.1 进程退出场景2.1.1 进程运行完毕2.1.2 代码异常终止2.1.3 小结 2.2 进程常见退出方法2.2.1 return2.2.2 调用exit函数2.2.3 调用_…

smart-doc 使用

文档地址 添加插件 <plugin><groupId>com.ly.smart-doc</groupId><artifactId>smart-doc-maven-plugin</artifactId><version>3.0.9</version><configuration><includes><!--格式为&#xff1a;groupId:artifactId;…

Spring04——注解开发

Spring3.0启用了纯注解开发模式&#xff0c;使用Java类替代配置文件&#xff0c;开启了Spring快速开发赛道 Java类代替Spring核心配置文件&#xff0c; 配置类&#xff08;Configuration&#xff09; Configuration注解用于设定当前类为配置类ComponentScan注解用于设定扫描路…

ImportError: cannot import name ‘implements‘ from ‘zope.interface‘

ImportError: cannot import name ‘implements’ from ‘zope.interface’ 1. 问题分析 问题原因&#xff1a; /home/user/.conda/envs/vectornet/lib/python3.8/site-packages/apex/interfaces.py中在使用zope.interace中使用了老表达。 2. 解决办法 原文件内容&#xff…

多线程的操作

1、Thread类 1.1 Thread类的作用 上篇博文中我们了解了线程与操作系统的关系&#xff1a;线程是操作系统中的概念&#xff0c;操作系统内核实现了线程这样的机制, 并且对用户层提供了一些 API 供用户使用&#xff0c;Java 标准库中 Thread 类可以视为是对操作系统提供的 API 进…

51单片机应用开发(进阶)---串口接收字符命令

实现目标 1、巩固UART知识&#xff1b; 2、掌握串口接收字符数据&#xff1b; 3、具体实现目标&#xff1a;&#xff08;1&#xff09;上位机串口助手发送多字符命令&#xff0c;单片机接收命令作相应的处理&#xff08;如&#xff1a;openled1 即打开LED1;closeled1 即关…

3-5 C常用的字符串库函数

1.0 字符串库函数 strlen()函数用于返回字符串的长度&#xff0c;不包括结尾\0 uint32_t strlen(char *str) {uint32_t len 0;while (str[len] ! \0){len;}return len; } 编译器在处理字符串时&#xff0c;会自动的在数据末尾添加ASCI码“0对应十进制0&#xff0c;便于程序对…

python语法基础---正则表达式(补充)

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 上一篇文章中&#xff0c;我们讲到了贪婪匹配和非贪婪匹配&#xff0c;我们在这篇文章中&#xff0c;主要讲的就是贪婪匹配和非贪婪匹配的剩下的部分&#xff0c;话不多说&#x…

如何在谷歌浏览器中设置网络代理

在当今的网络环境中&#xff0c;使用代理服务器可以增强您的隐私和安全性。如果您希望在谷歌浏览器中设置网络代理&#xff0c;本文将为您提供详细的步骤指南。此外&#xff0c;我们还会简要介绍如何使用谷歌浏览器的任务管理器、查看Cookies以及更换侧边栏位置&#xff0c;以便…

【AI系统】MobileNet 系列

MobileNet 系列 在本文会介绍 MobileNet 系列&#xff0c;重点在于其模型结构的轻量化设计&#xff0c;主要介绍详细的轻量化设计原则&#xff0c;基于这原则&#xff0c;MobileNetV1 是如何设计成一个小型&#xff0c;低延迟&#xff0c;低功耗的参数化模型&#xff0c;可以满…

分层架构 IM 系统之 Router 假在线分析

通过对分层架构 IM 系统的分析&#xff0c;Router 的核心职责是作为中央存储记录在线客户端与 Entry 节点之间的映射关系&#xff0c;在本质上 Router 是一个内存数据库。 客户端已经离线&#xff0c;Entry 还未感知&#xff0c;或者 Entry 已经感知并且切断了连接&#xff0c;…

04 创建一个属于爬虫的主虚拟环境

文章目录 回顾conda常用指令创建一个爬虫虚拟主环境Win R 调出终端查看当前conda的虚拟环境创建 spider_base 的虚拟环境安装完成查看环境是否存在 为 pycharm 配置创建的爬虫主虚拟环境选一个盘符来存储之后学习所写的爬虫文件用 pycharm 打开创建的文件夹pycharm 配置解释器…

在Java的xml的sql语句里面的某一个参数是list集合的时候

经常在Java里面&#xff0c;遇到这样的问题&#xff0c;sql的一个查询语句&#xff0c;它的某一个参数是一个List集合&#xff0c;然而&#xff0c;在xml.mapper文件里面的时候&#xff0c;不知道如何去组成这个查询语句&#xff0c;不知道兄弟们是否经常忘记如何去写这个语句&…