Monday, February 17, 2014

Rman channels, a need for manual channel allocation, ORA-19554, ORA-27211, ORA-19624, RMAN-10035

In a cluster environment , rman works clusterwide. I mean; when we allocate channel automatically, rman uses all of the cluster nodes to spread the work across the nodes in the clusters. For example; In a two node cluster, some channels are allocated from the first node and the others are allocated from the second.
It seems , Rman uses plsql to do this work.. It uses DBMS_BACKUP_RESTORE package.
When we the trace such a rman session we see the following;

DBGPLSQL:               30 TEXTNOD =   devtype := sys.dbms_backup_restore.deviceAllocate( ident => chid,
DBGPLSQL:               31 TEXTNOD =        node => node,
DBGPLSQL:               32 PRMVAL = type=>'SBT_TAPE',dupcnt=>1
DBGPLSQL:               33 TEXTNOD =  );

As you see above, even for tape channel rman uses database plsql to allocate channels..
So the thing we need to keep in my mind is that, when we have a tape device or a tape agent configured to run on only one of the cluster, our rman backups can encounter errors like the following;

RMAN-10035: exception raised in RPC:
ORA-19624: Operation failed, retry possible
ORA-19554: error allocating device, device type: SBT_TAPE, device name:
ORA-27211: Failed to load Media Management Library

It can be easily seen that rman cannot allocate the sbt_tape type channel here, but supposing that we already configured our libraries to connect the sbt device, these errors shoud not be seen, because we use node 1 to connect to database using rman.
On the other hand, the reason for these errors is actually the clusterwide parallelism ...
Rman connects to the target instance in a load balanced manner.. Rman creates its sessions and allocates channels through these session directly from the database using plsql. So if rman goes to node 2 because of the load balancing, and if we didnt configured our sbt type libraries/agent, rman normally produces above errors..

So in order to prevent these type of erros
* we should allocate channels manually from the node that configured to access our tape libraries
or
* we should configure all of the nodes in the cluster to be able to allocate necessary rman channels.

To create channels only from a specific node, we should create rman channels as follows;

CONFIGURE CHANNEL 1.. CONNECT 'user1/pwd1@node1';  
 Note that : node 1 is the node that configured properly for sbt type backups..

You can also check out the following post:

No comments :

Post a Comment