另外还有个问题,我还是没搞清楚,在用rman实现恢复时候,怎么样从指定的备份恢复,而不是从oracle默认的备份恢复.
谢谢大家了,本来真的应该多开点分的,但我的可用分从来就没超过100分.

解决方案 »

  1.   

    1. 要把undo_retension设置太些,否则会被覆盖找不回来了.2. restore database tag=...........
    sample:
    RMAN> run{allocate channel c type disk;
    2> sql 'alter tablespace test offline';
    3> restore datafile 10 from tag=TAG20031115T165308;
    4> recover datafile 10; sql 'alter tablespace test online';
    5> }
      

  2.   

    cenlmmx(学海无涯苦作舟):
    怎么根据备份的获取tag?
    比方说:
    我先把表空间testspace,备份到d:\bk1目录下,并设置tag标记:
    rman>backup tablespace testspace format='d:\bk1\%D_%N_%s.dbf' tag='testbk1'
    然后我又把表空间testspace,备份到d:\bk2目录下,也设置tag标记:
    rman>backup tablespace testspace format='d:\bk2\%D_%N_%s.dbf' tag='testbk2'
    现在,我希望依据d:\bk1\下面的备份进行恢复,应该怎么写命令?如果是通过tag来确定备份文件路径,哪又要怎么样获取d:\bk1目录下该备份的tag呢?
      

  3.   

    RMAN> list backup看备份列表,里面就有tag
      

  4.   

    cenlmmx(学海无涯苦作舟):
    是可以用list观察tag,也可以在动态视图V$backup_piece下面根据备份所在位置确定tag,但tag好象可以是重复的,那就是说在restore时候rman不能依据tag来指定唯一一个备份啊,是不是restore通过其他参数来指定备份用来转储啊.?
    另外,其他的高人,上面3个问题,能不能给我一点指点啊..帮帮忙,都快进行不下去了..可能一开始思路就有问题,不应该在数据库级上实现回退功能,而应该在应用程序中实现,这样就不会牵扯到数据库的备份和恢复.
    但现在没办法了,想该边思路都不行了...请大家帮忙啊.
      

  5.   

    我到没发现tag重复的情况,是你设置让它们重复的?
    你可以用rman检查并删除多余的备份
    RMAN> report obsolete (可以删除的backupset)
    RMAN> delete expired backup;(backupset)1. 对blob用闪回可能不行,一般都是针对小数据量的,要不你的回滚段会受不了的.
    2. 还没试过
    3. rman对表空间,只能是完全恢复,不完全恢复只能对全库做,要不然全库怎么可能保持一致.
      

  6.   

    cenlmmx(学海无涯苦作舟) 
    哦..那看来只有通过rman的备份/恢复来实现了.
    我现在对oracle的备份/恢复不太了解,我把系统的要求详细说一下,你帮我看看怎么实现.主要功能: 数据差异备份、还原功能.
    具体包括:
    1、数据备份:界面上包括输入备份的路径、备份文件名称(可以文件打开对话框选择)、数据库服务器名称、备份的数据库名称、有关的说明。
    2、数据还原:界面上包括输入备份文件名称(可以文件打开对话框选择)、数据库服务器名称、备份的数据库名称、有关的说明。