Chinaunix首页 | 论坛 | 博客
  • 博客访问: 829719
  • 博文数量: 198
  • 博客积分: 4036
  • 博客等级: 上校
  • 技术积分: 2173
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-19 22:31
文章分类

全部博文(198)

文章存档

2010年(4)

2008年(8)

2007年(143)

2006年(42)

2005年(1)

我的朋友

分类: Oracle

2007-03-08 15:54:42

测试步骤:
1、sqlplus / as sysdba;
2、建立一张新表xyz:
   SQL> create table xyz(a number);
        Table created.
3、在表xyz中插入一点数据:
  SQL> insert into xyz values(66);
     1 row created.
  SQL> select * from xyz;
           A
     ----------
          66
  SQL> insert into xyz values(99);
  1 row created.
  SQL> select * from xyz;
           A
  ----------
          66
          99
4、提交:
  SQL> commit;    
 
RMAN连接:
5、进行数据库的全备:
  RMAN> run {
  2> backup database format='/export/home/oracle/backup/db_full_%U';
  3> }
  //oracle10g下磁盘似乎不需要分配channel,完成后也会自动release;
6、进入sqlplus删除数据,做备份测试
  SQL> select * from xyz;
          A
    ----------
         66
         99
 
   删除数据:
   SQL> delete from xyz;
        2 rows deleted.
 
  提交:
  SQL> commit;
  
  查看:
  SQL> select * from xyz;
     no rows selected
 
7、恢复:
  若在恢复数据库时出现:
  RMAN-03002: failure of restore command at 03/08/2007 15:36:43
  ORA-19573: cannot obtain exclusive enqueue for datafile 1
  则可以先shutdown后再startup
 
  还原数据库:
  RMAN> restore database;
   
  恢复到某一时间点:
  RMAN> recover database until time='2007-03-08 15:29:54';
 
  此处时间点的选择:
  list backup;
    BS Key  Type LV Size       Device Type Elapsed Time Completion Time   
    ------- ---- -- ---------- ----------- ------------ -------------------
    37      Full    479M       DISK        00:03:11     2007-03-08 15:29:54
            BP Key: 37   Status: AVAILABLE  Compressed: NO  Tag: TAG20070308T152643
            Piece Name: /export/home/oracle/backup/db_full_17ic3ulj_1_1
      List of Datafiles in backup set 37
      File LV Type Ckp SCN    Ckp Time            Name
   有时time无时间显示,若备份文件格式中包含当前时间,如上图:Tag:TAG20070308T152643,用此处时间加上:Elapsed Time即可。
若在执行恢复时出现如下错误:
RMAN> recover database until time '2006-09-14 19:00:00'
2> ;

Starting recover at 14-SEP-06
using channel ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 09/14/2006 22:49:54
ORA-01861: literal does not match format string

RMAN> exit


Recovery Manager complete.

这个错误是由于时间日期格式设置的问题。

需要按如下方式设置正确的时间格式

[oracle@stat ~]$ export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
[oracle@stat ~]$ rman target /

然后再进行恢复。

8、resetlog:
  SQL> alter database open resetlogs;
//完成了不完全恢复后,必须重新设置联机重做日志。当使用resetlogs选项打开数据库时,所有的数据文件都获得一个新的resetlogs scn(系统更改号)和时间戳。已归档的重做日志在它们的头部也有这两个值。oracle通过为数据库提供与重做日志文件相匹配的resetlogs scn和时间戳,来防止用旧的归档日志破坏数据文件。
在使用此命令后,联机重做日志文件被还原,每个数据文件的头部文件都被更新,控制文件也被更新。所有这些工作完成之后,数据库打开。注意每个联机重做日志文件 的新序号。
 
9、查看恢复情况:
  SQL> alter database open resetlogs;
  SQL> select * from xyz;
            A
   ----------
           66
           99
至此恢复成功。
 
说明:在使用resetlogs选项打开数据库之后,必须做一个完整的数据库备份。要还原一个以前的数据库并将它前滚到resetlogs执行后的某个时间几乎是不可能的。
又注:据说oracle10g以后可以实现resetlogs后的按时间恢复,但是未测试过。
 
此处备份的前提是控制文件未曾损坏。如果是控制文件损坏或是重新装过系统则首先需要恢复控制文件(因为mount模式启动数据库必须要有控制文件),而控制文件的恢复需要在nomount模式下进行。大致步骤如下:
 
$ export ORACLE_SID=ora10g
$ rman target /

RMAN> set DBID=1341966532

RMAN> startup nomount;

RMAN> restore controlfile from autobackup;

RMAN> alter database mount;

 

阅读(1836) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~