本文共 3559 字,大约阅读时间需要 11 分钟。
恢复编录的创建和使用
目标:在windows环境下的数据库test中为虚拟机(192.168.56.130)上的testdb数据库创建恢复编录
目的:保证testdb的数据安全。
创建编录后归档日志和备份历史信息的保存时间可以不再受control_file_record_keep_time限制;即使控制文件丢失了,也能够用最简单的方法进行数据还原和恢复;可以查看开启编录后testdb任意时间点的表空间和schema情况;一、创建
1.在本地服务器test数据库下创建表空间catalog_testdb,作为testdb数据库的恢复编录专用Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.D:\Documents and Settings\tian>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 3月 2 09:44:27 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
已连接。SQL> select name from v$datafile; #首先查看一下数据文件的位置NAME
--------------------------------------------------------------------------------D:\ORACLE\ORADATA\TEST\SYSTEM01.DBF
D:\ORACLE\ORADATA\TEST\UNDOTBS01.DBFD:\ORACLE\ORADATA\TEST\SYSAUX01.DBFD:\ORACLE\ORADATA\TEST\USERS01.DBF SQL> create tablespace rm_testdb datafile 'D:\ORACLE\ORADATA\TEST\RM_TESTDB.DBF' size 20M; #指定表空间rm_testdb的位置,大小应该根据目标库(testdb)大小而定,推荐设置为至少20MB表空间已创建。
2.创建编录的方案(schema),名称为RC_OWNER,并授予recovery_catalog_owner权限SQL> create tablespace catalog_testdb datafile 'D:\ORACLE\ORADATA\TEST\CATALOG_T
ESTDB.DBF' size 20M;表空间已创建。
SQL> create user rc_owner identified by rc_owner default tablespace rm_testdb te
mporary tablespace temp quota unlimited on rm_testdb;#此处需要注意一下,别偷懒,一定要指定临时表空间和限额,否则后面的操作可能会有问题!#本人的实验中因此而create catalog出错用户已创建。
SQL> grant recovery_catalog_owner to rc_owner;
授权成功。
SQL> conn rc_owner/rc_owner
已连接。SQL> select object_name from user_objects;未选定行
#该schema下还没有任何对象
3.通过rman连接到编录数据库,利用create catalog命令创建必要的对象
D:\Documents and Settings\tian>rman catalog
恢复管理器: Release 10.2.0.1.0 - Production on 星期六 3月 2 09:54:21 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到恢复目录数据库
RMAN> create catalog;
恢复目录已创建
#再次查看对象数SQL> conn rc_owner/rc_owner已连接。SQL> select count(object_name) from user_objects;COUNT(OBJECT_NAME)
------------------ 195 二、使用1.注册目标数据库的编录数据库#注册时必须以sys用户连接目标数据库,以rc_owner(编录数据库中创建的编录用户)连接编录数据库
rman target catalog rc_owner/rc_owner #尝试用本地数据库做编录数据库(10.2.0.1),用虚拟机上的数据库(11.2.0.1)做目标库,报错如下:恢复管理器: Release 10.2.0.1.0 - Production on 星期六 3月 2 10:34:21 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571: ===========================================================RMAN-00554: 内部恢复管理器程序包初始化失败RMAN-04005: 目标数据库中存在错误:ORA-12560: TNS: 协议适配器错误#以上过程也该可以证明:target和catalog数据库不能在不同版本的数据库之间使用
#在本地创建实例targ,然后运行如下命令进行注册:(真实情况下不应该是同一台服务器上,而应该是不同服务器,不同的数据库实例上创建)
D:\Documents and Settings\tian>rman target catalog rc_owner/rc_owne恢复管理器: Release 10.2.0.1.0 - Production on 星期六 3月 2 10:36:52 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: TARG (DBID=2156956452)
连接到恢复目录数据库RMAN> register database;
注册在恢复目录中的数据库
正在启动全部恢复目录的 resync完成全部 resync“完成全部 resync”说明注册成功,并且完成了如下任务:
(1)向恢复编录的相应表中插入了目标数据库的数据#在编录数据库中()SQL> select * from db;DB_KEY DB_ID HIGH_CONF_RECID LAST_KCCDIVTS HIGH_IC_RECID CURR_DBINC_KEY
---------- ---------- --------------- ------------- ------------- -------------- 1 2156956452 809000420 2 2#在目标数据库( as sysdba)SQL> select dbid from v$database;DBID
----------2156956452 (2)将目标数据库控制文件中的rman资料库上传到恢复编录相关表比如,从df、tf表分别可以看到数据文件、临时数据文件的相关信息。(3) 同步控制文件与恢复编录
以后只要我们在备份时同时连接到目标数据库和编录数据库,备份的信息就将自动传送到恢复编录中。可以通过rman命令或者在编录数据库中直接查询到。
参考:
11g官方文档《临危不惧:oracle 11g数据库恢复》来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26451536/viewspace-755137/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26451536/viewspace-755137/