ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 测试恢复3==当数据库处于打开状态时的恢复

测试恢复3==当数据库处于打开状态时的恢复

原创 Linux操作系统 作者:oracle_db 时间:2012-04-26 11:09:25 0 删除 编辑
说明:数据库在打开状态下需要恢复要怎么做呢?首先明确什么时候需要这么做这么做的前提是什么===发生损坏的文件和SYSTEM表空间没关系【系统表空间如果有问题那只能在关闭状态下进行恢复】,数据库在恢复的时候要求打开【这样不影响业务或者说影响业务的程度要小一点】,当前数据库正处在打开状态下。。。。

打开状态下的常规恢复流程:
1.把受影响的数据文件离线
2.还原数据文件RESTORE DATAFILE;
3.应用归档日志APPLY ARCHIVELOG
4.然后把数据文件ONLINE
========================准备工作==============================
如:
会话1:增加T表数据
SQL> show user;
USER is "QQ1"
SQL> select * from t;

        ID NAME
---------- ----------
         0 qq1
         1 qq2
         2 qq3

SQL> insert into t values (3,'qq4');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t;

        ID NAME
---------- ----------
         0 qq1
         1 qq2
         2 qq3
         3 qq4

SQL> 
会话2:手动切换日志
SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> 
切换日志以后在归档文件中会看到刚归档的归档日志
[oracle@oraclelinux 2012_04_26]$ ll
total 23308
-rw-r-----  1 oracle oinstall 21413888 Apr 26 10:11 o1_mf_1_53_7skcppkm_.arc
-rw-r-----  1 oracle oinstall  1565184 Apr 26 10:59 o1_mf_1_54_7skgjqyf_.arc
-rw-r-----  1 oracle oinstall   825856 Apr 26 11:01 o1_mf_1_55_7skgmvm2_.arc
-rw-r-----  1 oracle oinstall     1024 Apr 26 11:01 o1_mf_1_56_7skgn9cp_.arc
[oracle@oraclelinux 2012_04_26]$ ll
total 23796
-rw-r-----  1 oracle oinstall 21413888 Apr 26 10:11 o1_mf_1_53_7skcppkm_.arc
-rw-r-----  1 oracle oinstall  1565184 Apr 26 10:59 o1_mf_1_54_7skgjqyf_.arc
-rw-r-----  1 oracle oinstall   825856 Apr 26 11:01 o1_mf_1_55_7skgmvm2_.arc
-rw-r-----  1 oracle oinstall     1024 Apr 26 11:01 o1_mf_1_56_7skgn9cp_.arc
-rw-r-----  1 oracle oinstall   489984 Apr 26 11:25 o1_mf_1_57_7skj11s9_.arc
[oracle@oraclelinux 2012_04_26]$ ll
total 23804
-rw-r-----  1 oracle oinstall 21413888 Apr 26 10:11 o1_mf_1_53_7skcppkm_.arc
-rw-r-----  1 oracle oinstall  1565184 Apr 26 10:59 o1_mf_1_54_7skgjqyf_.arc
-rw-r-----  1 oracle oinstall   825856 Apr 26 11:01 o1_mf_1_55_7skgmvm2_.arc
-rw-r-----  1 oracle oinstall     1024 Apr 26 11:01 o1_mf_1_56_7skgn9cp_.arc
-rw-r-----  1 oracle oinstall   489984 Apr 26 11:25 o1_mf_1_57_7skj11s9_.arc
-rw-r-----  1 oracle oinstall     1536 Apr 26 11:26 o1_mf_1_58_7skj2sn1_.arc
[oracle@oraclelinux 2012_04_26]$ ll
total 23816
-rw-r-----  1 oracle oinstall 21413888 Apr 26 10:11 o1_mf_1_53_7skcppkm_.arc
-rw-r-----  1 oracle oinstall  1565184 Apr 26 10:59 o1_mf_1_54_7skgjqyf_.arc
-rw-r-----  1 oracle oinstall   825856 Apr 26 11:01 o1_mf_1_55_7skgmvm2_.arc
-rw-r-----  1 oracle oinstall     1024 Apr 26 11:01 o1_mf_1_56_7skgn9cp_.arc
-rw-r-----  1 oracle oinstall   489984 Apr 26 11:25 o1_mf_1_57_7skj11s9_.arc
-rw-r-----  1 oracle oinstall     1536 Apr 26 11:26 o1_mf_1_58_7skj2sn1_.arc
-rw-r-----  1 oracle oinstall     4608 Apr 26 11:26 o1_mf_1_59_7skj3oqc_.arc
[oracle@oraclelinux 2012_04_26]$ 

