设为首页 收藏本站
查看: 525|回复: 0

[经验分享] Oracle Study之案例--数据恢复神器Flashback(1)

[复制链接]

尚未签到

发表于 2018-9-10 11:03:08 | 显示全部楼层 |阅读模式
1、构建测试环境  
07:01:37 SQL> conn scott/tiger
  
Connected.
  
07:01:41 SQL> select * from test;
  
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
  
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
  
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
  
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
  
      7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30
  
      7566 JONES      MANAGER         7839 02-APR-81       2975                    20
  
      7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30
  
      7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30
  
      7782 CLARK      MANAGER         7839 09-JUN-81       2450                    10
  
      7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20
  
      7839 KING       PRESIDENT            17-NOV-81       5000                    10
  
      7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0         30
  
      7876 ADAMS      CLERK           7788 23-MAY-87       1100                    20
  
      7900 JAMES      CLERK           7698 03-DEC-81        950                    30
  
      7902 FORD       ANALYST         7566 03-DEC-81       3000                    20
  
      7934 MILLER     CLERK           7782 23-JAN-82       1300                    10
  
14 rows selected.
  

  
2、DML误操作
  

  
07:01:45 SQL> delete from test ;
  
14 rows deleted.
  
07:01:59 SQL> commit;
  
Commit complete.
  

  
07:02:03 SQL> select * from test;
  
no rows selected
  

  
07:02:05 SQL> insert into test select * from emp where rownum  select * from test;
  
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
  
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
  
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
  
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
  
07:02:37 SQL> commit;
  
Commit complete.
  

  
2、利用logminer工具查找误操作的时间点(挖掘current redo或archive log)
  

  
07:03:03 SQL> select * from v$log;
  
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
  
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
  
         1          1          0   52428800          1 YES UNUSED                       0
  
         2          1          1   52428800          1 NO  CURRENT                1261015 17-AUG-11
  
         3          1          0   52428800          1 YES UNUSED                       0
  
07:03:20 SQL> col member for a50
  
07:03:23 SQL> select group#,member from v$logfile
  
    GROUP# MEMBER
  
---------- --------------------------------------------------
  
         3 /u01/app/oracle/oradata/prod/redo03.log
  
         2 /u01/app/oracle/oradata/prod/redo02.log
  
         1 /u01/app/oracle/oradata/prod/redo01.log
  

  
11:19:31 SQL> conn /as sysdba
  
Connected.
  
11:19:35 SQL> select * from v$log;
  
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
  
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
  
         1          1         12   52428800          2 YES INACTIVE                823116 29-SEP-11
  
         2          1         14   52428800          2 NO  CURRENT                 828692 29-SEP-11
  
         3          2          9   52428800          2 YES INACTIVE                824371 29-SEP-11
  
         4          2         11   52428800          2 NO  CURRENT                 828868 29-SEP-11
  
         5          1         13   52428800          2 YES INACTIVE                828670 29-SEP-11
  
         6          2         10   52428800          2 YES INACTIVE                828817 29-SEP-11
  
6 rows selected.
  

  
11:19:41 SQL> col member for a50
  
11:19:57 SQL> select group# ,member from v$logfile;
  
    GROUP# MEMBER
  
---------- --------------------------------------------------
  
         2 +DG1/prod/onlinelog/group_2.262.762877491
  
         2 +RECOVERY/prod/onlinelog/group_2.258.762877501
  
         1 +DG1/prod/onlinelog/group_1.261.762877473
  
         1 +RECOVERY/prod/onlinelog/group_1.257.762877479
  
         3 +DG1/prod/onlinelog/group_3.266.762877849
  
         3 +RECOVERY/prod/onlinelog/group_3.259.762877855
  
         4 +DG1/prod/onlinelog/group_4.267.762877859
  
         4 +RECOVERY/prod/onlinelog/group_4.260.762877867
  
         6 +DG1/prod/onlinelog/group_6.272.763037401
  
         6 +RECOVERY/prod/onlinelog/group_6.262.763037407
  
         5 +DG1/prod/onlinelog/group_5.271.763037441
  
    GROUP# MEMBER
  
