How does 12.1.0.2 ASM handle adding a disk of a different size to an existing DiskGroup ?
I currently have 4 disks of 5GB each in 2 DiskGroups
The DATA DiskGroup has 2 disks of 5GB each and the FRA DiskGroup has 1 disk of 5GB. One disk (identified as DiskNumber=0) is not yet assigned.
What happens if I try to expand the DATA DiskGroup with a Disk of 10GB ?
So I now have asm-disk5 as the new ASM Disk. Let my try to add this disk.
According to Oracle Support Document 1938950.1, adding a disk of a different size to an existing DiskGroup fails with an error ORA-15410 in 12.1.0.2. However, that seems to apply to NORMAL or HIGH Redundancy and COMPATIBLE.ASM 12.1.0.2. Here, I have EXTERNAL Redundancy and COMPATIBLE.ASM 12.1.0.0.0
Do I recommend Disks of different sizes ? Absolutely *not* in Production. This is a "play" environment in Virtual Machines on my desktop that I can destroy and recreate anytime. I can monitor disk usage as well.
.
.
.
I currently have 4 disks of 5GB each in 2 DiskGroups
[oracle@collabn1 ~]$ sqlplus / as sysasm SQL*Plus: Release 12.1.0.2.0 Production on Sat Jan 21 23:48:00 2017 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Real Application Clusters and Automatic Storage Management options SQL> select group_number, disk_number, name, state, total_mb 2 from v$asm_disk 3 order by 1,2,3 4 / GROUP_NUMBER DISK_NUMBER NAME STATE TOTAL_MB ------------ ----------- ------------------------------ -------- ---------- 0 0 NORMAL 0 1 0 DATA_0000 NORMAL 5114 1 1 DATA_0001 NORMAL 5114 2 0 FRA_0000 NORMAL 5114 SQL> SQL> select group_number, name 2 from v$asm_diskgroup 3 order by 1 4 / GROUP_NUMBER NAME ------------ ------------------------------ 1 DATA 2 FRA SQL>
The DATA DiskGroup has 2 disks of 5GB each and the FRA DiskGroup has 1 disk of 5GB. One disk (identified as DiskNumber=0) is not yet assigned.
What happens if I try to expand the DATA DiskGroup with a Disk of 10GB ?
[root@collabn1 dev]# fdisk /dev/sdf Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0xff8b0ab7. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). 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 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): p Disk /dev/sdf: 12.9 GB, 12884901888 bytes 255 heads, 63 sectors/track, 1566 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xff8b0ab7 Device Boot Start End Blocks Id System Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-1566, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-1566, default 1566): Using default value 1566 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@collabn1 dev]# [root@collabn1 dev]# /sbin/scsi_id -g -u -d /dev/sdf 1ATA_VBOX_HARDDISK_VB535deca9-9a295efe [root@collabn1 dev]# [root@collabn1 dev]# cd /etc/udev/rules.d [root@collabn1 rules.d]# vi 99-oracle-asmdevices.rules [root@collabn1 rules.d]# tail -1 99-oracle-asmdevices.rules KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB535deca9-9a295efe", NAME="asm-disk5", OWNER="oracle", GROUP="dba", MODE="0660" [root@collabn1 rules.d]# [root@collabn1 rules.d]# /sbin/partprobe /dev/sdf1 [root@collabn1 rules.d]# /sbin/udevadm test /block/sdb/sdf1 run_command: calling: test udevadm_test: version 147 This program is for debugging only, it does not run any program, specified by a RUN key. It may show incorrect results, because some values may be different, or not available at a simulation run. parse_file: reading '/lib/udev/rules.d/10-console.rules' as rules file parse_file: reading '/lib/udev/rules.d/10-dm.rules' as rules file parse_file: reading '/lib/udev/rules.d/11-dm-lvm.rules' as rules file parse_file: reading '/lib/udev/rules.d/13-dm-disk.rules' as rules file parse_file: reading '/lib/udev/rules.d/40-isdn.rules' as rules file parse_file: reading '/lib/udev/rules.d/40-redhat.rules' as rules file parse_file: reading '/lib/udev/rules.d/42-qemu-usb.rules' as rules file parse_file: reading '/lib/udev/rules.d/50-firmware.rules' as rules file parse_file: reading '/lib/udev/rules.d/50-udev-default.rules' as rules file parse_file: reading '/etc/udev/rules.d/55-usm.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-alias-kmsg.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-cdrom_id.rules' as rules file parse_file: reading '/etc/udev/rules.d/60-fprint-autosuspend.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-net.rules' as rules file parse_file: reading '/etc/udev/rules.d/60-pcmcia.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-alsa.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-input.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-serial.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-storage-tape.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-storage.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-v4l.rules' as rules file parse_file: reading '/etc/udev/rules.d/60-raw.rules' as rules file parse_file: reading '/etc/udev/rules.d/60-vboxadd.rules' as rules file parse_file: reading '/lib/udev/rules.d/61-mobile-action.rules' as rules file parse_file: reading '/lib/udev/rules.d/61-option-modem-modeswitch.rules' as rules file parse_file: reading '/lib/udev/rules.d/61-persistent-storage-edd.rules' as rules file parse_file: reading '/lib/udev/rules.d/64-device-mapper.rules' as rules file parse_file: reading '/lib/udev/rules.d/64-md-raid.rules' as rules file parse_file: reading '/lib/udev/rules.d/65-md-incremental.rules' as rules file parse_file: reading '/lib/udev/rules.d/69-dm-lvm-metad.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-acl.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-cups-libusb.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-hid2hci.rules' as rules file parse_file: reading '/etc/udev/rules.d/70-persistent-cd.rules' as rules file parse_file: reading '/etc/udev/rules.d/70-persistent-net.rules' as rules file parse_file: reading '/lib/udev/rules.d/71-biosdevname.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-cd-aliases-generator.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-net-description.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-persistent-net-generator.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-tty-description.rules' as rules file parse_file: reading '/lib/udev/rules.d/78-sound-card.rules' as rules file parse_file: reading '/lib/udev/rules.d/79-fstab_import.rules' as rules file parse_file: reading '/lib/udev/rules.d/80-drivers.rules' as rules file parse_file: reading '/lib/udev/rules.d/80-iosched.rules' as rules file parse_file: reading '/lib/udev/rules.d/80-mpath-iosched.rules' as rules file parse_file: reading '/lib/udev/rules.d/85-regulatory.rules' as rules file parse_file: reading '/lib/udev/rules.d/88-clock.rules' as rules file parse_file: reading '/lib/udev/rules.d/89-microcode.rules' as rules file parse_file: reading '/etc/udev/rules.d/90-alsa.rules' as rules file parse_file: reading '/lib/udev/rules.d/90-btrfs.rules' as rules file parse_file: reading '/etc/udev/rules.d/90-hal.rules' as rules file parse_file: reading '/lib/udev/rules.d/91-drm-modeset.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-dm-notify.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-keyboard-force-release.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-keymap.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-udev-late.rules' as rules file parse_file: reading '/etc/udev/rules.d/98-kexec.rules' as rules file parse_file: reading '/etc/udev/rules.d/99-oracle-asmdevices.rules' as rules file parse_file: reading '/dev/.udev/rules.d/99-root.rules' as rules file udev_rules_new: rules use 32448 bytes tokens (2704 * 12 bytes), 19085 bytes buffer udev_rules_new: temporary index used 19500 bytes (975 * 20 bytes) unable to open device '/sys/block/sdb/sdf1' [root@collabn1 rules.d]# [root@collabn1 rules.d]# /sbin/udevadm control --reload-rules [root@collabn1 rules.d]# /sbin/start_udev Starting udev: [ OK ] [root@collabn1 rules.d]# [root@collabn1 rules.d]# ls -l /dev/asm* brw-rw----. 1 oracle dba 8, 17 Jan 22 00:07 /dev/asm-disk1 brw-rw----. 1 oracle dba 8, 33 Jan 22 00:07 /dev/asm-disk2 brw-rw----. 1 oracle dba 8, 49 Jan 22 00:07 /dev/asm-disk3 brw-rw----. 1 oracle dba 8, 65 Jan 22 00:05 /dev/asm-disk4 brw-rw----. 1 oracle dba 8, 81 Jan 22 00:05 /dev/asm-disk5
So I now have asm-disk5 as the new ASM Disk. Let my try to add this disk.
SQL> set pages600 SQL> select group_number, disk_number, name, path, total_mb 2 from v$asm_disk 3 order by 1,2 4 / GROUP_NUMBER DISK_NUMBER NAME ------------ ----------- ------------------------------ PATH -------------------------------------------------------------------------------- TOTAL_MB ---------- 0 0 /dev/asm-disk5 0 0 1 /dev/asm-disk4 0 1 0 DATA_0000 /dev/asm-disk1 5114 1 1 DATA_0001 /dev/asm-disk2 5114 2 0 FRA_0000 /dev/asm-disk3 5114 SQL> SQL> alter diskgroup data add disk '/dev/asm-disk5'; Diskgroup altered. SQL> SQL> select group_number, name, total_mb 2 from v$asm_diskgroup 3 order by 1,2 4 / GROUP_NUMBER NAME TOTAL_MB ------------ ------------------------------ ---------- 1 DATA 22512 2 FRA 5114 SQL> SQL> select group_number, name, type 2 from v$asm_diskgroup 3 order by 1,2 4 / GROUP_NUMBER NAME TYPE ------------ ------------------------------ ------ 1 DATA EXTERN 2 FRA EXTERN SQL> SQL> select group_number, name, compatibility, database_compatibility 2 from v$asm_diskgroup 3 order by 1 4 / GROUP_NUMBER NAME ------------ ------------------------------ COMPATIBILITY ------------------------------------------------------------ DATABASE_COMPATIBILITY ------------------------------------------------------------ 1 DATA 12.1.0.0.0 10.1.0.0.0 2 FRA 12.1.0.0.0 10.1.0.0.0 SQL> SQL> select group_number, disk_number, name, path, total_mb 2 from v$asm_disk 3 order by 1,2,3 4 / GROUP_NUMBER DISK_NUMBER NAME ------------ ----------- ------------------------------ PATH -------------------------------------------------------------------------------- TOTAL_MB ---------- 0 0 /dev/asm-disk4 0 1 0 DATA_0000 /dev/asm-disk1 5114 1 1 DATA_0001 /dev/asm-disk2 5114 1 2 DATA_0002 /dev/asm-disk5 12284 2 0 FRA_0000 /dev/asm-disk3 5114 SQL>
According to Oracle Support Document 1938950.1, adding a disk of a different size to an existing DiskGroup fails with an error ORA-15410 in 12.1.0.2. However, that seems to apply to NORMAL or HIGH Redundancy and COMPATIBLE.ASM 12.1.0.2. Here, I have EXTERNAL Redundancy and COMPATIBLE.ASM 12.1.0.0.0
Do I recommend Disks of different sizes ? Absolutely *not* in Production. This is a "play" environment in Virtual Machines on my desktop that I can destroy and recreate anytime. I can monitor disk usage as well.
.
.
.
2 comments:
Yet, we can have situations where diff. disk sizes should be allowed ...
As stated in https://docs.oracle.com/cd/E11882_01/server.112/e18951/asmdiskgrps.htm#OSTMG94134 :
"....
There might be situations where it is acceptable to temporarily have disks of different sizes and performance characteristics coexist in a disk group. This would be the case when migrating from an old set of disks to a new set of disks. ...."
Now, how is this supposed to be done in 12C ?
Hi,
Thanks for posting such an useful article on disks. i got some new knowledge on reading this article today.
Thank you.
Post a Comment