zoukankan      html  css  js  c++  java
  • Oracle用户管理的不完全恢复2:基于取消的恢复

    模拟生产库场景

    1.1关闭数据库

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

    1.2.冷备

     1 -bash-3.00$ cp /u01/oradata/sunbak/*   . 
     2 -bash-3.00$ ls -l
     3 total 2214344
     4 -rw-r-----   1 oracle   oinstall 7389184 Jan 25 23:36 control01.ctl
     5 -rw-r-----   1 oracle   oinstall 7389184 Jan 25 23:37 control02.ctl
     6 -rw-r-----   1 oracle   oinstall 7389184 Jan 25 23:37 control03.ctl
     7 -rw-r-----   1 oracle   oinstall 104865792 Jan 25 23:37 example01.dbf
     8 -rw-r-----   1 oracle   oinstall 52429312 Jan 25 23:37 redo01.log
     9 -rw-r-----   1 oracle   oinstall 52429312 Jan 25 23:38 redo02.log
    10 -rw-r-----   1 oracle   oinstall 52429312 Jan 25 23:38 redo03.log
    11 -rw-r-----   1 oracle   oinstall 10493952 Jan 25 23:38 sun01_1.dbf
    12 -rw-r-----   1 oracle   oinstall 10493952 Jan 25 23:38 sun02_1.dbf
    13 -rw-r-----   1 oracle   oinstall 5251072 Jan 25 23:38 sun03_1.dbf
    14 -rw-r-----   1 oracle   oinstall 262152192 Jan 25 23:38 sysaux01.dbf
    15 -rw-r-----   1 oracle   oinstall 503324672 Jan 25 23:39 system01.dbf
    16 -rw-r-----   1 oracle   oinstall 20979712 Jan 25 23:39 temp01.dbf
    17 -rw-r-----   1 oracle   oinstall 31465472 Jan 25 23:39 undotbs01.dbf
    18 -rw-r-----   1 oracle   oinstall 5251072 Jan 25 23:39 users01.dbf
    19 -bash-3.00$

    1.3.开启数据库插入数据

     1 SQL> startup 
     2 ORACLE instance started.
     3 
     4 Total System Global Area  289406976 bytes
     5 Fixed Size                  1279820 bytes
     6 Variable Size              79694004 bytes
     7 Database Buffers          205520896 bytes
     8 Redo Buffers                2912256 bytes
     9 Database mounted.
    10 Database opened.
    11 SQL>

    1.4 插入数据

     1 SQL> select * from t order by 1;
     2 
     3         ID NAME
     4 ---------- ----------------
     5          0 oracle
     6          1 oracle
     7          2 oracle
     8          3 oracle
     9          4 oracle
    10          5 oracle
    11          6 oracle
    12 
    13 7 rows selected.
    14 
    15 SQL> insert into t values (8,'mysql');
    16 
    17 1 row created.
    18 
    19 SQL> commit;
    20 
    21 Commit complete.
    22 
    23 SQL> 

    1.5“mysql”写入数据文件

    1 SQL> alter system checkpoint;
    2 
    3 System altered.
    4 
    5 SQL> 
    6 -bash-3.00$ strings /u01/oradata/sunbak/sun01_1.dbf |grep mysql
    7 mysql,
    8 -bash-3.00$ 

    1.6 归档(“mysql”已经被归档)

     1 SQL> alter system switch logfile;
     2 
     3 System altered.
     4 
     5 SQL> 
     6 -bash-3.00$ strings 1_4_805672882.dbf|grep mysql                                                                                   
     7 mysql
     8 -bash-3.00$
     9 
    10 此时"mysql"存在两种类型文件中

    1.7 再插入数据("mysql01")

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

    1.8 将数据写入数据文件

     1 SQL> alter system checkpoint;
     2 
     3 System altered.
     4 
     5 SQL> 
     6 -bash-3.00$ strings sun01_1.dbf|grep mysql01
     7 myslq01,
     8 -bash-3.00$ 
     9 
    10 #此时mysql01并未写入归档日志文件中

    1.9 备份控制文件

    1 SQL> alter database backup controlfile to trace as '/u01/admin/sun/udump/ctl20130129.sql';
    2 
    3 Database altered.
    4 
    5 SQL> 

    2.模拟破坏场景
    2.1 删除数据文件,控制文件,日志文件,归档日志文件保留("myslq"还存在,"mysql01"已不存在)

     1 -bash-3.00$ pwd
     2 /u01/oradata/sunbak
     3 -bash-3.00$ ls -l
     4 total 2215712
     5 -rw-r-----   1 oracle   oinstall 7389184 Jan 26 00:14 control01.ctl
     6 -rw-r-----   1 oracle   oinstall 7389184 Jan 26 00:14 control02.ctl
     7 -rw-r-----   1 oracle   oinstall 7389184 Jan 26 00:14 control03.ctl
     8 -rw-r-----   1 oracle   oinstall 104865792 Jan 26 00:02 example01.dbf
     9 -rw-r-----   1 oracle   oinstall 52429312 Jan 26 00:14 redo01.log
    10 -rw-r-----   1 oracle   oinstall 52429312 Jan 25 23:57 redo02.log
    11 -rw-r-----   1 oracle   oinstall 52429312 Jan 25 23:53 redo03.log
    12 -rw-r-----   1 oracle   oinstall 10493952 Jan 26 00:02 sun01_1.dbf
    13 -rw-r-----   1 oracle   oinstall 10493952 Jan 26 00:02 sun02_1.dbf
    14 -rw-r-----   1 oracle   oinstall 5251072 Jan 26 00:02 sun03_1.dbf
    15 -rw-r-----   1 oracle   oinstall 262152192 Jan 26 00:14 sysaux01.dbf
    16 -rw-r-----   1 oracle   oinstall 503324672 Jan 26 00:14 system01.dbf
    17 -rw-r-----   1 oracle   oinstall 20979712 Jan 25 22:02 temp01.dbf
    18 -rw-r-----   1 oracle   oinstall 31465472 Jan 26 00:09 undotbs01.dbf
    19 -rw-r-----   1 oracle   oinstall 5251072 Jan 26 00:02 users01.dbf
    20 -bash-3.00$ rm -f *
    21 -bash-3.00$ 

    2.2 关闭数据库

    1 SQL> shutdown abort
    2 ORACLE instance shut down.
    3 SQL>

    2.3 将备份数据库文件拷贝过来

    1 -bash-3.00$ pwd
    2 /u01/oradata/sunbak
    3 -bash-3.00$ 
    4 -bash-3.00$ cp /tmp/cold/* .
    5 -bash-3.00$ 

    2.4将数据库开到mount

     1 SQL> startup mount
     2 ORACLE instance started.
     3 
     4 Total System Global Area  289406976 bytes
     5 Fixed Size                  1279820 bytes
     6 Variable Size              79694004 bytes
     7 Database Buffers          205520896 bytes
     8 Redo Buffers                2912256 bytes
     9 Database mounted.
    10 SQL> 

    2.5 恢复

     1 SQL> recover database using backup controlfile until cancel;
     2 ORA-00279: change 697462 generated at 01/25/2013 23:34:43 needed for thread 1
     3 ORA-00289: suggestion : /u01/admin/sun/arch/1_3_805672882.dbf
     4 ORA-00280: change 697462 for thread 1 is in sequence #3
     5 
     6 #注 查看
     7 #-bash-3.00$ ls -l /u01/admin/sun/arch/1_3_805672882.dbf
     8 #-rw-r-----   1 oracle   oinstall  299520 Jan 25 23:53 /u01/admin/sun/arch/1_3_805672882.dbf
     9 #-bash-3.00$ 
    10 #Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    11 
    12 ORA-00279: change 698002 generated at 01/25/2013 23:53:32 needed for thread 1
    13 ORA-00289: suggestion : /u01/admin/sun/arch/1_4_805672882.dbf
    14 ORA-00280: change 698002 for thread 1 is in sequence #4
    15 ORA-00278: log file '/u01/admin/sun/arch/1_3_805672882.dbf' no longer needed
    16 for this recovery
    17 
    18 #此时 /u01/admin/sun/arch/1_4_805672882.dbf 文件不存在,故cancel
    19 Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    20 cancel
    21 Media recovery cancelled.
    22 SQL>

    3.开启数据库

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

    4.查看结果

     1 SQL> select * from user1.t order by 1;
     2 
     3         ID NAME
     4 ---------- ----------------
     5          0 oracle
     6          1 oracle
     7          2 oracle
     8          3 oracle
     9          4 oracle
    10          5 oracle
    11          6 oracle
    12          7 oracle
    13          8 mysql
    14 
    15 8 rows selected.
    16 
    17 SQL>
  • 相关阅读:
    【转】python装饰器
    【原】python异步学习
    【转】Docker学习_本地/容器文件互传(5)
    【原】容灾/容错概念理解
    【原】thinkphp实现存储session至redis
    【原】thinkphp修改Redis操作类,支持选择数据库功能及添加其他方法
    高性能CSS(三)
    Free Code Camp社区对数百计编程学习者进行的统计希望告诉你什么?
    最精简24L01程序--发送
    金日
  • 原文地址:https://www.cnblogs.com/polestar/p/2883004.html
Copyright © 2011-2022 走看看