Thursday, March 25, 2010

NTP and csstd time synchronization option to install Oracle Clusterware 11gR2

In Oracle 11gR2 and later version, while installing Oracle clusterware it is required time synchronization across all nodes within a cluster. We can use two different options to setup time synchronization.

1)Operating system configured Network Time Protocol (NTP).
2)Oracle Cluster Time Synchronization Service (ctssd).

If you don't have NTP services started then Oracle Cluster Time Synchronization Service is used. However if you want to use ctssd (Cluster Time Synchronization Service Daemon) service in the cluster, then deconfigure and deinstall the Network Time Protocol (NTP).

In order to deactivate NTP service, you need to follow the following procedures.

i)Stop the existing ntpd service.
# /sbin/service ntpd stop

ii)Disable the service from the initialization sequences so that it does not start during startup.
# chkconfig ntpd off

iii)Remove the ntp.conf file.
# rm /etc/ntp.conf
or,
# mv /etc/ntp.conf to /etc/ntp.conf.bak

Also remove the file /var/run/ntpd.pid which maintains the pid for the NTP daemon.
# rm /var/run/ntpd.pid

When the installer finds that the NTP protocol service is inactive, the Cluster Time Synchronization Service is installed in active mode and synchronizes the time across the nodes.

IF NTP is active on the server, then the Cluster Time Synchronization Service is started in observer mode, and no active time synchronization is performed by Oracle Clusterware within the cluster.

To check whether ctssd is active or not as grid installation owner just issue,
$ crsctl check ctss

If you want to continue using NTP time synchronization service, then you need to modify the NTP initialization file to set the -x flag, which prevents time from being adjusted backward. After you modify it restart ntpd. Following steps demonstrate the procedure on Oracle Enterprise Linux, Red Hat Linux.

i)Edit /etc/sysconfig/ntpd file and add -x flag.
# vi /etc/sysconfig/ntpd
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"
SYNC_HWCLOCK=no

ii)Restart NTP service.
# /sbin/service ntp restart

On SUSE systems, modify the configuration file /etc/sysconfig/ntp with the following settings.
NTPD_OPTIONS="-x -u ntp"

Related Documents
http://arjudba.blogspot.com/2010/03/cluvfy-fails-with-prvf-5436-prvf-9652.html
http://arjudba.blogspot.com/2010/03/in-11gr2-grid-rootsh-fails-with-crs.html
http://arjudba.blogspot.com/2010/03/what-to-do-after-failure-of-oracle.html
http://arjudba.blogspot.com/2009/12/enable-archive-log-mode-for-rac.html
http://arjudba.blogspot.com/2008/09/list-of-parameters-that-must-have.html
http://arjudba.blogspot.com/2008/08/oracle-rac-software-components.html
http://arjudba.blogspot.com/2008/08/oracle-clusterware-processes-on-unix.html
http://arjudba.blogspot.com/2008/08/configure-raw-devices-for-asm-in-rac.html
http://arjudba.blogspot.com/2008/08/crs-stack-fails-to-start-after-reboot.html
http://arjudba.blogspot.com/2008/08/configure-network-for-oracle-rac.html
http://arjudba.blogspot.com/2008/08/pre-installation-rac-environement-setup.html
http://arjudba.blogspot.com/2008/08/configure-server-to-install-oracle-rac.html

Monday, March 22, 2010

cluvfy fails with PRVF-5436 PRVF-9652 Cluster Time Synchronization Services check failed

Problem Description
"cluvfy comp clocksync" check fails with PRVF-5436 and PRVF-9652 error like below.

$GRID_HOME/bin/cluvfy comp clocksync
..
..
..
Checking daemon liveness...
Liveness check passed for "xntpd"
PRVF-5436 : The NTP daemon running on one or more nodes lacks the slewing option "slewalways yes"
Clock synchronization check using Network Time Protocol(NTP) failed
PRVF-9652 : Cluster Time Synchronization Services check failed

From $ORACLE_BASE/oraInventory/logs/installActions{$TIMESTAMP}.log installation logs it shows similar entries like following:

