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

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

- 磁盘组(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
- 从磁盘组内分配文件空间(ASM FILE)。磁盘组中存储的文件的内容将在磁盘组的磁盘中平均分布或条带化。以便消除热点(频繁访问的部分)并在各个磁盘上提供一致的性能。每个ASM文件都包含在一个磁盘组中,但是,一个磁盘组可以包含多个ASM FILE。而一个数据库可以使用来自多个磁盘组不同的文件。
- 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,存储性能比较差
- 分配单元(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种冗余级别:
- External:asm 磁盘组不提供数据冗余,依靠外部raid提供数据保护
- Normal:asm 磁盘组提供2份数据冗余,至少需要2个故障组,最多同时损坏一个故障组的磁盘,假定磁盘空间足够的话,最多可损坏n-1个磁盘
- High:asm 磁盘组提供3份数据冗余,至少需要3个故障组,最多同时损坏二个故障组的磁盘,假定磁盘空间足够的话,最多可损坏n-1个磁盘
- 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相关文章:
Oracle ASM特性介绍和增删盘操作
1. 介绍 1.1. 在没有ASM之前ORACLE数据库靠什么去解决存储问题: 裸设备:裸设备就是没有被文件系统格式化的分区或者是直接挂载到操作系统上的磁盘。ORACLE可以直接将数据写入到裸设备中,读写能非常优异。像ORACLE的数据文件、控制文件、REDO日志在过去…...
深度优先搜索迷宫路径
深度优先搜索迷宫路径 问题描述 我们需要编写一个程序,通过深度优先搜索(DFS)找到从迷宫左上角到右下角的一条通路。 迷宫的表示: 迷宫由 0 和 1 构成的二维数组表示。0 表示可以走的路径,1 表示障碍。用户输入迷宫的…...
多媒体技术的 发展阶段----高中信息技术教资面试
上课,同学们好!请坐 在正式上课之前,老师带来 了一段微课视频,请同学们认真观看大屏幕。等下来回答老师的问题。 好,视频播放完成了,现在老师想问问大家。大家从视频中都看到了什么尼?好&…...
行为型设计模式之《责任链模式》实践
定义 责任链模式(Chain Of Responsibility Pattern)顾名思义,就是为请求创建一条处理链路,链路上的每个处理器都判断是否可以处理请求,如果不能处理则往后走,依次从链头走到链尾,直到有处理器可…...
中酱黑松露手工古法酱油,邂逅独特 “酱油红”
在美食的世界里,调味品往往扮演着画龙点睛的角色,它们虽不似主食材那般夺目,却能悄无声息地赋予菜肴灵魂与韵味。而今天,要带大家走进的,便是中酱手工古法酱油所营造出的独特美味天地,去领略那一抹别具魅力…...
Java NIO channel
channel(通道),byteBuffer(缓冲区),selector(io多路复用),通道FileChannel,SocketChannel的transferTo,transferFrom,MappedByteBuffer实现了零拷贝。 JVM调操作系统方法,read,write,都可以送字…...
智能交通(8)——腾讯开悟智能交通信号灯调度赛道
本文档用于记录参加腾讯开悟智能信号灯调度赛道的模型优化过程。官方提供了dqn和target_dqn算法,模型的优化在官方提供的代码基础上进行。最终排名是在榜单16,没能进入最后的决赛。 一.赛题介绍 赛题简介:在本地赛题中,参赛团队…...
ip所属地址是什么意思?怎么改ip地址归属地
在数字化时代,IP地址作为网络设备的唯一标识符,不仅关乎设备间的通信,还涉及到用户的网络身份与位置信息。IP所属地址,即IP地址的归属地,通常反映了设备连接互联网时的地理位置。本文将深入解析IP所属地址的含义&#…...
攻防世界 ctf刷题 新手区1-10
unserialize3 因为我上个笔记写了 php返序列化 所以先趁热打铁 看这个题目名字 我们就知道是 反序列化呀 因为flag有值所以 我们先输个 111 看看有没有线索 没线索但是这边 有个发现就是他是使用get方式传参的 可能他会把我们的输入 进行传入后台有可能进行反…...
Node做一个自动删除指定文件和文件夹工具
node14 可以搭配脚手架工具实现自动实现删除 // 引入path模块,用于处理文件路径 const path require(path); // 引入fs模块的promises API,用于异步文件操作 const fs2 require(fs).promises; // 引入fs模块,用于同步文件操作 const fs …...
陈若尧新歌《一来二去》陆续登陆全球音乐平台
由青年演员,歌手陈若尧带来的全新创作单曲《一来二去》由索尼音乐发行,于2024年11月18日陆续全球上线。这也是陈若尧与索尼音乐合作的第一首单曲。探索古典风格与流行音乐的新结合。歌曲上线不久,就因优美抒情的动人旋律,诗意而意味深远的歌词…...
【Docker】针对开发环境、测试环境、生产环境如何编排?
目录 一、引言 二、Docker Compose 文件基础 三、针对不同环境的 Docker 编排 开发环境 测试环境 生产环境 四、配置文件全局变量的编写 五、总结 一、引言 在软件开发和部署的过程中,不同的环境有着不同的需求和配置。Docker 作为一种强大的容器化技术&…...
小程序项目的基本组成结构
分类介绍 项目根目录下的文件及文件夹 pages文件夹 用来存放所有小程序的页面,其中每个页面都由4个基本文件组成,它们分别是: .js文件:页面的脚本文件,用于存放页面的数据、事件处理函数等 .json文件:…...
001-mysql安装
[rootcentos701 ~]# hostname -I 10.0.0.200 172.17.0.1 [rootcentos701 ~]# hostname centos701 [rootcentos701 ~]# rpm -qa | grep mariadb [rootcentos701 ~]# rpm -e --nodeps mariadb-libs-5.5.65-1.el7.x86_64 [rootcentos701 ~]# useradd mysql -s /sbin/nologin #创建…...
预训练模型与ChatGPT:自然语言处理的革新与前景
目录 一、ChatGPT整体背景认知 (一)ChatGPT引起关注的原因 (二)与其他公司的竞争情况 二、NLP学习范式的发展 (一)规则和机器学习时期 (二)基于神经网络的监督学习时期 &…...
高通---Camera调试流程及常见问题分析
文章目录 一、概述二、Camera配置的整体流程三、Camera的代码架构图四、Camera数据流的传递五、camera debug FAQ 一、概述 在调试camera过程中,经常会遇到各种状况,本篇文章对camera调试的流程进行梳理。对常见问题的提供一些解题思路。 二、Camera配…...
【冷冻电镜】RELION5.0使用教程总结
准备数据集: A test data set composed of 5 tomograms of immature HIV-1 dMACANC VLPs, which is available at EMPIAR-10164. 原始倾斜系列数据需要是单独的影片或单独的运动校正图像,但不是组合倾斜系列堆栈。 mdoc 文件包含每个倾斜系列的元数据。…...
【Maven系列】深入解析 Maven 镜像配置
前言 Maven 是一个流行的 Java 项目管理和构建工具,可以自动化构建项目、管理依赖、生成报告等。在Maven构建项目时,通常经常需要下载各种依赖。默认情况下,Maven 会从中央仓库下载这些依赖,但在某些情况下,这个过程可…...
优质翻译在美国电子游戏推广中的作用
美国作为世界上最大的视频游戏市场之一,为寻求全球成功的游戏开发商提供了无与伦比的机会。然而,美国市场的文化和语言多样性使其成为一个复杂的导航景观。高质量的翻译在弥合开发者和这些充满活力的观众之间的差距方面发挥着关键作用,确保游…...
数据结构---栈(Stack)
1. 简介 栈(Stack)是计算机科学中的一种抽象数据类型,它遵循特定的操作顺序,即后进先出(Last In First Out,LIFO)。这意味着最后添加到栈中的元素将是第一个被移除的。栈的基本操作通常包括&am…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
