今天上午在做RMAN实验时遇到了ORA-19550问题.
ORA-19550 cannot use backup/restore functions while using dispatcher
Cause: An attempt was made to use backup/restore functions while connected to the dispatcher in a shared server. This is not allowed because the device that is used for backup and restore must remain allocated to a single process.
Action: Connect directly to the instance then re-execute the backup or restore function.
实验环境: win2000 advanced server,oracle920
RMAN实验过程简述:
1. 建立了两个数据库practice和rcat,分别作为目标数据库和RMAN目录数据库.建库时二者都是采用共享服务器模式.建完库后分别启动两个实例.
2. 在rcat上建立一个cattbs表空间和rman920用户,并授予用户connect和recovery_catalog_owner权限.
3. 创建恢复目录管理器.RMANconnect target sys/sys@practice;RMANconnect catalog rman920/rman@rcat;RMANcreate catalog tablespace cattbs;(以下运行都是正常的)
4. 注册数据库.RMANregister database;这时出现了RMAN错误并在最后提示ORA-19550错误.
解决方法:
检查注册表,此时ORACLE_SID项的值是rcat.将它改为practice.
然后运行rman target sys/sys;RMANconnect catalog rman rman920/rman@rcat;RMANregister database;就正常了.
总结:
1. 此问题出现在同一台机器上建两个库并启动两个实例的情况下.在windows下会出现这个问题,可能unix下也有类似问题(网上看到有人问同样问题,环境是unix).
2. 这个问题的解决方式与ora-00106(无法在连接到调度程序时启动/关闭数据库)类似.可能二者都是在同时启动两个实例时才出现(未证实).
3. 不管是从服务器端还是从客户端连接都有这个问题。
疑问:
连接时加不加网络名到底有什么区别?(本机登录的情况下)
附注:
从目录中注销一个数据库的方法:
1. 删除该数据库的所有备份集。
2. RMANlist incarnation;得到db_key和db_id。
3. 在sqlplus中执行execute dbms_rcvcat.unregisterdatabase(db_key,db_id);