..
INFO: Checking daemon liveness...
INFO: Liveness check passed for "xntpd"
INFO: PRVF-5436 : The NTP daemon running on one or more nodes lacks the slewing option "slewalways yes"
INFO: Clock synchronization check using Network Time Protocol(NTP) failed
INFO: PRVF-9652 : Cluster Time Synchronization Services check failed
INFO: Post-check for cluster services setup was unsuccessful on all the nodes.

Cause of the Problem
The problem happened because the time service (such as NTP) is not running or doesn't have slew option set.

Solution of the Problem
The problem happened because time service NTP is not running or doesn't have slew option set.
So, ensure that NTP service is up and running.
Based on the operating system solutions are given below.

1) Linux:
To verify service as root user issue,
# /sbin/service ntpd status
ntpd (pid 4423) is running...

Check process is running or not by.
# ps -ef|grep ntp
ntp 4209 1 0 Mar10 ? 00:00:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -x

# grep OPTIONS /etc/sysconfig/ntpd
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -x"

If NTP service is not started then to start the service issue,
To start the service issue,

# /sbin/service ntpd start

2) Solaris:
To verify the service issue,

# /usr/bin/svcs ntp
STATE STIME FMRI
online 3:29:11 svc:/network/ntp:default

# ps -ef|grep ntp
root 21223 1 0 Mar 10 ? 0:21 /usr/lib/inet/xntpd

# grep slewalways /etc/inet/ntp.conf
slewalways yes

To start the NTP service issue,

# /usr/sbin/svcadm enable ntp

3) HP-UX:

To verify the service issue,

# ps -ef|grep ntp
root 6022 1 0 14:23:42 ? 0:01 /usr/sbin/xntpd -x

# grep XNTPD_ARGS /etc/rc.config.d/netdaemons
export XNTPD_ARGS="-x"

To start the service issue,
# /sbin/init.d/xntpd start

4) AIX:

To verify the service issue,

# /usr/bin/lssrc -ls xntpd
xntpd tcpip 368754 active

# ps -ef|grep ntp
root 786614 151686 0 08:02:32 - 0:00 /usr/sbin/xntpd -x

# grep xntpd /etc/rc.tcpip
start /usr/sbin/xntpd "$src_running" -a "-x"

To start the service issue,

# /usr/bin/startsrc -s xntpd -a "-x"
Related Documents
http://arjudba.blogspot.com/2010/03/cluvfy-fails-with-prvf-5436-prvf-9652.html
http://arjudba.blogspot.com/2010/03/in-11gr2-grid-rootsh-fails-with-crs.html
http://arjudba.blogspot.com/2010/03/what-to-do-after-failure-of-oracle.html
http://arjudba.blogspot.com/2009/12/enable-archive-log-mode-for-rac.html
http://arjudba.blogspot.com/2008/09/list-of-parameters-that-must-have.html
http://arjudba.blogspot.com/2008/08/oracle-rac-software-components.html
http://arjudba.blogspot.com/2008/08/oracle-clusterware-processes-on-unix.html
http://arjudba.blogspot.com/2008/08/configure-raw-devices-for-asm-in-rac.html
http://arjudba.blogspot.com/2008/08/crs-stack-fails-to-start-after-reboot.html
http://arjudba.blogspot.com/2008/08/configure-network-for-oracle-rac.html
http://arjudba.blogspot.com/2008/08/pre-installation-rac-environement-setup.html
http://arjudba.blogspot.com/2008/08/configure-server-to-install-oracle-rac.html

Sunday, March 21, 2010

In 11gR2 Grid root.sh fails with CRS-2674: Start of 'ora.cssd' failed

Problem Description
In Linux x86-64 system while installing Oracle Grid Infrastructure RAC cluster running $GRID_HOME/root.sh succeeds on the 1st node but fails on the 2nd node while attempting to start 'ora.cssd'.

Following is the log file entry from the cssd log.

