Chinaunix首页 | 论坛 | 博客
  • 博客访问: 335660
  • 博文数量: 81
  • 博客积分: 2107
  • 博客等级: 大尉
  • 技术积分: 742
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-30 09:38
文章分类

全部博文(81)

文章存档

2011年(2)

2010年(28)

2009年(45)

2008年(6)

我的朋友

分类: Oracle

2010-09-03 13:40:09

 
测试步骤:
1、sqlplus / as sysdba;
2、建立一张新表xyz:
   SQL> create table gmmtable(a number);
        Table created.
3、在表xyz中插入一点数据:
  SQL> insert into gmmtable values(66);
     1 row created.
  SQL> select * from gmmtable;
           A
     ----------
          66
  SQL> insert into gmmtable values(99);
  1 row created.
  SQL> select * from gmmtable;
           A
  ----------
          66
          99
4、提交:
  SQL> commit;    
 
RMAN连接:
    $ rman target /
 
5、进行数据库的全备:
 
    需要先设置时间格式,否则备份只能看到年月日,无法看到小时、分钟、秒。
 
    $ export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
  
  RMAN> run {
  2> backup database format='/opt/oracle_backup/20100903/db_full_%U';
  3> }
 
    RMAN> list backup;
   
  //oracle10g下磁盘似乎不需要分配channel,完成后也会自动release;
 
6、进入sqlplus删除数据,做备份测试
  SQL> select * from gmmtable;
          A
    ----------
         66
         99
 
   删除数据:
   SQL> delete from gmmtable;
        2 rows deleted.
 
  提交:
  SQL> commit;
  
  查看:
  SQL> select * from gmmtable;
     no rows selected
 
7、恢复:
  恢复数据库需要在mount模式下进行
    SQL> shutdown immediate;
   
    SQL> startup mount;
 
  还原数据库:
 
    $ rman target /
    RMAN> list backup;
    RMAN> restore database;
    RMAN> recover database until time "to_date('2010-09-03 11:22:04','yyyy-mm-dd hh24:mi:ss')";
    RMAN> quit;
    SQL> alter database open resetlogs;
  
 
8、resetlog:
  SQL> alter database open resetlogs;
//完成了不完全恢复后,必须重新设置联机重做日志。当使用resetlogs选项打开数据库时,所有的数据文件都获得一个新的resetlogs scn(系统更改号)和时间戳。已归档的重做日志在它们的头部也有这两个值。oracle通过为数据库提供与重做日志文件相匹配的resetlogs scn和时间戳,来防止用旧的归档日志破坏数据文件。
在使用此命令后,联机重做日志文件被还原,每个数据文件的头部文件都被更新,控制文件也被更新。所有这些工作完成之后,数据库打开。注意每个联机重做日志文件 的新序号。
 
9、查看恢复情况:
  SQL> alter database open resetlogs;
  SQL> select * from gmmtable;
            A
   ----------
           66
           99
至此恢复成功。
 
说明:在使用resetlogs选项打开数据库之后,必须做一个完整的数据库备份。要还原一个以前的数据库并将它前滚到resetlogs执行后的某个时间几乎是不可能的。
又注:据说oracle10g以后可以实现resetlogs后的按时间恢复,但是未测试过。
阅读(834) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-09-05 15:07:44

Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com