Oracle Study之案例--数据恢复神器Flashback(3)
发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,Oracle Study之案例--数据恢复神器Flashback(3)Flashback Database:案例分析:flashback database:利用flashback log 对整个dat
千家信息网最后更新 2025年02月08日Oracle Study之案例--数据恢复神器Flashback(3)
Oracle Study之案例--数据恢复神器Flashback(3)
Flashback Database:
案例分析:
flashback database:利用flashback log 对整个database 做回退到过去的某个时间点(用于DDL 的误操作如drop 和 truncate),类似于RMAN的不完全恢复(media recovery incompelete)
因为flashback database是不完全恢复,在恢复到过去的时间点前应该对数据库备份!
1、查看flashback database是否开启07:21:27 SQL> select flashback_on from v$database; FLASHBACK_ON------------------NO2、创建recovery area07:21:33 SQL> show parameter recover NAME TYPE VALUE------------------------------------ ----------- ------------------------------db_recovery_file_dest string /u01/app/oracle/flash_recovery _areadb_recovery_file_dest_size big integer 2Grecovery_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------------------YES07: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 1016 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 bytesFixed Size 1219184 bytesVariable Size 71304592 bytesDatabase Buffers 239075328 bytesRedo Buffers 2973696 bytesDatabase 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 1016 rows selected.--恢复成功,重新以resetlogs的方式open database07:31:40 SQL> shutdown immedaite SP2-0717: illegal SHUTDOWN option07: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 bytesFixed Size 1219184 bytesVariable Size 71304592 bytesDatabase Buffers 239075328 bytesRedo Buffers 2973696 bytesDatabase 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 1016 rows selected.因为flashback database是不完全恢复,在恢复到过去的时间点前应该对数据库备份!案例2:基于timestamp的flashback database04:04:28 SQL> show user;USER is "SYS"04:08:04 SQL> conn scott/tigerConnected.04:08:13 SQL> select to_char(sysdate,'yyyy-mm-dd hh34:mi:ss') from dual;TO_CHAR(SYSDATE,'YY-------------------2011-03-18 04:08:4204:09:02 SQL> conn /as sysdbaConnected.04:09:07 SQL> select current_scn from v$database;CURRENT_SCN----------- 143759704:09:10 SQL> conn scott/tigerConnected.04:09:29 SQL> select * from tab;TNAME TABTYPE CLUSTERID------------------------------ ------- ----------EMP TABLEDEPT TABLEBONUS TABLESALGRADE TABLEQUEST_SL_TEMP_EXPLAIN1 TABLEEMP1 TABLEERRLOG TABLEPART_SALES TABLET01 TABLEDEPT1 TABLE10 rows selected.select * from t01; ID NA---------- -- 1 TM04: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 sysdbaConnected.04:11:03 SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.04:11:28 SQL> startup mountORACLE instance started.Total System Global Area 314572800 bytesFixed Size 1219184 bytesVariable Size 184550800 bytesDatabase Buffers 125829120 bytesRedo Buffers 2973696 bytesDatabase mounted.将database恢复到过去的时间点:04:12:07 SQL> flashback database to timestamp to_timestamp('2011-03-18 04:10:26','yyyy-mm-dd hh34: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 open04: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 done04: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:276 rows selected.04:15:59 SQL> conn scott/tigerConnected.04:16:18 SQL> select * from t01; ID NA---------- -- 1 TM04: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 NUMBER04: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
[oracle@rh7 ~]$ sqlplus '/as sysdba'SQL*Plus: Release 11.2.0.1.0 Production on Thu Jan 15 11:38:34 2015Copyright (c) 1982, 2009, Oracle. All rights reserved.Connected to an idle instance.11:41:52 SYS@ test1 >select name,FLASHBACK_ON from v$database;NAME FLASHBACK_ON--------- ------------------TEST1 YESElapsed: 00:00:00.0011:38:34 SYS@ test1 >startupORACLE instance started.Total System Global Area 523108352 bytesFixed Size 1337632 bytesVariable Size 188745440 bytesDatabase Buffers 327155712 bytesRedo Buffers 5869568 bytesDatabase mounted.Database opened.--下面查看闪回区分配的大小为大约M,闪回分钟以内的数据则需要M左右的空间 --注意列oldest_flashback_time说明了允许返回的最早的时间点11:39:17 SYS@ test1 >select oldest_flashback_scn old_flhbck_scn,oldest_flashback_time old_flhbck_tim,11:39:37 2 retention_target rete_trgt,flashback_size/1024/1024 flhbck_siz,11:39:47 3 estimated_flashback_size/1024/1024 est_flhbck_size11:40:01 4 from v$flashback_database_log;OLD_FLHBCK_SCN OLD_FLHBCK_T RETE_TRGT FLHBCK_SIZ EST_FLHBCK_SIZE-------------- ------------ ---------- ---------- --------------- 11898580 10-JAN-15 1440 305.429688 266.601563 --查看闪回11:40:15 SYS@ test1 >select * from v$flashback_database_stat;BEGIN_TIME END_TIME FLASHBACK_DATA DB_DATA REDO_DATA ESTIMATED_FLASHBACK_SIZE------------ ------------ -------------- ---------- ---------- ------------------------15-JAN-15 15-JAN-15 573440 24576 109056 0--查看sga中分配的闪回空间大小11:40:45 SYS@ test1 >select * from v$sgastat where name like 'flashback%';POOL NAME BYTES------------ -------------------------- ----------shared pool flashback generation buff 4149140shared pool flashback_marker_cache_si 9196
时间
数据
案例
成功
数据库
数据恢复
备份
大小
方式
空间
验证
神器
可以通过
日志
明了
案例分析
模式
状态
环境
中分
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络服务器授权合同书
魔兽金色平原服务器
数据库连接小程序代码
保存数据库的文件后缀名
数据库小组设计注意什么
数据库高并发方案
后人下载软件开发
数据库分st和uat
网络安全知识竞答宣传文案
文化网络安全管理
sql新建查询创建数据库
多个版本数据库
软件开发弹窗提示要素
廉价高速的网络技术是
计算机网络技术基础自测题
新华网数据库
戴尔r750xs服务器安装
黎明觉醒服务器注册人数多少
内网伪安全CA认证服务器
网络安全竞赛答题系统
sol数据库受影响是什么意思
18年三级网络技术报名
核心机房网络安全设备
曙光服务器连笔记本网卡不能识别
三大基础技术 数据库
杭州制造软件开发总结
浏览器未连接到代理服务器
命令行如何输入数据库名和表名
山洋服务器
西安摩石卓越软件开发有限公司