说明:此前笔者需要对客户一台由逻辑卷组成的磁盘组扩容,但在网上一直没找到关于这方面的资料.
后来经过多次实验试错,终于把该问题成功解决,特此记录该操作,以便其它人遇到同样问题可查询.
系统:oel7.9
数据库:oracle 19.12
环境:单实例+GI
磁盘组:asmlib创建+逻辑卷5块6g构成+非多路径
实验目标:对逻辑卷组成的磁盘组扩容.
添加前数据如下:
[grid@liujun ~]$ lsblk -p
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sr0 11:0 1 4.5G 0 rom
/dev/sda 8:0 0 100G 0 disk
├─/dev/sda2 8:2 0 53G 0 part
│ ├─/dev/mapper/ol-swap 252:1 0 8G 0 lvm [SWAP]
│ ├─/dev/mapper/ol-u01 252:2 0 25G 0 lvm /u01
│ └─/dev/mapper/ol-root 252:0 0 20G 0 lvm /
├─/dev/sda3 8:3 0 30G 0 part
│ ├─/dev/mapper/CentOS-data04 252:6 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data02 252:4 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data05 252:7 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data03 252:5 0 6G 0 lvm
│ └─/dev/mapper/CentOS-data01 252:3 0 6G 0 lvm
└─/dev/sda1 8:1 0 1G 0 part /boot
SQL> r
1* select path,total_mb,free_mb from v$asm_disk_stat where group_number=1 order by 1
PATH TOTAL_MB FREE_MB
------------------------------ ---------- ----------
ORCL:DATA01 6140 5364
ORCL:DATA02 6144 5392
ORCL:DATA03 6144 5376
ORCL:DATA04 6144 5384
ORCL:DATA05 6144 5364
快速消耗磁盘组data空间.
SQL> create table t1 tablespace users as select * from dba_objects;
Table created.
......(此处省略很多insert语句)
SQL> insert into t1 select * from t1;
37153280 rows created.
Elapsed: 00:23:57.97
查表大小
SELECT SUM(T.BYTES) / 1024 / 1024 SUMS_M
FROM (SELECT C.owner TOWNER, C.segment_name TABLENAME, C.BYTES BYTES
FROM DBA_SEGMENTS C
WHERE C.owner = 'SYS'
AND C.segment_name = 'T1'
UNION
SELECT B.owner, B.table_name, A.BYTES BYTES
FROM (SELECT owner, SEGMENT_NAME, BYTES
FROM DBA_SEGMENTS
WHERE owner = 'SYS') A,
DBA_INDEXES B
WHERE A.SEGMENT_NAME = B.index_name
AND B.table_name = 'T1'
AND B.owner = 'SYS') T;
SUMS_M
----------
11208
SQL> r
1* select path,total_mb,free_mb from v$asm_disk_stat where group_number=1 order by 1
PATH TOTAL_MB FREE_MB
-------------------- ---------- ----------
ORCL:DATA01 6140 3016
ORCL:DATA02 6144 3044
ORCL:DATA03 6144 3028
ORCL:DATA04 6144 3032
ORCL:DATA05 6144 3020
关闭服务器,添加1块6g、1块12g的磁盘
先测试6g
[root@liujun ~]# lsblk -p
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sdb 8:16 0 6G 0 disk
/dev/sr0 11:0 1 4.5G 0 rom
/dev/sdc 8:32 0 12G 0 disk
/dev/sda 8:0 0 100G 0 disk
├─/dev/sda2 8:2 0 53G 0 part
│ ├─/dev/mapper/ol-swap 252:1 0 8G 0 lvm [SWAP]
│ ├─/dev/mapper/ol-u01 252:2 0 25G 0 lvm /u01
│ └─/dev/mapper/ol-root 252:0 0 20G 0 lvm /
├─/dev/sda3 8:3 0 30G 0 part
│ ├─/dev/mapper/CentOS-data04 252:6 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data02 252:4 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data05 252:7 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data03 252:5 0 6G 0 lvm
│ └─/dev/mapper/CentOS-data01 252:3 0 6G 0 lvm
└─/dev/sda1 8:1 0 1G 0 part /boot
[root@liujun ~]# fdisk /dev/sdb
[root@liujun ~]# partprobe
Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only.
[root@liujun ~]# lsblk -p
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sdb 8:16 0 6G 0 disk
└─/dev/sdb1 8:17 0 6G 0 part
/dev/sr0 11:0 1 4.5G 0 rom
/dev/sdc 8:32 0 12G 0 disk
/dev/sda 8:0 0 100G 0 disk
├─/dev/sda2 8:2 0 53G 0 part
│ ├─/dev/mapper/ol-swap 252:1 0 8G 0 lvm [SWAP]
│ ├─/dev/mapper/ol-u01 252:2 0 25G 0 lvm /u01
│ └─/dev/mapper/ol-root 252:0 0 20G 0 lvm /
├─/dev/sda3 8:3 0 30G 0 part
│ ├─/dev/mapper/CentOS-data04 252:6 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data02 252:4 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data05 252:7 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data03 252:5 0 6G 0 lvm
│ └─/dev/mapper/CentOS-data01 252:3 0 6G 0 lvm
└─/dev/sda1 8:1 0 1G 0 part /boot
[root@liujun ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@liujun ~]# vgcreate redhat /dev/sdb1
Volume group "redhat" successfully created
[root@liujun ~]# lvcreate -n data06 -l 100%free redhat
Logical volume "data06" created.
(说明:做成lv后,并没有格式化,直接oracleasm createdisk.其实格式化这个步骤笔者在后面实验特意操作过,貌似对后面的操作也没有影响)
[root@liujun ~]# lsblk -p
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sdb 8:16 0 6G 0 disk
└─/dev/sdb1 8:17 0 6G 0 part
└─/dev/mapper/redhat-data06 252:8 0 6G 0 lvm
/dev/sr0 11:0 1 4.5G 0 rom
/dev/sdc 8:32 0 12G 0 disk
/dev/sda 8:0 0 100G 0 disk
├─/dev/sda2 8:2 0 53G 0 part
│ ├─/dev/mapper/ol-swap 252:1 0 8G 0 lvm [SWAP]
│ ├─/dev/mapper/ol-u01 252:2 0 25G 0 lvm /u01
│ └─/dev/mapper/ol-root 252:0 0 20G 0 lvm /
├─/dev/sda3 8:3 0 30G 0 part
│ ├─/dev/mapper/CentOS-data04 252:6 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data02 252:4 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data05 252:7 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data03 252:5 0 6G 0 lvm
│ └─/dev/mapper/CentOS-data01 252:3 0 6G 0 lvm
└─/dev/sda1 8:1 0 1G 0 part /boot
[root@liujun ~]# oracleasm createdisk data06 /dev/mapper/redhat-data06
Writing disk header: done
Instantiating disk: done
[root@liujun ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
[root@liujun ~]# oracleasm listdisks
DATA01
DATA02
DATA03
DATA04
DATA05
DATA06
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 30716 15012 0 15012 0 N DATA/
[grid@liujun ~]$ sqlplus / as sysasm
SQL> alter diskgroup DATA add disk 'ORCL:DATA06'; (此处可添加rebalance power 11)
Diskgroup altered.
SQL> r
1* select path,total_mb,free_mb from v$asm_disk_stat
PATH TOTAL_MB FREE_MB
-------------------- ---------- ----------
ORCL:DATA01 6140 3148
ORCL:DATA02 6144 3160
ORCL:DATA03 6144 3148
ORCL:DATA04 6144 3144
ORCL:DATA05 6144 3148
ORCL:DATA06 6140 5392
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 Y 512 512 4096 4194304 36856 21140 0 21140 0 N DATA/
SQL> alter diskgroup data rebalance power 5;
SQL> select group_number,operation,state,power from v$asm_operation;
GROUP_NUMBER OPERA STAT POWER
------------ ----- ---- ----------
1 REBAL RUN 5
1 REBAL DONE 5
1 REBAL DONE 5
SQL> select group_number,operation,state,power from v$asm_operation
no rows selected
SQL> select path,total_mb,free_mb from v$asm_disk_stat;
PATH TOTAL_MB FREE_MB
-------------------- ---------- ----------
ORCL:DATA01 6140 3520
ORCL:DATA02 6144 3524
ORCL:DATA03 6144 3520
ORCL:DATA04 6144 3524
ORCL:DATA05 6144 3516
ORCL:DATA06 6140 3536
6 rows selected.
现在要从12g磁盘划出一个6g的分区,验证是否能将其添加进磁盘组.
[root@liujun ~]# lsblk -p
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sdb 8:16 0 6G 0 disk
└─/dev/sdb1 8:17 0 6G 0 part
└─/dev/mapper/redhat-data06 252:8 0 6G 0 lvm
/dev/sr0 11:0 1 4.5G 0 rom /run/media/grid/OL-7.9 Server.x86_64
/dev/sdc 8:32 0 12G 0 disk
/dev/sda 8:0 0 100G 0 disk
├─/dev/sda2 8:2 0 53G 0 part
│ ├─/dev/mapper/ol-swap 252:1 0 8G 0 lvm [SWAP]
│ ├─/dev/mapper/ol-u01 252:2 0 25G 0 lvm /u01
│ └─/dev/mapper/ol-root 252:0 0 20G 0 lvm /
├─/dev/sda3 8:3 0 30G 0 part
│ ├─/dev/mapper/CentOS-data04 252:6 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data02 252:4 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data05 252:7 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data03 252:5 0 6G 0 lvm
│ └─/dev/mapper/CentOS-data01 252:3 0 6G 0 lvm
└─/dev/sda1 8:1 0 1G 0 part /boot
[root@liujun ~]# fdisk /dev/sdc
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x6edd9fa4.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-25165823, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-25165823, default 25165823): +6G
Partition 1 of type Linux and of size 6 GiB is set
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@liujun ~]# partprobe
Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only.
[root@liujun ~]# lsblk -p
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sdb 8:16 0 6G 0 disk
└─/dev/sdb1 8:17 0 6G 0 part
└─/dev/mapper/redhat-data06 252:8 0 6G 0 lvm
/dev/sr0 11:0 1 4.5G 0 rom /run/media/grid/OL-7.9 Server.x86_64
/dev/sdc 8:32 0 12G 0 disk
└─/dev/sdc1 8:33 0 6G 0 part
/dev/sda 8:0 0 100G 0 disk
├─/dev/sda2 8:2 0 53G 0 part
│ ├─/dev/mapper/ol-swap 252:1 0 8G 0 lvm [SWAP]
│ ├─/dev/mapper/ol-u01 252:2 0 25G 0 lvm /u01
│ └─/dev/mapper/ol-root 252:0 0 20G 0 lvm /
├─/dev/sda3 8:3 0 30G 0 part
│ ├─/dev/mapper/CentOS-data04 252:6 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data02 252:4 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data05 252:7 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data03 252:5 0 6G 0 lvm
│ └─/dev/mapper/CentOS-data01 252:3 0 6G 0 lvm
└─/dev/sda1 8:1 0 1G 0 part /boot
[root@liujun ~]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created.
[root@liujun ~]# vgcreate oel /dev/sdc1
Volume group "oel" successfully created
[root@liujun ~]# lvcreate -n data07 -l 100%free oel
Logical volume "data07" created.
[root@liujun ~]# lsblk -p
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
/dev/sdb 8:16 0 6G 0 disk
└─/dev/sdb1 8:17 0 6G 0 part
└─/dev/mapper/redhat-data06 252:8 0 6G 0 lvm
/dev/sr0 11:0 1 4.5G 0 rom /run/media/grid/OL-7.9 Server.x86_64
/dev/sdc 8:32 0 12G 0 disk
└─/dev/sdc1 8:33 0 6G 0 part
└─/dev/mapper/oel-data07 252:9 0 6G 0 lvm
/dev/sda 8:0 0 100G 0 disk
├─/dev/sda2 8:2 0 53G 0 part
│ ├─/dev/mapper/ol-swap 252:1 0 8G 0 lvm [SWAP]
│ ├─/dev/mapper/ol-u01 252:2 0 25G 0 lvm /u01
│ └─/dev/mapper/ol-root 252:0 0 20G 0 lvm /
├─/dev/sda3 8:3 0 30G 0 part
│ ├─/dev/mapper/CentOS-data04 252:6 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data02 252:4 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data05 252:7 0 6G 0 lvm
│ ├─/dev/mapper/CentOS-data03 252:5 0 6G 0 lvm
│ └─/dev/mapper/CentOS-data01 252:3 0 6G 0 lvm
└─/dev/sda1 8:1 0 1G 0 part /boot
[root@liujun ~]# oralceasm createdisk data07 /dev/mapper/oel-data07
bash: oralceasm: command not found...
Similar command is: 'oracleasm'
[root@liujun ~]# oracleasm createdisk data07 /dev/mapper/oel-data07
Writing disk header: done
Instantiating disk: done
[root@liujun ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
[root@liujun ~]# oracleasm listdisks
DATA01
DATA02
DATA03
DATA04
DATA05
DATA06
DATA07
[grid@liujun ~]$ sqlplus / as sysasm
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jun 15 21:38:48 2022
Version 19.12.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.12.0.0.0
SQL> alter diskgroup data add disk 'ORCL:DATA07' rebalance power 2;
Diskgroup altered.
SQL> select group_number,operation,state,power from v$asm_operation;
GROUP_NUMBER OPERA STAT POWER
------------ ----- ---- ----------
1 REBAL WAIT 2
1 REBAL RUN 2
1 REBAL DONE 2
SQL> r
1* select path,total_mb,free_mb from v$asm_disk_stat
PATH TOTAL_MB FREE_MB
-------------------- ---------- ----------
ORCL:DATA01 6140 3696
ORCL:DATA02 6144 3700
ORCL:DATA03 6144 3696
ORCL:DATA04 6144 3700
ORCL:DATA05 6144 3692
ORCL:DATA06 6140 3696
ORCL:DATA07 6140 5080
SQL> select group_number,operation,state,power from v$asm_operation
GROUP_NUMBER OPERA STAT POWER
------------ ----- ---- ----------
1 REBAL RUN 2
1 REBAL DONE 2
1 REBAL DONE 2
SQL> r
1* select group_number,operation,state,power from v$asm_operation
no rows selected
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 42996 27260 0 27260 0 N DATA/
结论:12g磁盘划出6g分区,成功加入磁盘组.