Writing About Our Experiences With Oracle Databases
Thursday February 9th 2012

Latest Topics

Copying Oracle Scheduler jobs with Arguments

Oracle provides dbms_scheduler.copy_job function to copy oracle scheduler jobs which works great. But problem is that [Read More]

EM12c:Automated discovery of Targets

EM12c:Automated discovery of Targets

In this post we will discuss the Automated discovery of Targets in Enterprise Manager Cloud Control(EM 12c). Once you [Read More]

Em12c:Silent Oracle Management agent Installation

This Post would describe how to install Oracle Management Agent 12c in silent mode. We need to download the agent [Read More]

11gR2:Listener Startup Issues

In this blog post I will be discussing listener startup issues faced in 11gR2 RAC. I will be constantly updating this [Read More]

Get Upgrading: Upgrade to Enterprise Manager Cloud Control 12c

Get Upgrading: Upgrade to Enterprise Manager Cloud Control 12c

This post describes the steps to upgrade an existing 11g Enterprise Manager Grid Control (11.1.0.1.0) to 12c [Read More]

Adding new ASM disk to RAC database fails

Many times i came across a common problem in RAC databases where trying to add an asm disk is not possible due to errors like

ORA-15075 “disk(s) are not visible cluster-wide”

ORA-15020 “discovered duplicate ASM disk “DISK1″ and

ORA-15054 “disk “ORCL:DISK1″ does not exist in diskgroup “DG1″.

Rebalancing the diskgroup and trying to add the disk with “FORCE” option also does not help in this case.

I will be discussing how to come out of a situation like this i.e When you are trying to add an asm disk in cluster environment and it says that disk is already added and when trying to drop the same disk it says that disk is not present in the diskgroup.

Lets start from the very begining:
I have decided to add an asm disk in RAC environment to an already existing diskgroup DATA1.

Login to asm instance “/ as sysdba”
SQL > ALTER DISKGROUP DATA1 ADD DISK ‘/dev/rdsk/c1t2d3s4′;

But it failed with following error:

ALTER DISKGROUP DATA1 ADD DISK '/dev/rdsk/c1t2d3s4';*
ERROR at line 1:
<strong>ORA-15032: not all alterations performed
ORA-15075: disk(s) are not visible cluster-wide</strong>

This is due to the fact that the physical disk partition is not visible from all RAC nodes. Then i contacted the sysadmins to make sure that the disk is visible from all RAC nodes and accessible by ORACLE. They have fixed the problem and now the disk /dev/rdsk/c1t2d3s4 can be seen from all RAC nodes. Then i tried to add the disk again using force option as:

SQL > ALTER DISKGROUP DATA1 ADD DISK ‘/dev/rdsk/c1t2d3s4′ force;
But it failed with following error:

ORA-15020: discovered duplicate ASM disk “/dev/rdsk/c1t2d3s4″

It shows that disk with same name is already present in the diskgroup.

As it shows that the disk is already present in the diskgroup, while trying to drop the disk i got following error:

SQL&gt; alter diskgroup DATA1 drop disk '/dev/rdsk/c1t2d3s4';
alter diskgroup DATA1 drop disk '/dev/rdsk/c1t2d3s4'
*
ERROR at line 1:
<strong>ORA-15032 : not all alterations performed
ORA-15054 : disk "/dev/rdsk/c1t2d3s4" does not exist in diskgroup "DATA1"</strong>

Now I cannot move further as adding and dropping the disk is not possible here. Then I decided to check the status of the disk from v$asm_disk from all RAC nodes, to do this issue following query:

SQL > col name format a15
SQL > col path format a20
SQL > select GROUP_NUMBER,DISK_NUMBER,MOUNT_STATUS,HEADER_STATUS,NAME,PATH from v$asm_disk;

We Obain following results from all the nodes :

G# D# HEADER_STATU MOUNT_S STATE NAME PATH
—- —- ———— ——- ——– ———— ————————-
0 0 MEMBER IGNORED NORMAL /dev/rdsk/c1t2d3s4

Header_status=MEMBER means that the disk is a valid asm disk on all RAC nodes.
Mount_status=IGNORED means that Disk is present in the system, but is ignored by ASM.

Group_number=0 This is the number used when a disk is not mounted by a diskgroup.

Now by checking the dd output of the disk as :

$dd if=/dev/rdsk/c1t2d3s4 of=/tmp/disk.out bs=4096 count=1096

$ vi /tmp/disk.out

I found that the diskgroup name and disk number allocated to this disk, which confirms that the disk is now a part of diskgroup DATA1.

But from the results of the header_status,mount_status and group_number it is clear that the disk is partially added to RAC asm instances. To correct this we will have to clear the disk header to add it again:

# dd if=/dev/null of=/dev/rdsk/c1t2d3s4 bs=4096 count=5000

