Adding new ASM disks – what is best practise?
Posted by John Hallas on January 15, 2013
According to My Oracle Support note – “How To Add a New Disk(s) to An Existing Diskgroup on RAC (Best Practices). [ID 557348.1]” you should create a test diskgroup using new storage before adding it to an existing diskgroup. That seems eminently sensible, although it is not something I normally do. It proves you can access the disk, and if there is a conflict (i.e the disk is already mapped and in use elsewhere) you are not risking your production DATA diskgroup. I have pasted the note info at the bottom of this post but basically you just create a new diskgroup and add the new disk to it. If all is OK then drop the diskgroup and add the new disk to your existing diskgroup.
However the downside of that is that you can hit non-published bug:12398300 which is a duplicate of bug:12356910 (also non-published). Diskgroup Mount Hangs with RBAL Waiting on ‘GPnP Get Item’ and ‘enq: DD – contention’ [ID 1375505.1]. Note: This issue so far has been reported on RAC 184.108.40.206.3 and 220.127.116.11 environments which is where we saw it (RAC – 18.104.22.168 clusterware – 22.214.171.124 rdbms)
Simply the ALTER DISKGROUP MOUNT just hangs and has to be interrupted (CTRL-C). No errors in the ASM alert log
Killing the ora.gpnpd on the node when ASM is blocked in the gpnp wait, permits not having to stop the ASM instance. For details, please see Note:1392934.1. Otherwise, restart the ASM instance that is causing the lock condition.
The fix will be included in future 126.96.36.199.x Patch Set Updates (PSUs) but no patches yet exists (at the time this article was written – Nov.9.2011). Also likely there will be patch requests for the fix to be included on top of existing 188.8.131.52 PSU, but none yet exist.
So I think I will stick with what I have always done, best practise or not.
--From Node 1 . oraenv -- specify ASM instance from node 1 +ASM1 -- sudo -u oracle sqlplus may not work when run the first time so run: sudo -u oracle ls sudo -u oracle sqlplus / as sysasm CREATE DISKGROUP TEST EXTERNAL REDUNDANCY DISK '' [DISK '']; SELECT STATE, NAME FROM V$ASM_DISKGROUP; -- from node 2 . oraenv +ASM2 sudo -u oracle sqlplus / as sysasm ALTER DISKGROUP TEST MOUNT; SELECT STATE, NAME FROM V$ASM_DISKGROUP; -- if all ok then -- from node 2 alter diskgroup test dismount; -- from node 1 DROP DISKGROUP TEST; Now we can add the disk to the desired diskgroup safely. -- From node 1 . oraenv +ASM1 sudo -u oracle sqlplus / as sysasm -- check disks visible in v$asm_disk -- header_status should be CANDIDATE or FORMER set lines 120 pages 100 column path format a20 SELECT name, path, mode_status, state, header_status, os_mb, free_mb FROM v$asm_disk ORDER BY name, path; -- check diskgroups select GROUP_NUMBER,NAME,STATE,TOTAL_MB,FREE_MB from v$asm_diskgroup; -- add disks to appropriate diskgroups alter diskgroup x add disk '/dev/hdiskX'; -- monitor rebalance set lines 170 select * from v$asm_operation; select GROUP_NUMBER,NAME,STATE,TOTAL_MB,FREE_MB from v$asm_diskgroup;