Kamran Agayev's Oracle Blog

Oracle Certified Master

Archive for the 'RAC issues' Category

Real Application Clusters

Cluster won’t start if diagnostic_dest folder is missing

Posted by Kamran Agayev A. on 3rd March 2014

One of the reason of why cluster won’t start is DIAGNOSTIC_DEST folder is missing. Here it is what I got today in of the nodes of the RAC environment:

db-bash: crs_stat -t

HA Resource Target State
———– —— —–
error connecting to CRSD at [(ADDRESS=(PROTOCOL=IPC)(KEY=ora_crsqs))] clsccon 184


While checking alert log file of the clusterware ($GRID_HOME/log/node1/alertnode1.log

[/home/oracle/11.2.0/grid_1124/bin/oraagent.bin(4745)]CRS-5011:Check of resource “+ASM” failed: details at “(:CLSN00006:)” in “/home/oracle/11.2.0/grid_1124/log/node01/agent/ohasd/oraagent_oracle/oraagent_oracle.log”


ASM instance failed to start. I connected to ASM instance and tried to start it manually:

db-bash-$ asm

SQL*Plus: Release Production on Mon Mar 3 10:32:24 2014

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

Connected to an idle instance.

ASM> startup

ORA-48108: invalid value given for the diagnostic_dest init.ora parameter

ORA-48140: the specified ADR Base directory does not exist [/home/oracle/11.2.0/dbhome]

ORA-48187: specified directory does not exist

HPUX-ia64 Error: 2: No such file or directory

Additional information: 1



ADR Base Directory is missing. After creating it, I successfully started the CRS and got the happiest message :) :

db-bash-$ crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online

Posted in Administration, RAC issues | 2 Comments »

V$ASM_DISKGROUP displays information from the header of ASM disks

Posted by Kamran Agayev A. on 17th January 2014

While playing with OCR recovery, suddenly I realized that V$ASM_DISKGROUP view gets information from the headers of the ASM disk files that are specified at *.ASM_DISKSTRING parameter. Here’s the description of V$ASM_DISKGROUP view from documentation:

V$ASM_DISKGROUP displays one row for every ASM disk group discovered by the ASM instance on the node.



I got explain plan of V$ASM_DISKGROUP to know which X$ table stand behind it and got – X$KFGRP

SQL> set autotrace on

SQL> select count(1) from v$asm_diskgroup;













SQL> select name_kfgrp from x$kfgrp;


















Then I queried ASM_DISKGROUPS parameter :


SQL> show parameter disk


NAME                                 TYPE        VALUE

———————————— ———– ——————————

asm_diskgroups                       string      OCR, DATA, FLASH

asm_diskstring                       string      /dev/oracleasm/disks


No I will create a new tablespace under FLASH diskgroup, create a new table, change owner of the disk of FLASH diskgroup and make it #*disappear* from V$ASM_DISKGROUP view, and then return everything back 

SQL> create tablespace new_tbs datafile ‘+FLASH’;

Tablespace created.

SQL> create table new_table (id number) tablespace new_tbs;

Table created.

SQL> insert into new_table values(1);

1 row created.

SQL> commit;

Commit complete.

SQL> select * from new_table;



I create a parameter file from spfile, change ASM_DISKGROUPS parameter to OCR,DATA (remove FLASH) and mount the ASM instance again using a parameter file with





So DISK6 is member and as the disk is discovered by ASM instance, FLASH diskgroup is dismounted, but still there.

Let’s change the owner of the disk and check it again. But before checking the owner, let’s read it’s header by KFED:

[root@node1 disks]# kfed read DISK6



Now let’s start the instance and check V$ASM_DISKGROUP view:


Query X$KFGRP view:

SQL> select NAME_KFGRP from X$KFGRP;








Switch to the database and check if you can query the table:

SQL> select * from new_table;

select * from new_table


ERROR at line 1:

ORA-01157: cannot identify/lock data file 8 – see DBWR trace file

ORA-01110: data file 8: ‘+FLASH/rac/datafile/new_tbs.257.837080939’




Now shutdown the ASM instance, return the owner back and check V$ASM_DISKGROUP again:

[root@node1 disks]# chown -R oracle:dba DISK6


FLASH diskgroup appeared, however it’s not specified at ASM_DISKGROUPS parameter. Now mount the diskgroup and query the table again:

SQL> alter diskgroup flash mount;

Diskgroup altered.


SQL> select * from new_table;




This means that if you want to move the ASM instance to another host, it’s enough to specify ASM_DISKSTRING parameter, V$ASM_DISKGROUP will discover all diskgroups

Posted in Administration, RAC issues | 2 Comments »

