Adding NEW disk group in ASM

Description:
          In this blog, we are going to see step by step process for adding a disk in ASM disk group.

Rebalance ASM Disks:
          Oracle ASM automatically rebalances disk groups when their configuration changes. You might want to do a manual rebalance operation to control the speed of what would otherwise be an automatic rebalance operation.

Pre request-
Add needed disk space in virtual machine.

Steps:-

1. Login as root user source the bash profile:

[oracle@asm ~]$ . .bash_profile
[oracle@asm ~]$ su root
Password:
[root@asm oracle]#
[root@asm oracle]# cd

2. New disk configuration:

[root@asm ~]# fdisk /dev/sdd
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.

The device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xf8f5f5c6.

Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition’s system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

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-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
Using default value 10485759
Partition 1 of type Linux and of size 5 GiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

3. List the disks:

[root@asm ~]# fdisk -l

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0001d229

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 14338047 7168000 83 Linux
/dev/sda2 14338048 98306047 41984000 83 Linux
/dev/sda3 98306048 182274047 41984000 83 Linux
/dev/sda4 182274048 209715199 13720576 5 Extended
/dev/sda5 182276096 196612095 7168000 82 Linux swap / Solaris

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xeba933f3

Device Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 83 Linux

Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x330f95dd

Device Boot Start End Blocks Id System
/dev/sdc1 2048 20971519 10484736 83 Linux

Disk /dev/sdd: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xf8f5f5c6

Device Boot Start End Blocks Id System
/dev/sdd1 2048 10485759 5241856 83 Linux

4. Configure oracle ASM:

[root@asm ~]# oracleasm configure -i
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on the boot and what permissions it will have. The current values
will be shown in brackets (‘[]’). Hitting <ENTER> without typing an
answer will keep that current value. Ctrl-C will abort.

Default user to own the driver interface [oracle]:
Default group to own the driver interface [oinstall]:
Start Oracle ASM library driver on boot (y/n) [y]:
Scan for Oracle ASM disks on boot (y/n) [y]:
Writing Oracle ASM library driver configuration: done
[root@asm ~]#

5. OS level disk creation:

[root@asm ~]# /usr/sbin/oracleasm init
[root@asm ~]# /usr/sbin/oracleasm createdisk DISK3 /dev/sdd1
Writing disk header: done
Instantiating disk: done
[root@asm ~]# cd /dev/oracleasm/disks/
[root@asm disks]#
[root@asm disks]#
[root@asm disks]#
[root@asm disks]#
[root@asm disks]# ls -lrt
total 0
brw-rw—-. 1 oracle oinstall 8, 49 Jan 6 06:15 DISK3
brw-rw—-. 1 oracle oinstall 8, 33 Jan 6 06:16 DISK2
brw-rw—-. 1 oracle oinstall 8, 17 Jan 6 06:16 DISK1
[root@asm disks]# oracleasm listdisks
DISK1
DISK2
DISK3
[root@asm disks]#
[root@asm disks]#
[root@asm disks]#
[root@asm disks]#

6. Create the disk using rebalance:

[oracle@asm ~]$ . .bash_profile
[oracle@asm ~]$ . grid.env
[oracle@asm ~]$ sqlplus / as sysasm

SQL*Plus: Release 19.0.0.0.0 – Production on Thu Jan 6 06:13:02 2022
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle. All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.3.0.0.0

7. Check the disk group status:
SQL> set lines 999;
col diskgroup for a15
col diskname for a15
col path for a35
select a.name DiskGroup,b.name DiskName, b.total_mb, (b.total_mb-b.free_mb) Used_MB, b.free_mb,b.path,b.header_status
from v$asm_disk b, v$asm_diskgroup a
where a.group_number (+) =b.group_number order by b.group_number,b.name;SQL> SQL> SQL> SQL> 2 3

DISKGROUP DISKNAME TOTAL_MB USED_MB FREE_MB PATH HEADER_STATU
————— ————— ———- ———- ———- ———————————– ————
0 0 0 /dev/oracleasm/disks/DISK3 PROVISIONED
DATA DATA_0000 20476 3380 17096 /dev/oracleasm/disks/DISK1 MEMBER
DATA DATA_0001 10236 1676 8560 /dev/oracleasm/disks/DISK2 MEMBER

8. Create a disk in asm using rebalance method:

SQL> alter diskgroup DATA add disk ‘/dev/oracleasm/disks/DISK3’ NAME DISK3 rebalance power 100;

Diskgroup altered.

9. Check the status of new disk group its shown as RUN:

SQL> col ERROR_CODE for a10
col PASS for a10
select * from v$asm_operation;SQL> SQL>

GROUP_NUMBER OPERA PASS STAT POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES ERROR_CODE CON_ID
———— —– ———- —- ———- ———- ———- ———- ———- ———– ———- ———-
1 REBAL COMPACT WAIT 100 100 0 0 0 0 0
1 REBAL REBALANCE RUN 100 100 163 183 6515 0 0
1 REBAL REBUILD DONE 100 100 0 0 0 0 0

10. Check after some time it will show no rows selected so it can be created fine:

SQL> select * from v$asm_operation;
no rows selected

11. View the disk group:

SQL> set lines 999;
col diskgroup for a15
col diskname for a15
col path for a35
select a.name DiskGroup,b.name DiskName, b.total_mb, (b.total_mb-b.free_mb) Used_MB, b.free_mb,b.path,b.header_status
from v$asm_disk b, v$asm_diskgroup a
where a.group_number (+) =b.group_number order by b.group_number,b.name;SQL> SQL> SQL> SQL> 2 3

DISKGROUP DISKNAME TOTAL_MB USED_MB FREE_MB PATH HEADER_STATU
————— ————— ———- ———- ———- ———————————– ————
DATA DATA_0000 20476 2884 17592 /dev/oracleasm/disks/DISK1 MEMBER
DATA DATA_0001 10236 1456 8780 /dev/oracleasm/disks/DISK2 MEMBER
DATA DISK3 5116 728 4388 /dev/oracleasm/disks/DISK3 MEMBER

 

Thank you for giving your valuable time to read the above information.

If you want to be updated with all our articles send us the Invitation or Follow us:

Ramkumar’s LinkedIn: https://www.linkedin.com/in/ramkumardba/
LinkedIn Group: https://www.linkedin.com/in/ramkumar-m-0061a0204/
Facebook Page: https://www.facebook.com/Oracleagent-344577549964301
Ramkumar’s Twitter: https://twitter.com/ramkuma02877110
Ramkumar’s Telegram: https://t.me/oracleageant
Ramkumar’s Facebook: https://www.facebook.com/ramkumarram8