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

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

[复制链接]

尚未签到

发表于 2018-9-10 11:06:23 | 显示全部楼层 |阅读模式
1、查看flashback database是否开启  
07:21:27 SQL> select flashback_on from v$database;
  
FLASHBACK_ON
  
------------------
  
NO
  

  
2、创建recovery area
  
07:21:33 SQL> show parameter recover
  
NAME                                 TYPE        VALUE
  
------------------------------------ ----------- ------------------------------
  
db_recovery_file_dest                string      /u01/app/oracle/flash_recovery
  
                                                 _area
  
db_recovery_file_dest_size           big integer 2G
  
recovery_parallelism                 integer     2                                                                                                  ---recovery area可以存储flashback log、archive log、rman backup等
  
[oracle@work ~]$ mkdir -p /disk1/recovery/prod
  

  
配置recovery area:
  
07:22:49 SQL> alter system set db_recovery_file_dest='/disk1/recovery/prod' scope=spfile;
  
System altered.
  

  
在归档模式下启用flashback database:
  

  
07:25:06 SQL> alter database flashback on;
  
Database altered.
  

  
07:25:29 SQL> select flashback_on from v$database;
  
FLASHBACK_ON
  
------------------
  
YES
  

  
07:25:38 SQL> alter database open;
  
Database altered.
  

  
案例1:flashback database恢复DDL误操作(基于SCN)
  

  
flashback database可以用于基于时间点或SCN的数据恢复(可以通过logminer来查看DDL操作的时间点)
  

  
1)模拟环境
  
15:18:17 SYS@ test1 >select current_scn from v$database;
  

  
CURRENT_SCN
  
-----------
  
   1264788
  

  
07:26:30 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.
  
07:26:36 SQL> drop table test purge;
  
Table dropped.
  

  
07:27:20 SQL> create table test as select * from emp where rownum=1;
  
Table created.
  
07:27:25 SQL> select * from test;
  
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
  
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
  
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
  

  
查看flashback 日志:
  
[oracle@work ~]$ ls /disk1/recovery/prod/PROD/flashback/
  
o1_mf_74q999lb_.flb
  

  
关闭数据库后,在mount状态下恢复:
  
07:29:22 SQL> shutdown immediate
  
Database closed.
  
Database dismounted.
  
ORACLE instance shut down.
  

  
07:29:53 SQL> startup mount
  
ORACLE instance started.
  
Total System Global Area  314572800 bytes
  
Fixed Size                  1219184 bytes
  
Variable Size              71304592 bytes
  
Database Buffers          239075328 bytes
  
Redo Buffers                2973696 bytes
  
Database mounted.
  

  
通过flashback database将库恢复到过去的scn:
  
07:30:02 SQL> flashback database to scn 1264788;
  
Flashback complete.
  

  
将database以read only方式打开,先验证下恢复是否成功,如果不成功,再从新进入mount下恢复
  
07:31:29 SQL> alter database open read only;
  
Database altered.
  

  
07:31:34 SQL> select * from scott.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.
  

  
--恢复成功,重新以resetlogs的方式open database
  
07:31:40 SQL> shutdown immedaite
  
SP2-0717: illegal SHUTDOWN option
  
07:31:45 SQL> shutdown immediate
  
Database closed.
  
Database dismounted.
  
ORACLE instance shut down.
  
07:32:02 SQL> startup mount
  
ORACLE instance started.
  
Total System Global Area  314572800 bytes
  
Fixed Size                  1219184 bytes
  
Variable Size              71304592 bytes
  
Database Buffers          239075328 bytes
  
Redo Buffers                2973696 bytes
  
Database mounted.
  
07:32:10 SQL> alter database open resetlogs;
  
Database altered.
  

  
验证:
  
07:32:25 SQL> select * from scott.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.
  

  
因为flashback database是不完全恢复,在恢复到过去的时间点前应该对数据库备份!
  

  
案例2:基于timestamp的flashback database
  

  
04:04:28 SQL> show user;
  
USER is "SYS"
  
04:08:04 SQL> conn scott/tiger
  
Connected.
  
04:08:13 SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
  
