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

    场景描述:恢复打开的数据库

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

      a.未导致数据库关闭的文件损坏、文件意外丢失或介质故障。

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

      c.受到影响的文件不属于系统表空间或还原/回退段表空间。

    1.查看环境
    #此时数据库实在打开的情况下

    1 SQL> archive log list;
    2 Database log mode              Archive Mode
    3 Automatic archival             Enabled
    4 Archive destination            /u01/admin/sun/arch
    5 Oldest online log sequence     5
    6 Next log sequence to archive   7
    7 Current log sequence           7
    8 SQL>

    2.模拟生产环境
    2.1 插入数据

     1 SQL> conn user1/user1
     2 Connected.
     3 SQL> insert into t values(3,'oracle');
     4 
     5 1 row created.
     6 
     7 SQL> commit;
     8 
     9 Commit complete.
    10 
    11 SQL> select * from t;
    12 
    13         ID NAME
    14 ---------- ----------------
    15          1 oracle
    16          2 oracle
    17          0 oracle
    18          3 oracle
    19 
    20 SQL> 
    21 
    22 #手动切换日志 产生归档日志
    23 SQL> alter system switch logfile;
    24 
    25 System altered.
    26 
    27 SQL> /
    28 
    29 System altered.
    30 
    31 SQL> /
    32 
    33 System altered.
    34 
    35 SQL> 

    #sun01_1.dbf文件在上一节已经进行热备
    2.2 损坏表空间sun01的数据文件sun01_1.dbf

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

    3.恢复场景:数据库在open的情况下做完全恢复情况

    3.1 查看需要恢复信息

    1 #此时oracle并未发现有数据文件被损坏
    2 SQL> select * from v$recover_file;
    3 
    4 no rows selected
    5 
    6 SQL> 

    3.2 继续向t表插入数据,仍然可以插入(此时数据在redo中)

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

    3.3 手动执行CKPT,使redo中的数据插入数据文件

     1 SQL> alter system checkpoint local;--检查点分为三类:local,global,文件检查点
     2 
     3 System altered.
     4 
     5 SQL> 
     6 
     7 #查看alter日志发现报错信息
     8 Wed Jan 23 00:16:33 2013
     9 Errors in file /u01/admin/sun/udump/sun_ora_1227.trc:
    10 ORA-01110: data file 6: '/u01/oradata/sunbak/sun01_1.dbf'
    11 ORA-01116: error in opening database file 6
    12 ORA-01110: data file 6: '/u01/oradata/sunbak/sun01_1.dbf'
    13 ORA-27041: unable to open file
    14 Intel SVR4 UNIX Error: 2: No such file or directory
    15 Additional information: 3
    16 Wed Jan 23 00:16:33 2013
    17 Errors in file /u01/admin/sun/udump/sun_ora_1227.trc:
    18 ORA-01171: datafile 6 going offline due to error advancing checkpoint
    19 ORA-01116: error in opening database file 6
    20 ORA-01110: data file 6: '/u01/oradata/sunbak/sun01_1.dbf'
    21 ORA-27041: unable to open file
    22 Intel SVR4 UNIX Error: 2: No such file or directory
    23 Additional information: 3

    3.4查看需要恢复信息

    1 SQL> select file#,ONLINE_STATUS,ERROR from v$recover_file;
    2 
    3      FILE# ONLINE_ ERROR
    4 ---------- ------- --------------------
    5          6 OFFLINE FILE NOT FOUND
    6 
    7 SQL> 

    3.5 把被损坏文件离线

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

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

    1 bash-3.00$ ls -l /u01/backup/hot
    2 total 20512
    3 -rw-r-----   1 oracle   oinstall 10493952 Jan 22 22:00 sun01_1.dbf
    4 bash-3.00$ cp /u01/backup/hot/sun01_1.dbf .
    5 bash-3.00$ 

    3.7 恢复

    SQL> recover datafile 6;
    ORA-00279: change 574756 generated at 01/22/2013 21:58:34 needed for thread 1
    ORA-00289: suggestion : /u01/admin/sun/arch/1_2_805319563.dbf
    ORA-00280: change 574756 for thread 1 is in sequence #2
    
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    
    ORA-00279: change 604184 generated at 01/22/2013 23:54:27 needed for thread 1
    ORA-00289: suggestion : /u01/admin/sun/arch/1_8_805319563.dbf
    ORA-00280: change 604184 for thread 1 is in sequence #8
    ORA-00278: log file '/u01/admin/sun/arch/1_7_805319563.dbf' no longer needed
    for this recovery
    
    
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    
    Log applied.
    Media recovery complete.
    SQL> 
    
    #恢复完成
    SQL> select * from v$recover_file;
    
    no rows selected
    
    SQL> 

    3.8 将offline文件online

     1 SQL> desc v$datafile;
     2  Name                                      Null?    Type
     3  ----------------------------------------- -------- ----------------------------
     4  FILE#                                              NUMBER
     5  CREATION_CHANGE#                                   NUMBER
     6  CREATION_TIME                                      DATE
     7  TS#                                                NUMBER
     8  RFILE#                                             NUMBER
     9  STATUS                                             VARCHAR2(7)
    10  ENABLED                                            VARCHAR2(10)
    11  CHECKPOINT_CHANGE#                                 NUMBER
    12  CHECKPOINT_TIME                                    DATE
    13  UNRECOVERABLE_CHANGE#                              NUMBER
    14  UNRECOVERABLE_TIME                                 DATE
    15  LAST_CHANGE#                                       NUMBER
    16  LAST_TIME                                          DATE
    17  OFFLINE_CHANGE#                                    NUMBER
    18  ONLINE_CHANGE#                                     NUMBER
    19  ONLINE_TIME                                        DATE
    20  BYTES                                              NUMBER
    21  BLOCKS                                             NUMBER
    22  CREATE_BYTES                                       NUMBER
    23  BLOCK_SIZE                                         NUMBER
    24  NAME                                               VARCHAR2(513)
    25  PLUGGED_IN                                         NUMBER
    26  BLOCK1_OFFSET                                      NUMBER
    27  AUX_NAME                                           VARCHAR2(513)
    28  FIRST_NONLOGGED_SCN                                NUMBER
    29  FIRST_NONLOGGED_TIME                               DATE
    30 
    31 SQL> col name format a30
    32 SQL> select file#,status,name from v$datafile;
    33 
    34      FILE# STATUS  NAME
    35 ---------- ------- ------------------------------
    36          1 SYSTEM  /u01/oradata/sunbak/system01.dbf
    37 
    38          2 ONLINE  /u01/oradata/sunbak/undotbs01.dbf
    39 
    40          3 ONLINE  /u01/oradata/sunbak/sysaux01.dbf
    41 
    42          4 ONLINE  /u01/oradata/sunbak/users01.dbf
    43 
    44      FILE# STATUS  NAME
    45 ---------- ------- ------------------------------
    46          5 ONLINE  /u01/oradata/sunbak/example01.dbf
    47 
    48          6 OFFLINE /u01/oradata/sunbak/sun01_1.dbf
    49 
    50 SQL> 
    51 SQL> alter database datafile 6 online;
    52 
    53 Database altered.
    54 
    55 SQL> 

    4.查看恢复数据

     1 SQL> select * from t;
     2 
     3         ID NAME
     4 ---------- ----------------
     5          1 oracle
     6          2 oracle
     7          0 oracle
     8          3 oracle
     9          4 oracle
    10 
    11 SQL>
  • 相关阅读:
    Android将ScrollView移动到最底部
    Android权限之sharedUserId和签名
    python接口使用及工具函数
    python模块(json、os、sys、random、string、time、hashlib)
    python内置函数
    python模块、函数变量及递归
    python数据类型集合及函数
    python文件操作及修改
    python字符类型操作及文件操作
    jmeter压测
  • 原文地址:https://www.cnblogs.com/polestar/p/2874316.html
Copyright © 2011-2022 走看看