我们在用RMAN做备份以后,可以通过目标数据库的视图和恢复目录的视图查看备份结果,也可以用list backup,report来查看.
SQL> select count(*) from v$backup_files;
COUNT(*)
----------
39
SQL> conn rman_user/rman_user@rman
已连接。
SQL> select count(*) from rc_backup_files;
select count(*) from rc_backup_files
*
第 1 行出现错误:
ORA-20021: database not set
ORA-06512: 在 "RMAN_USER.DBMS_RCVMAN", line 18877
ORA-06512: 在 "RMAN_USER.RC_LBRECSETIMPL_T", line 58
但是查看恢复目录视图时出现错误.
C:\Documents and Settings\oracle>set ORACLE_SID=devdb
C:\Documents and Settings\oracle>rman target / catalog rman_user/rman_user@rman
恢复管理器: Release 10.2.0.4.0 - Production on 星期三 5月 21 10:20:05 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
连接到目标数据库: DEVDB (DBID=557726576)
连接到恢复目录数据库
RMAN> register database;
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: register 命令 (default 通道上, 在 05/21/2008 10:20:20 上) 失败
RMAN-20002: 目标数据库已经在恢复目录中注册
我们看到恢复目录中已经注册了.
SQL> select * from rc_database_incarnation;
DB_KEY DBID DBINC_KEY NAME RESETLOGS_CHANGE# RESETLOGS_TIME
---------- ---------- ---------- -------- ----------------- -------------------
1 557726576 2 DEVDB 564341 2008-04-25 19:56:36
1 557726576 5 DEVDB 1 2008-03-14 18:46:22
两个数据库实体信息.
SQL> select * from rc_database;
DB_KEY DBINC_KEY DBID NAME RESETLOGS_CHANGE# RESETLOGS_TIME
---------- ---------- ---------- -------- ----------------- -------------------
1 2 557726576 DEVDB 564341 2008-04-25 19:56:36
当前最新的数据库信息.
SQL> exec dbms_rcvcat.unregisterdatabase(1,557726576);
PL/SQL 过程已成功完成。
取消注册,重新注册.
RMAN> list incarnation;
数据库原型列表
DB 关键字 Inc 关键字 DB 名 DB ID STATUS 重置 SCN 重置时间
------- ------- -------- ---------------- --- ---------- ----------
1 5 DEVDB 557726576 PARENT 1 2008-03-14 18:46:22
1 2 DEVDB 557726576 CURRENT 564341 2008-04-25 19:56:36
RMAN> list incarnation;
RMAN> reset database;
数据库原型已经注册
正在启动全部恢复目录的 resync
完成全部 resync
RMAN> list incarnation;
数据库原型列表
DB 关键字 Inc 关键字 DB 名 DB ID STATUS 重置 SCN 重置时间
------- ------- -------- ---------------- --- ---------- ----------
294 299 DEVDB 557726576 PARENT 1 2008-03-14 18:46:22
294 295 DEVDB 557726576 CURRENT 564341 2008-04-25 19:56:36
SQL> l
1* select * from rc_backup_files
SQL> /
select * from rc_backup_files
*
第 1 行出现错误:
ORA-20021: database not set
ORA-06512: 在 "RMAN_USER.DBMS_RCVMAN", line 18877
ORA-06512: 在 "RMAN_USER.RC_LBRECSETIMPL_T", line 58
仍然报错.
SQL> select * from db;
DB_KEY DB_ID HIGH_CONF_RECID LAST_KCCDIVTS HIGH_IC_RECID CURR_DBINC_KEY
---------- ---------- --------------- ------------- ------------- --------------
294 557726576 652996592 2 295
查看Metalink才明白:
主题: Query of RC_BACKUP_FILES View Returns error Ora-20021
文档 ID: 注释:363125.1 类型: HOWTO
上次修订日期: 30-MAR-2006 状态: MODERATED
要查询这个视图,必须在执行DBMS_RCVMAN.SETDATABASE以后才能查询,在执行中指定目标数据库的DBID.
RC_BACKUP_FILES 这个视图列出的备份是反映在RMAN恢复目录中 repository的结果. 这个视图和控制文件中的视图V$BACKUP_FILES 相对应.
SQL> CALL DBMS_RCVMAN.SETDATABASE(null,null,null,557726576,null);
调用完成。
SQL> select count(*) from rc_backup_files;
COUNT(*)
----------
50
It is usually more convenient to access this information using the LIST BACKUP and LIST COPY
commands from within RMAN.
You must use DBMS_RCVMAN.SetDatabase to select a database from the recovery catalog schema before
you can use this view.
看metalink的意思,如果要查询这个视图,需要执行恢复目录中的哪个数据库,即使就一个数据库也需要set
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/175005/viewspace-281132/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/175005/viewspace-281132/