Encountered this error when RMAN cloning (DUPLICATE) an RAC target database. Solution was to set the LD_LIBRARY_PATH in the LISTENER.ORA for the target instance to reference the ORACLE_HOME/lib essentially, media manager libraries. If the LD_LIBRARY_PATH is not required to be set for your Media Management software there are other things to also check, read on.
Allocating a channel from a local connection OK:
$ export LD_LIBRARY_PATH=/app/oracle/product/11.2.0/db_1/lib:${LD_LIBRARY_PATH}
$ rman target /
Recovery Manager: Release 11.2.0.3.0 - Production on Mon Jun 24 16:52:02 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: REMODB (DBID=3746514001)
RMAN> run
2> {
3> allocate channel ch1 device type sbt TRACE 2 PARMS
'SBT_LIBRARY=/app/oracle/product/11.2.0/db_1/lib/libddobk.so,BLKSIZE=1048576,ENV=(STORAGE_UNIT=rmanbackups,
BACKUP_HOST=bkdom01,ORACLE_HOME=/app/oracle/product/11.2.0/db_1)';
4> }
using target database control file instead of recovery catalog
allocated channel: ch1
channel ch1: SID=85 instance=REMODB1 device type=SBT_TAPE
channel ch1: Data Domain Boost API
released channel: ch1
Allocate a channel via an SQL*Net connection results in error:
$ rman target sys@remodb
Recovery Manager: Release 11.2.0.3.0 - Production on Mon Jun 24 16:52:56 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
target database Password:
connected to target database: REMODB (DBID=3746514001)
RMAN> run
2> {
3> allocate channel ch1 device type sbt TRACE 2 PARMS
'SBT_LIBRARY=/app/oracle/product/11.2.0/db_1/lib/libddobk.so,BLKSIZE=1048576,ENV=(STORAGE_UNIT=rmanbackups,
BACKUP_HOST=bkdom01,ORACLE_HOME=/app/oracle/product/11.2.0/db_1)';
4> }
using target database control file instead of recovery catalog
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of allocate command on ch1 channel at 06/24/2013 16:53:18
ORA-19554: error allocating device, device type: SBT_TAPE, device name:
ORA-27211: Failed to load Media Management Library
Additional information: 3977
listener.ora
LISTENER_DUP = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myserver01)(PORT = 1522)) ) ) SID_LIST_LISTENER_DUP = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = REMODB) (ORACLE_HOME = /app/oracle/product/11.2.0/db_1) (SID_NAME = REMODB1) (ENVS="LD_LIBRARY_PATH=/app/oracle/product/11.2.0/db_1/lib") ) ) oracle@:/home/oracle/dba/keskins/tns_admin$ lsnrctl start listener_dup LSNRCTL for Solaris: Version 11.2.0.3.0 - Production on 05-JUL-2013 15:07:51 Copyright (c) 1991, 2011, Oracle. All rights reserved. Starting /app/oracle/product/11.2.0/db_1/bin/tnslsnr: please wait... TNSLSNR for Solaris: Version 11.2.0.3.0 - Production ... The command completed successfully oracle@:/home/oracle/dba/keskins/tns_admin$ tnsping remodb_dup ... Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = remodb01) (PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = REMODB))) OK (30 msec)Now test:
oracle@:/home/oracle/dba/keskins/tns_admin$ rman target sys@remodb_dup
Recovery Manager: Release 11.2.0.3.0 - Production on Fri Jul 5 15:08:03 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
target database Password:
connected to target database: REMODB (DBID=3746514001)
RMAN> run
2> {
3> allocate channel ch1 device type sbt TRACE 2 PARMS
'SBT_LIBRARY=/app/oracle/product/11.2.0/db_1/lib/libddobk.so,BLKSIZE=1048576,ENV=(STORAGE_UNIT=rmanbackups,
BACKUP_HOST=bkdom01,ORACLE_HOME=/app/oracle/product/11.2.0/db_1)';
4> }
using target database control file instead of recovery catalog
allocated channel: ch1
channel ch1: SID=118 instance=REMODB1 device type=SBT_TAPE
channel ch1: Data Domain Boost API
released channel: ch1
RMAN>
Solution - set ENVS with LD_LIBRARY_PATH in LISTENER.ORA for target instance. LD_LIBRARY_PATH does not get loaded over SQL*Net when set locally at the SHELL.
One last thing I came across in testing, loading a dependant media manager library first (libDDBoost.so) which is not a "libobk.so" object, and then libobk library allocated a channel OK. Even without setting LD_LIBRARY_PATH RMAN can load shared objects by force using this workaround - wouldn't call it supported.
RMAN> run
2> {
3> allocate channel ch1 device type sbt TRACE 2 PARMS
'SBT_LIBRARY=/app/oracle/product/11.2.0/db_1/lib/libDDBoost.so,BLKSIZE=1048576,ENV=(STORAGE_UNIT=rmanbackups,
BACKUP_HOST=bkdom01,ORACLE_HOME=/app/oracle/product/11.2.0/db_1)';
4> }
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of allocate command on ch1 channel at 06/24/2013 16:53:34
ORA-19554: error allocating device, device type: SBT_TAPE, device name:
ORA-27212: some entrypoints in Media Management Library are missing
SVR4 Error: 2: No such file or directory
RMAN> run
2> {
3> allocate channel ch1 device type sbt TRACE 2 PARMS
'SBT_LIBRARY=/app/oracle/product/11.2.0/db_1/lib/libddobk.so,BLKSIZE=1048576,ENV=(STORAGE_UNIT=rmanbackups,
BACKUP_HOST=bkdom01,ORACLE_HOME=/app/oracle/product/11.2.0/db_1)';
4> }
allocated channel: ch1
channel ch1: SID=69 instance=REMODB2 device type=SBT_TAPE
channel ch1: Data Domain Boost API
released channel: ch1