ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 恢复编录的创建和使用.txt

恢复编录的创建和使用.txt

原创 Linux操作系统 作者:to_be_dba 时间:2013-03-02 13:46:44 0 删除 编辑

恢复编录的创建和使用

目标:在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.DBF
D:\ORACLE\ORADATA\TEST\SYSAUX01.DBF
D:\ORACLE\ORADATA\TEST\USERS01.DBF


SQL> create tablespace rm_testdb datafile 'D:\ORACLE\ORADATA\TEST\RM_T
ESTDB.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 rc_owner/rc_owner@test

恢复管理器: 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 sys/sys@testdb 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 sys/sys@targ catalog rc_owner/rc_owne
r@test

恢复管理器: 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)向恢复编录的相应表中插入了目标数据库的数据
#在编录数据库中(rc_owner/rc_owner@test)
SQL> select * from db;

    DB_KEY      DB_ID HIGH_CONF_RECID LAST_KCCDIVTS HIGH_IC_RECID CURR_DBINC_KEY
---------- ---------- --------------- ------------- ------------- --------------
         1 2156956452                     809000420             2              2
#在目标数据库(sys/sys@targ as sysdba)
SQL> select dbid from v$database;

      DBID
----------
2156956452


(2)将目标数据库控制文件中的rman资料库上传到恢复编录相关表
比如,从df、tf表分别可以看到数据文件、临时数据文件的相关信息。

(3) 同步控制文件与恢复编录

以后只要我们在备份时同时连接到目标数据库和编录数据库,备份的信息就将自动传送到恢复编录中。可以通过rman命令或者在编录数据库中直接查询到。

 

参考:
11g官方文档
《临危不惧:oracle 11g数据库恢复》

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26451536/viewspace-755137/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-11-23

  • 博文量
    170
  • 访问量
    484879