CRS-2674: Start of 'ora.cssd' on 'rac2' failed
CRS-2679: Attempting to clean 'ora.cssd' on 'rac2'
CRS-2681: Clean of 'ora.cssd' on 'rac2' succeeded
CRS-2673: Attempting to stop 'ora.diskmon' on 'rac2'
CRS-2677: Stop of 'ora.diskmon' on 'rac2' succeeded
CRS-4000: Command Start failed, or completed with errors.
CRS-2672: Attempting to start 'ora.cssd' on 'rac2'
CRS-2672: Attempting to start 'ora.diskmon' on 'rac2'
CRS-2674: Start of 'ora.diskmon' on 'rac2' failed
CRS-2679: Attempting to clean 'ora.diskmon' on 'rac2'
CRS-5016: Process "/u01/oracle/11.2.0/grid/bin/diskmon" spawned by agent "/u01/oracle/11.2.0/grid/bin/orarootagent.bin" for action "clean" failed: details at "(:CLSN00010:)" in "/u01/oracle/11.2.0/grid/log/rac2/agent/ohasd/orarootagent_root/orarootagent_root.log"
CRS-2681: Clean of 'ora.diskmon' on 'rac2' succeeded
CRS-2674: Start of 'ora.cssd' on 'rac2' failed
CRS-2679: Attempting to clean 'ora.cssd' on 'rac2'
CRS-2681: Clean of 'ora.cssd' on 'rac2' succeeded
CRS-4000: Command Start failed, or completed with errors.
Command return code of 1 (256) from command: /u01/oracle/11.2.0/grid/bin/crsctl start resource ora.ctssd -init -env USR_ORA_ENV=CTSS_REBOOT=TRUE
Start of resource "ora.ctssd -init -env USR_ORA_ENV=CTSS_REBOOT=TRUE" failed
Failed to start CTSS
Failed to start Oracle Clusterware stack

Cause of the Problem
The startup of the CSS daemon on RAC node 2 failed because either it could not establish a network connection to the first node or it could not synchronize time with the first node. You can be sure by reviewing the messages seen in the CSS daemon log ($GRID_HOME/log/{nodename}/cssd/ocssd.log) on the 2nd node. If your 2nd node hostname is rac2 then review at location $GRID_HOME/log/rac2/cssd/ocssd.log.

From is the part of ocssd.log entry.

2010-03-13 10:59:36.581: [ CSSD][1246480704]clssnmLocalJoinEvent: Node rac1, number 1, is in an existing cluster with disk state 3
2010-03-13 10:59:36.582: [ CSSD][1246480704]clssnmLocalJoinEvent: takeover aborted due to cluster member node found on disk
2010-03-13 10:59:36.685: [ CSSD][1162561856]clssnmvDHBValidateNCopy: node 1, rac1, has a disk HB, but no network HB, DHB has rcfg 157026738, wrtcnt, 1507, LATS 66284084, lastSeqNo 1507, uniqueness 1261524838, timestamp 1261526376/66279084
2010-03-13 10:59:37.110: [ CSSD][1215011136]clssgmWaitOnEventValue: after CmInfo State val 3, eval 1 waited 0
2010-03-13 10:59:37.513: [ CSSD][1235990848]clssnmSendingThread: sending join msg to all nodes
2010-03-13 10:59:37.513: [ CSSD][1235990848]clssnmSendingThread: sent 5 join msgs to all nodes

While the connectivity on the cluster interconnect appeared to be functioning (nodes can be pinged via their private nodenames/IP addresses), a firewall blocked traffic on certain ports thus impacting the communication between the CRS daemon processes. It may also be reason that due to time synchronization problem running script root.sh on 2nd node fails.

Solution of the Problem
1) Disable Firewall:
Disable firewalls in all nodes. In Linux log in as root and run the following commands,
$ su
# service iptables stop
# service ip6tables stop


To disable firewall permanently issue,
# chkconfig iptables off
# chkconfig ip6tables off


If you want to enable firewall then exclude all traffic on the private network from the firewall configuration.

