各位大虾,问两个问题:
一,RMAN的恢复目录是不是应该建在另外一个数据库上好点,我知道可以跟目标数据库建在同一实例上,但我觉得万一目标数据库彻底蹦了,那连恢复目录都没有了,所以建在哪里好。还有加入恢复数据建在另一台服务器,这样它跟目标数据库是不是应该有什么关系才可以用,比如在配置文件中配置等,忘解释。
二,RMAN备份我觉得好像主要是备份这些文件日志的,对于具体的数据可以用么,是不是数据那些还得选exp/expdp之类的叫好,想要清楚RMAN的具体功效,啥时候该用。。
谢谢了。。

解决方案 »

  1.   

    我也只能简单说说,1  数据库崩了,或者说种种 不能正常启动的时候,都是说 实例 instance的, rman未必受影响, rman 可以看作是就是 某几个dbms工具的集合。数据库启动不了,主要是oracle 有什么地方不对,比如数据文件和空间文件 对不上等等,不是说oracle 程序完全不能用,而是实例无法启动2 rman 除了归档日志 会备份, 也会备份 ctl 和 数据文件, 只是按照不懂得 冗余需要,分成很多形式,
    比如 全量和增量,指定日期 制定数据块等等
    exp 和expdp 跟这个不同 ,主要用于数据迁移,版本的进退等等, 如果数据库实例真的启动不了, 那你把数据dmp文件进行导入,基本上实例还是不能启动的。只有正常启动之后, exp/imp 才有发挥的空间
      

  2.   

    1,rman的恢复目录一般都是单独分离出来的,单独的一个服务器,这样话比较安全,生产库挂了,不至于rman不能使用, 恢复目标数据库的话,只需要配置好监听,在建立catelog的服务器上连接到目标库就可以了.例如:rman target sys/system@POD2,rman不只是备份日志文件,还可以备份,数据文件,控制文件,参数文件,归档日志文件,使用的话,比如以上文件损坏,丢失,数据不一致等等!
      

  3.   

    问题1:能不能将恢复目录建立在目标库上,你做下实验就知道了...用恢复目录的作用就是避免目标库上的控制文件丢失或者损坏导致无法使用备份文件进行数据库恢复;控制文件丢失,数据库还能启动吗?就算你用其它方法启动了,如果进行全库还原,而你的恢复目录也位于目标库,还原过程中存储于恢复目录的脚本还能执行吗?
    附上一段代码(部分):
    /*****************************************代码************************************/
    二、创建恢复目录
       A、恢复目录环境准备
         为恢复目录创建一个独立的表空间
         SQL> create tablespace tools      datafile 'D:\Oradata\taurus\tools01.dbf' size 50M;
        表空间已创建。
         创建RMAN用户
         SQL> create user RMAN identified by RMAN default tablespace tools temporary tablespace temp;
        用户已创建。
         给RMAN授予权限
         SQL> grant connect,resource,recovery_catalog_owner to rman;
        授权成功。
         SQL> 
      B、创建恢复目录
        C:\Users\Lawrence>rman
        恢复管理器: Release 10.2.0.3.0 - Production on 星期三 6月 15 14:07:54 2011
        Copyright (c) 1982, 2005, Oracle.  All rights reserved.
        RMAN> connect catalog rman/rman
        连接到恢复目录数据库
         RMAN> create catalog tablespace tools;
        恢复目录已创建
      C、注册目标数据库
        C:>rman target system/password catalog rman/rman@taurus
          恢复管理器: Release 10.2.0.3.0 - Production on 星期三 6月 15 14:12:25 2011
          Copyright (c) 1982, 2005, Oracle.  All rights reserved.
          连接到目标数据库: TAURUS (DBID=1295936329)
          连接到恢复目录数据库
        RMAN> register database;
          注册在恢复目录中的数据库
           正在启动全部恢复目录的 resync
          完成全部 resync
        RMAN>
    D、注销恢复目录的目标数据库
        1、连接目标数据库,获得目标数据库ID
        C:>rman target system/password catalog rman/rman@taurus
        恢复管理器: Release 10.2.0.3.0 - Production on
        Copyright (c) 2005, Oracle.  All rights reserved.
        连接到目标数据库: TAURUS (DBID=1295936329)
        接到恢复目录数据库
        2、查询恢复目录,得到更详细的信息
        SQL> select db_key,db_id from db where db_id=1295936329;
           DB_KEY      DB_ID
         ---------- ----------
                  1 1295936329
        3、运行过程dbms_rcvcat.unregisterdatabase注销数据库
         SQL> exec dbms_rcvcat.unregisterdatabase(1,1295936329);
        PL/SQL 过程已成功完成。
         SQL>
      10g以后直接用unregister命令注销恢复目录中目标数据
       RMAN> unregister database;
          数据库名为 "SKYTEST" 且 DBID 为 1396230638
          是否确实要注销数据库 (输入 YES 或 NO)? yes
          已从恢复目录中注销数据库
       RMAN> 
    /*****************************************代码************************************/
    问题2:rman可以备份的文件有:控制文件、归档日志文件、数据文件、参数文件,所有你能想得到的数据库故障,只要有有效备份,都可以用rman备份。
      

  4.   

    其实我主要是想知道恢复目录数据库是跟目标数据库建在同一个库上好点还是建在另外一个服务器上好,假如要建在另外一个服务器,是不是需要两个数据库能互相访问?
    第二问题主要想知道rman备份数据好不好,一般我们备份数据都是用expdp之类的。我知道它能备份那些物理文件。
      

  5.   

    回答切中要害,恢复数据库与目标数据库假如在两台服务器上,这两个数据库是不是要能互相访问才可以?
    rman备份这些物理的还可以,备份那些实时的数据就不太实用了吧?
      

  6.   

    对的, recovery catalog 就应该放在单独的服务器上。rman 是真正的数据库备份,而不是备份日志。