zoukankan      html  css  js  c++  java
  • oracle用户管理的完全恢复4:在ARCHIVELOG 模式(恢复打开的数据库数据库最初是关闭的)

    场景描述:恢复打开的数据库(数据库最初是关闭的)

    此恢复方法一般在以下情况下使用:

      a.介质或硬件故障导致系统关闭。

      b.数据库全天候(每周7 天、每天24 小时)运行。必须最大限度地减少数据库的停机时间。

      c.损坏的文件不属于系统表空间或还原段表空间

    1.模拟生产环境
    1.1 插入数据

    1 SQL> insert into t values(5,'oracle');
    2 
    3 1 row created.
    4 
    5 SQL> commit;
    6 
    7 Commit complete.
    8 
    9 SQL> 

    1.2 将数据写入数据文件sun01_1.dbf

    1 SQL> alter system checkpoint local;--是否实现将日志文件内容写入数据文件有待检验
    2 
    3 System altered.
    4 
    5 SQL>

    1.3 关闭数据库

    1 SQL> shutdown immediate
    2 Database closed.
    3 Database dismounted.
    4 ORACLE instance shut down.
    5 SQL> 

    1.4 损坏sun01_1.dbf文件

     1 bash-3.00$ cd /u01/oradata/sunbak
     2 bash-3.00$ ls -l
     3 total 2162512
     4 -rw-r-----   1 oracle   oinstall 7061504 Jan 23 01:08 control01.ctl
     5 -rw-r-----   1 oracle   oinstall 7061504 Jan 23 01:08 control02.ctl
     6 -rw-r-----   1 oracle   oinstall 7061504 Jan 23 01:08 control03.ctl
     7 -rw-r-----   1 oracle   oinstall 104865792 Jan 23 01:08 example01.dbf
     8 -rw-r-----   1 oracle   oinstall 52429312 Jan 23 01:06 redo01.log
     9 -rw-r-----   1 oracle   oinstall 52429312 Jan 23 01:06 redo02.log
    10 -rw-r-----   1 oracle   oinstall 52429312 Jan 23 01:08 redo03.log
    11 -rw-r-----   1 oracle   oinstall 10493952 Jan 23 01:08 sun01_1.dbf
    12 -rw-r-----   1 oracle   oinstall 251666432 Jan 23 01:08 sysaux01.dbf
    13 -rw-r-----   1 oracle   oinstall 503324672 Jan 23 01:08 system01.dbf
    14 -rw-r-----   1 oracle   oinstall 20979712 Jan 22 23:24 temp01.dbf
    15 -rw-r-----   1 oracle   oinstall 31465472 Jan 23 01:08 undotbs01.dbf
    16 -rw-r-----   1 oracle   oinstall 5251072 Jan 23 01:08 users01.dbf
    17 bash-3.00$ rm -f sun01_1.dbf 
    18 bash-3.00$ 

    1.5 将数据库打开(实际只能打开到mount)

     1 SQL> startup
     2 ORACLE instance started.
     3 
     4 Total System Global Area  289406976 bytes
     5 Fixed Size                  1279820 bytes
     6 Variable Size              92276916 bytes
     7 Database Buffers          192937984 bytes
     8 Redo Buffers                2912256 bytes
     9 Database mounted.
    10 ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
    11 ORA-01110: data file 6: '/u01/oradata/sunbak/sun01_1.dbf'
    12 
    13 
    14 SQL>
    15 #查看休要恢复文件
    16 SQL> select * from v$recover_file;
    17 
    18      FILE# ONLINE  ONLINE_ ERROR                   CHANGE# TIME
    19 ---------- ------- ------- -------------------- ---------- ---------
    20          6 ONLINE  ONLINE  FILE NOT FOUND                0
    21 
    22 SQL> 

    1.6 将需恢复文件下线

    1 SQL> alter database datafile 6 offline;
    2 
    3 Database altered.
    4 
    5 SQL> 

    1.7 打开数据库

    1 SQL> alter database open;
    2 
    3 Database altered.
    4 
    5 SQL> 

    2.开始恢复(利用冷备文件 热备文件皆可)

    2.1把上次备份的sun01_1.dbf文件拷过来

     1 bash-3.00$ cd /u01/oradata/sunbak
     2 bash-3.00$ ls -l /u01/backup/hot
     3 total 20512
     4 -rw-r-----   1 oracle   oinstall 10493952 Jan 22 22:00 sun01_1.dbf
     5 bash-3.00$ cp /u01/backup/hot/sun01_1.dbf .
     6 bash-3.00$ 
     7 
     8 #此时可把文件恢复到新的目录
     9 bash-3.00$ ls -l /u01/backup/hot
    10 total 20512
    11 -rw-r-----   1 oracle   oinstall 10493952 Jan 22 22:00 sun01_1.dbf
    12 bash-3.00$ cp /u01/backup/hot/sun01_1.dbf /u01/oradata/sun
    13 bash-3.00$
    14 #通过控制文件中文件的位置
    15 SQL> alter database rename file '/u01/oradata/sunbak/sun01_1.dbf' to '/u01/oradata/sun/sun01_1.dbf'

    2.2 恢复文件

     1 SQL> recover datafile 6;
     2 ORA-00279: change 574756 generated at 01/22/2013 21:58:34 needed for thread 1
     3 ORA-00289: suggestion : /u01/admin/sun/arch/1_2_805319563.dbf
     4 ORA-00280: change 574756 for thread 1 is in sequence #2
     5 
     6 
     7 Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
     8 
     9 ORA-00279: change 581083 generated at 01/22/2013 22:04:42 needed for thread 1
    10 ORA-00289: suggestion : /u01/admin/sun/arch/1_3_805319563.dbf
    11 ORA-00280: change 581083 for thread 1 is in sequence #3
    12 ORA-00278: log file '/u01/admin/sun/arch/1_2_805319563.dbf' no longer needed
    13 for this recovery
    14 
    15 Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    16 
    17 Log applied.
    18 Media recovery complete.
    19 SQL> 

    2.3将离线文件拉起

    1 SQL> alter database datafile 6 online;
    2 
    3 Database altered.
    4 
    5 SQL> 

    3.查看恢复结果

    SQL> select * from user1.t;
    
            ID NAME
    ---------- ------------------------------
             1 oracle
             2 oracle
             0 oracle
             3 oracle
             4 oracle
             5 oracle
    
    6 rows selected.
    
    SQL> 
  • 相关阅读:
    win8系统下,python 2.7安装xlrd,xlutils和xlwt的方法
    phone number
    string to int
    Linux P2V Azure
    Azure IaaS 知识点小节
    Exchange端口列表
    自签名证书和私有CA签名的证书的区别 创建自签名证书 创建私有CA 证书类型 证书扩展名(转)
    Power BI REST API
    Web App 压力测试
    Azure IaaS限制
  • 原文地址:https://www.cnblogs.com/polestar/p/2874491.html
Copyright © 2011-2022 走看看