以上的准备是为了保证数据在发生更新以后,可用的归档完好无损的存在着!

===========================灾难发生===========================
会话1:测试用T表所有表空间数据文件被删除
[root@oraclelinux dbtest]# pwd
/u01/oradata/dbtest
[root@oraclelinux dbtest]# ll
total 1626024
-rw-r-----  1 oracle oinstall   7061504 Apr 26 11:36 control01.ctl
-rw-r-----  1 oracle oinstall   7061504 Apr 26 11:36 control02.ctl
-rw-r-----  1 oracle oinstall   7061504 Apr 26 11:36 control03.ctl
-rw-r--r--  1 oracle oinstall      1228 Mar 22 21:09 ctl
-rw-r-----  1 oracle oinstall 104865792 Apr 26 11:31 example01.dbf
-rw-r-----  1 oracle oinstall  20979712 Apr 26 11:31 paul01.dbf
-rw-r-----  1 oracle oinstall  52436992 Apr 26 11:31 qq01.dbf
-rw-r-----  1 oracle oinstall  52429312 Apr 26 11:26 redo01.log
-rw-r-----  1 oracle oinstall  52429312 Apr 26 11:36 redo02.log
-rw-r-----  1 oracle oinstall  52429312 Apr 26 11:25 redo03.log
-rw-r-----  1 oracle oinstall  52429312 Mar 23 14:50 redo04a.log
-rw-r-----  1 oracle oinstall  52429312 Apr 26 11:26 redo04.log
-rw-r-----  1 oracle oinstall 461381632 Apr 26 11:35 sysaux01.dbf
-rw-r-----  1 oracle oinstall 576724992 Apr 26 11:35 system01.dbf
-rw-r-----  1 oracle oinstall  20979712 Apr 25 22:00 temp01.dbf
-rw-r-----  1 oracle oinstall 115351552 Apr 26 11:34 undotbs01.dbf
-rw-r-----  1 oracle oinstall   5251072 Apr 26 11:31 users01.dbf
-rw-r-----  1 oracle oinstall  20979712 Apr 26 11:31 wenchuan01.dbf
-rw-r-----  1 oracle oinstall  20979712 Apr 26 11:31 wenchuan2.dbf
[root@oraclelinux dbtest]# rm -rf qq01.dbf 
[root@oraclelinux dbtest]# 
=====================恢复开始==================================
我们知道是那个数据文件丢失了QQ01.DBF,查看对应数据文件编号
SQL> select file#,name from v$datafile;

     FILE# NAME
---------- ------------------------------
   

         9 /u01/oradata/dbtest/qq01.dbf

2.让这个数据文件离线
SQL> alter database datafile 9 offline;

Database altered.

SQL> 
3.RESTORE恢复
把之前热备的数据文件复制到数据库存放数据文件的目录下
[root@oraclelinux hot]# ls
qq01.dbf
[root@oraclelinux hot]# cp qq01.dbf /u01/oradata/dbtest/
4.RECOVER数据文件
SQL> recover datafile 9;就使用一命令
这一步是做log applied
5.让数据文件ONLINE
SQL> alter database datafile 9 online;

Database altered.

SQL> 
6.检查恢复结果,标准是T表中有4条记录
SQL> select * from t;

        ID NAME
---------- ----------
         0 qq1
         1 qq2
         2 qq3
         3 qq4

SQL> 
=========================恢复结束=============================





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

上一篇: 对象表
下一篇: ora-00283
请登录后发表评论 登录
全部评论

注册时间:2008-11-13

  • 博文量
    158
  • 访问量
    313936