TO_CHAR(SYSDATE,'YY
  
-------------------
  
2011-03-18 04:08:42
  

  
04:09:02 SQL> conn /as sysdba
  
Connected.
  
04:09:07 SQL> select current_scn from v$database;
  
CURRENT_SCN
  
-----------
  
    1437597
  
04:09:10 SQL> conn scott/tiger
  
Connected.
  
04:09:29 SQL> select * from tab;
  
TNAME                          TABTYPE  CLUSTERID
  
------------------------------ ------- ----------
  
EMP                            TABLE
  
DEPT                           TABLE
  
BONUS                          TABLE
  
SALGRADE                       TABLE
  
QUEST_SL_TEMP_EXPLAIN1         TABLE
  
EMP1                           TABLE
  
ERRLOG                         TABLE
  
PART_SALES                     TABLE
  
T01                            TABLE
  
DEPT1                          TABLE
  
10 rows selected.
  
select * from t01;
  
        ID NA
  
---------- --
  
         1 TM
  
04:10:07 SQL> insert into t01 values(2,'aa');
  
1 row created.
  
04:10:17 SQL> insert into t01 values(3,'bb');
  
1 row created.
  
04:10:26 SQL> commit;
  
Commit complete.
  
04:10:30 SQL> drop table t01;
  
Table dropped.
  

  
04:10:59 SQL> conn /as sysdba
  
Connected.
  
04:11:03 SQL> shutdown immediate
  
Database closed.
  
Database dismounted.
  
ORACLE instance shut down.
  
04:11:28 SQL> startup mount
  
ORACLE instance started.
  
Total System Global Area  314572800 bytes
  
Fixed Size                  1219184 bytes
  
Variable Size             184550800 bytes
  
Database Buffers          125829120 bytes
  
Redo Buffers                2973696 bytes
  
Database mounted.
  

  
将database恢复到过去的时间点:
  
04:12:07 SQL> flashback database to timestamp to_timestamp('2011-03-18 04:10:26','yyyy-mm-dd hh24:mi:ss');
  
Flashback complete.
  
04:13:34 SQL> alter database open;
  
alter database open
  
*
  
ERROR at line 1:
  
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
  
04:14:10 SQL> alter database open noresetlogs;
  
alter database open noresetlogs
  
*
  
ERROR at line 1:
  
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done
  

  
04:14:18 SQL> alter database open resetlogs;
  
Database altered.
  

  
04:15:35 SQL> select * from v$log;
  
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
  
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
  
         1          1          0   52428800          2 YES UNUSED                       0
  
         2          1          0   52428800          2 YES UNUSED                       0
  
         3          1          0   52428800          2 YES UNUSED                       0
  
         4          1          0   52428800          2 YES UNUSED                       0
  
         5          1          0   52428800          2 YES UNUSED                       0
  
         6          1          1   52428800          2 NO  CURRENT                1437637 2011-03-18 04:14:27
  
6 rows selected.
  
04:15:59 SQL> conn scott/tiger
  
Connected.
  
04:16:18 SQL> select * from t01;
  
        ID NA
  
---------- --
  
         1 TM
  
04:34:35 SQL> desc v$flashback_database_log;
  
Name                                                                                Null?    Type
  
----------------------------------------------------------------------------------- -------- -   OLDEST_FLASHBACK_SCN                                                               NUMBER
  
OLDEST_FLASHBACK_TIME                                                             DATE
  
RETENTION_TARGET                                                                  NUMBER
  
FLASHBACK_SIZE                                                                    NUMBER
  
ESTIMATED_FLASHBACK_SIZE                                                          NUMBER
  
04:34:37 SQL> select * from v$flashback_database_log;
  
OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI RETENTION_TARGET FLASHBACK_SIZE TIMATED_FLASHBACK_SIZE
  
-------------------- ------------------- ---------------- -------------- ----------------------
  
1436931 2011-03-18 03:51:43             1440        8192000           115703808



运维网声明 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-570894-1-1.html 上篇帖子: Oracle Study之案例--数据恢复神器Flashback(2) 下篇帖子: oracle表空间 Oracle10g学习系列(10)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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