2) Synchronize Time between the nodes:
Setup NTP server to ensure that you have time synchronized between all nodes. In the post How to setup NTP Server it is discussed how to setup NTP server. So after synchronize timing deconfigure and reconfigure your grid infrastructure installation by following http://arjudba.blogspot.com/2010/03/what-to-do-after-failure-of-oracle.html.
Related Documents
http://arjudba.blogspot.com/2010/03/cluvfy-fails-with-prvf-5436-prvf-9652.html
http://arjudba.blogspot.com/2010/03/in-11gr2-grid-rootsh-fails-with-crs.html
http://arjudba.blogspot.com/2010/03/what-to-do-after-failure-of-oracle.html
http://arjudba.blogspot.com/2009/12/enable-archive-log-mode-for-rac.html
http://arjudba.blogspot.com/2008/09/list-of-parameters-that-must-have.html
http://arjudba.blogspot.com/2008/08/oracle-rac-software-components.html
http://arjudba.blogspot.com/2008/08/oracle-clusterware-processes-on-unix.html
http://arjudba.blogspot.com/2008/08/configure-raw-devices-for-asm-in-rac.html
http://arjudba.blogspot.com/2008/08/crs-stack-fails-to-start-after-reboot.html
http://arjudba.blogspot.com/2008/08/configure-network-for-oracle-rac.html
http://arjudba.blogspot.com/2008/08/pre-installation-rac-environement-setup.html
http://arjudba.blogspot.com/2008/08/configure-server-to-install-oracle-rac.html

Saturday, March 20, 2010

What to do after failure of Oracle 11gR2 Grid Infrastructure (CRS) Installation

In this post I will discuss about how to proceed from failure of running root.sh script as well as failure before running of root.sh in Oracle 11gR2 Grid Infrastructure (CRS) Installation. Note that, the steps described in this post is only applicable for Oracle 11gR2 Grid Infrastructure installation.

I have discussed the things into four individual sections.
1) Deconfigure and Reconfigure of 11gR2 Grid Infrastructure installation in Standalone Server
2) Deinstall of 11gR2 Grid Infrastructure installation in Standalone Server
3) Deconfigure and Reconfigure of Grid Infrastructure Cluster
4) Deinstall of Grid Infrastructure Cluster

1) Deconfigure and Reconfigure of 11gR2 Grid Infrastructure installation in Standalone Server
To deconfigure,

i) Login as root and execute "$GRID_HOME/crs/install/roothas.pl -delete -force -verbose"
$ su
#$GRID_HOME/crs/install/roothas.pl -delete -force -verbose

ii) If it fails, please disable CRS, then reboot the node.

As root, execute "$GRID_HOME/bin/crsctl disable "
$su
# crsctl disable crs
# reboot
Once the node comes backup, execute above deconfigure command again.
# $GRID_HOME/crs/install/roothas.pl -delete -force -verbose

To reconfigure,
As root, execute "$GRID_HOME/root.sh"
$ su
# $GRID_HOME/root.sh

2) Deinstall of 11gR2 Grid Infrastructure installation in Standalone Server
As Grid user, execute $GRID_HOME/deinstall/deinstall
$ $GRID_HOME/deinstall/deinstall

3) Deconfigure and Reconfigure of Grid Infrastructure Cluster
Identify of root cause of failure of root.sh by reviewing the log files. Examine the logfiles from the location $GRID_HOME/cfgtoollogs/crsconfig and $GRID_HOME/log. Once cause is identified, follow the following steps one by one.

Step 01: As root, run "$GRID_HOME/crs/install/rootcrs.pl -verbose -deconfig -force" on all nodes, except the last one. If you have two nodes cluster then only run at first node.

$su
# $GRID_HOME/crs/install/rootcrs.pl -verbose -deconfig -force

Step 02: As root, run "$GRID_HOME/crs/install/rootcrs.pl -verbose -deconfig -force -lastnode" on last node. This command will zero out OCR and VD disk also. If you have two nodes cluster then run on second node.

# $GRID_HOME/crs/install/rootcrs.pl -verbose -deconfig -force -lastnode

Step 03: Fix the problem by identified cause in the log files.