This command cleared the disk header and after that disk was added successfully.

Note: - Please note that using dd will clear the ASM header and should be used only after confirming the disk. Using it on a wrong disk can cause Diskgroup to dismount and lead to Data Loss.

Share
Related Tags: , , ,

14 Comments for “Adding new ASM disk to RAC database fails”

  • Richard says:

    Hello,
    Great this tip that you sent, you helped me so much.
    but take care when to use dd command.

    Regards,

  • Ron Gordon says:

    I had a simillar ORA-15020: discovered duplicate ASM disk issue, our sysadmin determined that there was a BAD superblock on the disk, he newfs’ed them. Then I used the dd commands with if=/dev/zero, then I re-formatted the device (solaris 10 format command), then I was able to “ALTER DISKGROUP DATA ADD DISK ‘/dev/rdsk/emcpower49a’;”

    • csk says:

      I am facing similar issue in a Production System. To avoid using dd command, can we un-present and present the Disk using SAN admin module. Is it equivalant to using dd command?

      • Amit says:

        Csk,

        I am not sure about SAN admin module but unless you erase the disk header (using dd), you will not be able to add it back. You can work with oracle support and let them verify your issue.

        Cheers
        Amit

  • csk says:

    I am facing similar issue in Production System. But hesitating to use dd command. Is there any other safe way to do this?

  • csk says:

    Yeah. I have opened SR with Oracle. Once I get solution , I will provide it here.

    • Saurabh Sood says:

      Hi CSK,

      In this case, the information is already written into disk header, and to reuse the disk the only option i s to erase the header contents and I think dd is a safe way only as we can verify before actually using dd.

      I am not aware of any oracle command which will erase the disk header.
      Please let us know what reply you get from Oracle Support on this!!

      Regards,
      Saurabh Sood

  • csk says:

    In my case the adding Disk to an existing Disk Group failed as the disk was not visible from other RAC node.Now the Disk is showing Header_Status as MEMBER and Mount_Status as CLOSED. dd command can be used to erase the Header Status of the Disk. But the Disk Group’s working Disk has details about the Disk that failed to get added. This is causing me worry…

  • csk says:

    I raised P1 SR and Oracle support checked the Disks belonging to the Diskgroup and asked me to unmount & mount the Diskgroups to make sure that the partially added disk has not done any serious damage. As I was able to unmount and mount the Diskgroups , they asked me to create a new Diskgroup with FORCE option and it worked. Problem got resolved. Didnt require to use dd command.
    Thanks.

  • Jon says:

    Just a note — I ran into this installing Grid on a standalone server, and it turns out there is a bug when using non-default discovery paths for ASM on standalone. Metalink note 1086140.1 goes into details and a workaround…

  • Rafiq says:

    What was the version of Oracle 10gr2. As per Oracle support force option should work with 10.2.0.4. We have similar issue with one of our disk in 10.2.0.4 and opened a SR. I also gave reference of your link but they support person says that force option should work with 10.2.0.4.

  • Saurabh Sood says:

    Hi Rafiq,

    I am not aware what was the version of my 10gr2 database, but the force usage behavior is not changed in these version. YOu can probably ask for any ORACLE BUG reference to this from Oracle Support.

    As per ASM dcumentation the force should work in all 10gr2 version, but in my case it did not work at all.

    let us know also if you get any reply from oracle support on any BUG related to this.

    BTW did using “force” worked in your case?

    Regards,
    Saurabh Sood

  • yogi says:

    Perfect, this article really helped me. I used dd if=/dev/zero. it worked.

    Thanks a lot.
    -Yogi


Leave a Comment

*

Recent Comments

Amit had this to say

Thanks mindinpanic. I have incorporated the comment in article. Appreciate your input. Read the post

mindinpanic had this to say

Sorry for my bad english((( And 6 step is that you must run sqlpus from bin directory of your oracle server Read the post

Claudiomiro Caetano had this to say

Simple and effective. Thanks a lot, it solved my issue. Read the post

More from category

Copying Oracle Scheduler jobs with Arguments

Oracle provides dbms_scheduler.copy_job function to copy oracle scheduler jobs which works great. But problem is that [Read More]

10gR2 Silent Install with 11gr2 CRS fails

I was trying to perform a 10.2 silent install with 11gR2 CRS. While doing pre-checks installer failed with following [Read More]

10.2 CRS startup issue

Today I faced a strange issue with CRS  post host reboot. CRS was not coming up and we could see following message in [Read More]

Performance Management Guide on AIX

While trying to find the amount of physical memory used by oracle process on AIX, I got reference of a document from [Read More]

Effect Of Multiple SHMMAX Settings

Last week I saw a warning message at database startup time saying: WARNING: EINVAL creating segment of size [Read More]

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 4 other subscribers