---------- --------------------------------------------------
  
         5 +RECOVERY/prod/onlinelog/group_5.261.763037613
  
12 rows selected.
  

  
启动数据库附加日志:
  

  
11:19:58 SQL>Alter database add supplemental log data;
  

  
分析current redolog:
  

  
11:20:07 SQL> execute dbms_logmnr.add_logfile(logfilename=>'+DG1/prod/onlinelog/group_2.262.762877491',options=>dbms_logmnr.new);
  
PL/SQL procedure successfully completed.
  

  
11:20:57 SQL> alter session set nls_date_format='yyyy-mm-dd';
  
Session altered.
  
11:21:32 SQL> execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);
  
PL/SQL procedure successfully completed.
  

  
07:05:21 SQL>  execute dbms_logmnr.end_logmnr;
  
PL/SQL procedure successfully completed.
  

  
查看DML操作的时间点:
  
11:23:11 SQL> select username,scn,timestamp,sql_redo from v$logmnr_contents where seg_name='EMP1';
  
USERNAME                              SCN TIMESTAMP  SQL_REDO
  
------------------------------ ---------- ---------- --------------------------------------------------
  
                                   830293 2011-09-29 delete from "SCOTT"."EMP1" where "EMPNO" = '7369'
  
                                                     and "ENAME" = 'SMITH' and "JOB" = 'CLERK' and "MGR
  
                                                     " = '7902' and "HIREDATE" = TO_DATE('1980-12-17',
  
                                                     'yyyy-mm-dd') and "SAL" = '800' and "COMM" IS NULL
  
                                                      and "DEPTNO" = '20' and ROWID = 'AAAM01AAEAAAAGEA
  
                                                     AA';
  
3、flashback query基于时间点的查询
  
07:08:42 SQL> conn scott/tiger
  
Connected.
  

  
07:08:48 SQL> select * from test as of timestamp to_timestamp('2011-08-17 07:01:59','yyyy-mm-dd hh24:mi:ss');
  
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
  
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
  
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
  
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
  
      7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30
  
      7566 JONES      MANAGER         7839 02-APR-81       2975                    20
  
      7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30
  
      7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30
  
      7782 CLARK      MANAGER         7839 09-JUN-81       2450                    10
  
      7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20
  
      7839 KING       PRESIDENT            17-NOV-81       5000                    10
  
      7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0         30
  
      7876 ADAMS      CLERK           7788 23-MAY-87       1100                    20
  
      7900 JAMES      CLERK           7698 03-DEC-81        950                    30
  
      7902 FORD       ANALYST         7566 03-DEC-81       3000                    20
  
      7934 MILLER     CLERK           7782 23-JAN-82       1300                    10
  
14 rows selected.
  

  
将查询到的数据写入到表中:
  

  
07:08:50 SQL> insert into test (select * from test as of timestamp to_timestamp('2011-08-17 07:01:59','yyyy-mm-dd hh24:mi:ss'));
  
14 rows created.
  

  
07:09:10 SQL> select * from test;
  
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
  
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
  
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
  
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
  
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
  
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
  
      7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30
  
      7566 JONES      MANAGER         7839 02-APR-81       2975                    20
  
      7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30
  
      7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30
  
      7782 CLARK      MANAGER         7839 09-JUN-81       2450                    10
  
      7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20
  
      7839 KING       PRESIDENT            17-NOV-81       5000                    10
  
      7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0         30
  
      7876 ADAMS      CLERK           7788 23-MAY-87       1100                    20
  
      7900 JAMES      CLERK           7698 03-DEC-81        950                    30
  
      7902 FORD       ANALYST         7566 03-DEC-81       3000                    20
  
      7934 MILLER     CLERK           7782 23-JAN-82       1300                    10
  
16 rows selected.
  
---至此,数据恢复完成!



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-570886-1-1.html 上篇帖子: ORACLE SQL练习(一) 下篇帖子: Linux 免安装oracle客户端软件 连接 oracle数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表