Step 04: As root, run $GRID_HOME/root.sh on first node
# $GRID_HOME/root.sh

After completion run on all other nodes except last one. At last run at last node as root user.


4) Deinstall of Grid Infrastructure Cluster

Case 1: If "root.sh" is never run on the cluster, then as grid user, execute
$ $GRID_HOME/deinstall/deinstall

Case 2: If "root.sh" already ran, then follow the step below - please keep in mind that you will need wait till each step finishes successfully before move to next one.

Step 01: As root, run "$GRID_HOME/crs/install/rootcrs.pl -verbose -deconfig -force" on all nodes, except the last one.
$ su
# $GRID_HOME/crs/install/rootcrs.pl -verbose -deconfig -force

Step 02: As root, run "$GRID_HOME/crs/install/rootcrs.pl -verbose -deconfig -force -lastnode" on last node. This command will zero out OCR and VD disk also.
# $GRID_HOME/crs/install/rootcrs.pl -verbose -deconfig -force -lastnode

Step 03: As grid user, run $GRID_HOME/deinstall/deinstall
$ $GRID_HOME/deinstall/deinstall
Related Documents
http://arjudba.blogspot.com/2010/03/cluvfy-fails-with-prvf-5436-prvf-9652.html
http://arjudba.blogspot.com/2010/03/in-11gr2-grid-rootsh-fails-with-crs.html
http://arjudba.blogspot.com/2010/03/what-to-do-after-failure-of-oracle.html
http://arjudba.blogspot.com/2009/12/enable-archive-log-mode-for-rac.html
http://arjudba.blogspot.com/2008/09/list-of-parameters-that-must-have.html
http://arjudba.blogspot.com/2008/08/oracle-rac-software-components.html
http://arjudba.blogspot.com/2008/08/oracle-clusterware-processes-on-unix.html
http://arjudba.blogspot.com/2008/08/configure-raw-devices-for-asm-in-rac.html
http://arjudba.blogspot.com/2008/08/crs-stack-fails-to-start-after-reboot.html
http://arjudba.blogspot.com/2008/08/configure-network-for-oracle-rac.html
http://arjudba.blogspot.com/2008/08/pre-installation-rac-environement-setup.html
http://arjudba.blogspot.com/2008/08/configure-server-to-install-oracle-rac.html

Saturday, March 13, 2010

How to auto redirect a page to another web page

Auto redirection is a technique to direct a visitor to another webpage after the visitor lands to a web page. The another webpage can be in the same website or to a different website. It can be within same page.

There are several methods by which we can achive auto-redirection.

1) The "Meta Refresh Tag" method:
It is believed that redirection using Meta Refresh Tag keeps the search engine happy as long as there is a reasonable delay between landing page and the page to which it is being redirected. In general at least 5 seconds is recommended. The Meta Refresh Code must be within <head> section.

The syntax for the "refresh" meta command is
<meta http-equiv="refresh" content="N; URL=other-web-address">

The "content" parameter contains two parts, seperated by a semi-colon.
The first part is the delay measured in seconds, before the redirection occurs.
And the second part is the URL to which it will redirect. Just like any hyperlink. It can be a relative URL or an absolute URL.
Note that for search engine optimization a delay of 0 (zero) seconds is not recommended.

Suppose if I want to redirect this page to http://arjudba.blogspot.com after 5 seconds then my meta tag refresh method will look like,
<meta http-equiv="refresh" content="5; URL=http://arjudba.blogspot.com">
2) The "Javascript" method:
A small JavaScript code can be used to use redirect to another page. This Javascript code can be placed to anywhere in the page but it is better to use it in head section so that it runs as soon as the page begins to load. A simple example is below.
<html>
<head>
<script language="javascript" type="text/javascript">
window.setTimeout('window.location="http://arjudba.blogspot.com/";',5000);
</script>
</head>
<body>
<a href="http://arjudba.blogspot.com">Arju</a>
</body>
</html>
With above Javascript After 5000 milliseconds (5 seconds) the page will be automatically redirected to http://arjudba.blogspot.com in the same window if JavaScript is enabled in the browser.