Step by Step Installing Oracle 12c RAC on VirtualBox – Video Tutorial

Posted by Kamran Agayev A. on 22nd September 2013

It’s 3.50 AM at San Francisco and I’m finalizing a new video tutorial that I have been creating for the users who will attend RAC Attack at Oracle Openworld 2013 (Ninja Operation). Tomorrow is the first day of OOW13 and I’m very happy that I was able to finish it in time. The first minutes of this tutorial was created in the plane when I was flying to SFO this week :)

For the step by step instruction, I’ve used the following article



You can watch the video from the following link:

You can download the video from this link:



Hope you’ll enjoy the video!

Posted in Administration, RAC issues | 7 Comments »

I’m RACAttack Ninja!

Posted by Kamran Agayev A. on 19th September 2013

I’m proud to announce that I’m one of the 10 RAC Attack Ninjas this year! If you’re attending OOW13, don’t forget to come and say “hi” to Ninjas. We’ll be at OTN Lounge in the lobby of Moscone South on 24th and 25th September between 10am-2pm

Using documentation created by Ninjas, you’ll be able to install and run Oracle 12c RAC on your laptop!

For the step by step introduction, check the following link:

To get more information about RacAttack event, check the following link:

You can check our facebook page:

And don’t forget to use #RACAttack hashtag.

I’m working on “Step by Step Installing Oracle 12c RAC Video tutorial” and hope it will be ready for the RACAttack event. If you don’t have time to install it during OOW days, come and watch the video tutorial and learn how to install Oracle 12c RAC

See you all soon!


Posted in Administration, RAC issues | 1 Comment »

User equivalence check failed for user “oracle”.

Posted by Kamran Agayev A. on 14th August 2013

If you’ve installed and configured RAC environment, you should face “User equivalenece check” error during pre-requisite check

There’re three common reasons for getting this error:

– You didn’t configure ssh between nodes. Make sure you can ssh to all nodes which are used at runcluvfy.sh script

– UID are different on any of node

– runcluvfy.sh script can’t find necessary executable to perform the connectivity or equivalence check


In my case, I configured ssh on both nodes and all parameters of an oracle user were same. So in this case, I decided to debug runcluvfy.sh script. To debug this script, you need to set some environment variables:

export CV_HOME=/home/oracle/cv   (Export Cluster Verify debugging home page)

export SRVM_TRACE=true

./runcluvfy.sh stage -post hwos -n node1,node2 -verbose


Then I checked the log file under /home/oracle/cv/pid/cv/log/log_file.log and got the following output:

[Worker 0] [8:57:44:666] [UnixSystem.checkRemoteExecutionSetup:1833] checkRemoteExecutionSetup:: Error checking user equivalence us
ing Secured Shell ‘/usr/local/bin/ssh’; Wed Aug 14 08:57:44 GMT+04:00 2013

[Thread-7] [8:57:44:850] [StreamReader.run:65] ERROR>remshd: Login incorrect.; Wed Aug 14 08:57:44 GMT+04:00 2013

[Thread-5] [8:58:15:773] [StreamReader.run:65] ERROR>rcmd_af: connect: node1: Connection refused; Wed Aug 14 08:5
8:15 GMT+04:00 2013


Hey, wait. I don’t have /usr/local/bin/ssh file! I do have ssh executable but it’s under the different directory. And why the script didn’t use “which ssh” command and get the exact path of the ssh executable?

Anyway, I created a symbolic link to the original ssh file and run the script again. It worked!

Posted in Administration, RAC issues | No Comments »

Waiting at “Performing remote operations” during RAC installation

Posted by Kamran Agayev A. on 30th January 2013

Today, while installing RAC, the installation began to wait at “Performing remote operations” step. I’ve tried to check log files, but there was no information written

Then I tried to trace the currently running process, but didn’t get enough information about the wait. At last, I checked both servers and found firewall running. After stopping firewall, (stopping, deinstalling and starting the installation again) the setup was able to pass that step and copied the Grid home files to the remote server


Posted in Administration, RAC issues | No Comments »

Testing Load balancing in Oracle RAC

Posted by Kamran Agayev A. on 14th January 2013

If you’ve installed Oracle RAC (Real Application Clusters) and want to test how Load Balancing works, you can run the following shell script and check GV$SESSION view:

. /home/oracle/.bash_profile
for ((i=1; i <= 50 ; i++))
nohup sqlplus -S system/oracle@racdb<<eof &


This will open 50 sessions in the background. Check GV$SESSION view before and after  running this query:

SQL> select inst_id,count(*) from gv$session where username is not null group by inst_id;

———- ———-
1           10
2          9

Run the following command from the different session:

[oracle@node1 ~] ./check_load_balancing.sh

SQL> /

———- ———-
1           33
2           36

Wait for 10 seconds (as we’ve defined “10” seconds at DBMS_LOCK.SLEEP procedure) and run the query again :

SQL> /

———- ———-
1           10
2           9


From the output you can see that all new sessions were distributed between two nodes appropriately.

Posted in RAC issues | 12 Comments »

Solving the bug – ORA-07445 [KFKPROCESSREQ()+429] in ASM instance

Posted by Kamran Agayev A. on 10th July 2012

Today, one of the instances of 2 node RAC went down with ORA-07445 error. After checking metalink, I found out that this is a bug:


And it happens after the upgrade of RAC to 10.2.5 patchset. Unfortunately there was no workaround suggested by support. After checking ASM log file again, I find the following error:

ORA-15186: ASMLIB error function = [asm_open], error = [1], mesg = [Operation not permitted]

The ASM instance was not mounting. The instance wasn’t able to find the shared storage, so I changed asm_diskstring parameter as follows:


It was a test RAC environment, both ASM instances were using different initialization parameter files (however, both database instances were using the same shared initialization parameter file)

I’ve created new server parameter file from the existing one, put it in the shared folder, changed parameter file of each instance (pfile=’/shared_folder/spfile+ASM.ora’) and started the failed ASM instance. Fortunately, it has started. Then I restarted the second ASM instance to make it use the shared parameter file and both instances were up


Posted in Administration, RAC issues | 2 Comments »

The installer has detected the existence of Oracle Clusterware

Posted by Kamran Agayev A. on 12th June 2012

After removing the RAC installation on the test server, I got the following error during the installation:

“The installer has detected the existence of 10g Oracle Clusterware on the remote node, —-, however, 10g Oracle Clusterware does not exist on the local node …


Although I run $CRS_HOME/install/rootdelete.sh, removed the $CRS_HOME and oraInventory folders and killed all running processes, it was throwing above mentioned error. After making some checks, I saw that /etc/oracle/ocr.loc file is still there. When removing that file, the error message disappeared. I was interested whether installation checks the file’s availability or its entry also, so created an empty file with the same name “ocr.loc” and tried the installation. Guess what? I got the error again. This means that Oracle looks only for the name of the file in the mentioned folder

In case you want to clear the failed RAC installation, check the following article:



Posted in Administration, RAC issues | No Comments »

PROT-1: Failed to initialize ocrconfig

Posted by Kamran Agayev A. on 17th May 2012

Today during RAC installation I got the following error while running root.sh on the first node

[php]Setting the permissions on OCR backup directory
Setting up NS directories
PROT-1: Failed to initialize ocrconfig
Failed to upgrade Oracle Cluster Registry configuration[/php]


Then I checked ocrconfig log file and got the following output:


[php]Oracle Database 10g CRS Release Production Copyright 1996, 2005 Oracle. All rights reserved.
2012-05-17 15:16:35.490: [ OCRCONF][1521206416]ocrconfig starts…
2012-05-17 15:16:35.492: [ OCRCONF][1521206416]Failure initializing ocr in DEFAULT. REBOOT INSTALL. err :[PROC-32: Cluster Ready Ser
vices on the local node is not running Messaging error [9]]
2012-05-17 15:16:35.492: [ OCROSD][1521206416]utstoragetype: /ocfs/ocrfile is on FS type 1952539503. Not supported.
2012-05-17 15:16:35.492: [ OCROSD][1521206416]utopen:6”: OCR location /ocfs/ocrfile configured is not valid storage type. Return c
ode [37].
2012-05-17 15:16:35.492: [ OCRRAW][1521206416]proprinit: Could not open raw device
2012-05-17 15:16:35.492: [ default][1521206416]a_init:7!: Backend init unsuccessful : [37]
2012-05-17 15:16:35.492: [ OCRCONF][1521206416]Failure in initializing ocr in INSTALL level. error:[PROC-37: Oracle Cluster Registry
does not support the storage type configured]
2012-05-17 15:16:35.492: [ OCRCONF][1521206416]Exiting [status=failed]…[/php]


There’re a lot of reasons and solutions for this error on the web, but in my case the problem was in the mount point parameter. When getting this error, the mount point parameter was as follows:


[php]/dev/dm-1 on /ocfs type ocfs2 (rw,_netdev,heartbeat=local)[/php]


Then I added “datavolume” parameter as follows:

[php]/dev/dm-2 on /ocfs2 type ocfs2 (rw,_netdev,datavolume,heartbeat=local)[/php]


And it worked!

Posted in Administration, RAC issues | No Comments »