If we want new site will be displayed in a new window then JavaScript code will be,
<html>
<head>
<script language="javascript" type="text/javascript">
window.setTimeout('window.open("http://arjudba.blogspot.com/")',5000);
</script>
</head>
<body>
<a href="http://arjudba.blogspot.com">Arju</a>
</body>
</html>
We can also write JavaScript code and then may want to load it from a HTML section. For example following JavaScript code and then onLoad from <body> section will do the work.
<HTML>
<script>
function autoChange()
{
var timeID = setTimeout("location.href= 'http://arjudba.blogspot.com'", 5000)
}
</script>
<BODY onLoad="autoChange()">
Arju
</body>
</HTML>
Related Documents
http://arjudba.blogspot.com/2009/12/scrolling-text-effect-html-code-with.html
http://arjudba.blogspot.com/2009/12/open-link-in-new-window-or-in-new-tab.html
http://arjudba.blogspot.com/2009/09/html-special-character-reference.html
http://arjudba.blogspot.com/2009/07/css-margin-with-example.html

Thursday, March 4, 2010

How to Check Your IP Address

Well, you are using Internet and wish to know your Public IP Address that currently used for you Internet connection. This is specially if you are using dial up connection or using a proxy server to connection to the Internet then ipconfig on windows or ifconfig on linux machine does not show your Public IP Address rather they show your Private IP address like below.
E:\>ipconfig

Windows IP Configuration


Ethernet adapter Local Area Connection:

Media State . . . . . . . . . . . : Media disconnected

Ethernet adapter Wireless Network Connection:

Media State . . . . . . . . . . . : Media disconnected

PPP adapter GP-INTERNET:

Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 10.130.20.120
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . : 10.130.20.120

If you are not aware about Private and Public IP address then a little discussion about IP Address will help you to understand the thins.

Internet Protocol (IP) Address is a numerical label that is assigned to a device in order to uniquely identify in a network/Internet. In the Internet Protocol Version 4 (IPV4) the designers of TCP/IP defined an IP address as a 32-bit number which limits the address space to 4,294,967,296 (2 to the power 32) possible unique addresses. Out of 4,294,967,296 IP Addresses some addresses are reserved such as private networks (~18 million addresses) or multicast addresses (~270 million addresses).

The addresses which are reserved for private networks are called Private IP Address and rest addresses are called Public IP Address. Following is the range of all IP Address exists in IPV4.

Class First octet in binary Range of first octet Network ID Host ID Number of networks Number of addresses
A 0XXXXXXX 0 - 127 a b.c.d 27-2 = 126 224-2 = 16,777,214
B 10XXXXXX 128 - 191 a.b c.d 214 = 16,384 216-2 = 65,534
C 110XXXXX 192 - 223 a.b.c d 221-1 = 2,097,151 28-2 = 254


From the above list following is the range of Private IP Address,

Class Start End No. of addresses
24-bit Block (/8 prefix, 1 x A) 10.0.0.0 10.255.255.255 16,777,216
20-bit Block (/12 prefix, 16 x B) 172.16.0.0 172.31.255.255 1,048,576
16-bit Block (/16 prefix, 256 x C) 192.168.0.0 192.168.255.255 65,536


So, 10.130.20.120 is my private IP Address and as Private IP addresses are not routed on the Internet and thus their use need not be coordinated with an IP address registry so to communicate with Internet there must have a Public IP address. There are many websites through which you can check your IP Address along with many features. From them, I see AnalyzeMy really helps me which much more information.

Tuesday, March 2, 2010

About RMAN Compatibility Matrix

About RMAN Environment
If you say about RMAN Environment, then there comes the following components.
1) RMAN executable
2) Recovery catalog database
3) Recovery catalog schema in the recovery catalog database
4) Target database
5) Auxiliary database (used for duplicate, duplicate for standby or tablespace point-in-time recovery)

Each component has a release number. Oracle uses up to 5 digits to indicate a version of the release, but only up to 4 are significant for RMAN compatibility purposes. For example, to check the release number of RMAN executable just issue, rman on command prompt like below.
E:\Documents and Settings\Arju>rman

Recovery Manager: Release 10.2.0.1.0 - Production on Tue Mar 2 16:16:59 2010

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


Here we see the version is 10.2.0.1.0

Determine the Recovery Catalog Schema Version

Use SQL*Plus to connect to the recovery catalog database as the catalog owner. For example, enter:

$ sqlplus rman@catdb
Query the rcver catalog table. For example, run this query:

SQL> SELECT * FROM rcver;

VERSION
------------
09.00.01.00
10.02.01.00
11.01.00.03
Note that, if multiple versions are listed, then the last row is the current version, and the rows before it are prior versions. In the preceding example, the current recovery catalog schema version is 11.1 and the previous version was 10.2.

Note that for releases 10.2 and later, the last two digits in the rcver output indicate patch level. For earlier releases, they are always zeros.

RMAN Compatibility Matrix
In general, the rules of RMAN compatibility are as follows:

1) You can create an 8.x or 9.x recovery catalog schema in any Oracle database release 8.1.x (or higher), and a 10.0.1 (or higher) recovery catalog schema in any Oracle database release 9.0.1 (or higher).

2) The version of an auxiliary database instance must be equal to the version of the RMAN client.

3) Any release of Oracle database can restore backup sets and copies created by any prior release back to Oracle8i.

4) The RMAN executable version should be the same as the target database. There are some exceptions regarding this rule.

5) The RMAN catalog schema version must be greater than or equal to the RMAN executable.

6) The RMAN catalog is backwards compatible with target databases from earlier releases.

7) While backing up an Oracle Database 10g or later database with the Oracle9i RMAN client, you cannot include a control file that was created using COMPATIBLE=10.0.0 in a datafile backup set. The workaround is to turn control file autobackup ON.

RMAN Compatibility table is shown below.








Target/Auxiliary
Database
RMAN Executable Catalog Database Catalog Schema
8.0.68.0.6>=8.1.7>=8.0.6
8.1.78.0.6.1>=8.1.7>=8.1.7
8.1.78.1.7>=8.1.7>=RMAN executable
8.1.7.4 8.1.7.4 >=8.1.7 8.1.7.4
8.1.7.4 8.1.7.4 >=8.1.7 >=9.0.1.4
9.0.1 9.0.1>=8.1.7 >= RMAN executable
9.2.0>=9.0.1.3 and <= Target database>=8.1.7>= RMAN executable
10.1.0>=9.0.1.3 and <= Target database>=9.0.1>= RMAN executable
10.2.0>=9.0.1.3 and <= target database executable>=9.0.1>= RMAN executable
11.1.0>=9.0.1.3 and <= target database executable>=9.0.1>= RMAN executable
11.2.0>=9.0.1.3 and <= target database executable>=9.0.1>= RMAN executable


From above table you can easily conclude about the compatibility about different components of RMAN.

Note that when compatibility matrix is broken the following error message may be generated.
- RMAN-06186: PL/SQL package string.string version string in string database is too old
- RMAN-06429: string database is not compatible with this version of RMAN

Related Documents
RMAN-06091 no channel allocated for maintenance (of an appropriate type)
RMAN-06429: TARGET database is not compatible with this version of RMAN
How to take RMAN backup on a remote disk/ location
RMAN-00554,RMAN-04005,ORA-0103 when remote connection by rman
Set Date format inside RMAN environment
How to skip a tablespace for restore operation
How to debug Backup, Restore Session in RMAN
Restore operation fails with RMAN-11003 ORA-01511 ORA-01516
Recover database after only lose of all controlfiles
RMAN-04014: startup failed: ORA-07446: sdnfy: bad value
How to restore an Spfile from autobackup older than 7 days
RMAN-06172: no autobackup found
Creating a Duplicate Database on a Remote Host -Part1
Database Duplication Fails Missing Log RMAN-06053 RMAN-06025
How to perform Database Point in time Recovery DBPITR