flashbacklog的管理方式
MySQLFlashback闪回功能详解
MySQLFlashback闪回功能详解1. 简介mysqlbinlog flashback(闪回)⽤于快速恢复由于误操作丢失的数据。
在DBA误操作时,可以把数据库恢复到以前某个时间点(或者说某个binlog的某个pos)。
⽐如忘了带where条件的update、delete操作,传统的恢复⽅式是利⽤全备+⼆进制⽇志前滚进⾏恢复,相⽐于传统的全备+增备,flashback显然更为快速、简单。
⽬前MySQL的flashback功能是利⽤binlog完成的,第⼀个实现该功能的是阿⾥云的彭⽴勋,他在MySQL 5.5版本上就已实现,并将其提交给MariaDB。
2. 闪回原理原理:flashback⼯具(-B 参数)可对rows格式的binlog可以进⾏逆向操作,delete反向⽣成insert、update⽣成反向的update、insert反向⽣成delete。
MySQL的binlog以event的形式,记录了MySQL中所有的变更情况,利⽤binlog我们就能够重现所记录的所有操作。
MySQL引⼊binlog主要有两个⽤途/⽬的:⼀是为了主从复制;⼆是⽤于备份恢复后需要重新应⽤部分binlog,从⽽达到全备+增备的效果。
MySQL的binlog有三种格式:statement,基于SQL语句的模式,⼀般来说⽣成的binlog尺⼨较⼩,但是某些不确定性SQL语句或函数在复制过程可能导致数据不⼀致甚⾄出错;row,基于数据⾏的模式,记录的是数据⾏的完整变化。
相对更安全,推荐使⽤(但通常⽣成的binlog会⽐其他两种模式⼤很多);mixed,混合模式,可以根据情况⾃动选⽤statement抑或row模式;这个模式下也可能造成主从数据不⼀致。
它属于MySQL 5.1版本时期的过渡⽅案,已不推荐使⽤了。
注意:使⽤mysqlbinlog flashback ⼯具必须设置:binlog_format = row3. flashback安装下载flashback⼯具 mysqlbinlog :,并将mysqlbinlog⽂件移⾄mysql安装路径的bin⽬录下(可备份原来的mysqlbinlog为mysqlbinlog_bak),执⾏mysqlbinlog --help命令,可能会报错(系统版本为 CentOS 6.4_x64):[root@centos64-slave1 bin]# mysqlbinlog --helpmysqlbinlog: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by mysqlbinlog)需要安装新版本的libstdc++.so.6,下载链接:[root@centos64-slave1 ~]# cp libstdc++.so.6.0.20 /usr/lib64/[root@centos64-slave1 ~]# cd /usr/lib64/[root@centos64-slave1 lib64]# mv libstdc++.so.6 libstdc++.so.6_bak[root@centos64-slave1 lib64]# ln -s libstdc++.so.6.0.20 libstdc++.so.6[root@centos64-slave1 lib64]# ll libstdc*lrwxrwxrwx 1 root root 19 4⽉609:30 libstdc++.so.6 -> libstdc++.so.6.0.20-rwxr-xr-x. 1 root root 987096 7⽉192013 libstdc++.so.6.0.13-rw-r--r-- 1 root root 1011824 4⽉609:28 libstdc++.so.6.0.20lrwxrwxrwx. 1 root root 19 1⽉1412:25 libstdc++.so.6_bak -> libstdc++.so.6.0.13安装完后执⾏mysqlbinlog --help,若报错:mysqlbinlog: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by/usr/lib64/libstdc++.so.6),需要更新/lib64库⽂件。
oracleFlashback详解
oracleFlashback详解使用oracle数据库时,难免会碰到一些问题.例:1.如何回滚已经commit了的数据2.如何查询已经被覆盖掉的数据[update],或者被delete了的数据3.如何将数据恢复到某个时间点我们就可以使用Flashback相关语句解决相关问题了关于Flashback[回闪]:从9i到10g到最新的11.2g,oracle对Flashback功能进行了进一步的扩展,利用Flashback我们可做到1.flashback query 闪回查询,并不实际修改表的数据2.flashback table 闪回表格,可恢复表格的数据3.flash database 闪回数据库,可恢复db的数据①:关于Flashback Query:1.Flash Query通过undo数据表空间数据,利用一致性的方法来查找用户需要的数据2.作用范围:查找指定时间点被(delete,update)的数据只是做查找操作,如果设计恢复那么就要使用flashback table了3.相关参数:1.查询出来的数据存活时间受undo_retention(默认为900秒)影响 [目标值,该变量(秒)可以影响undo表空间产生的data存活时间,时间一到,即死亡(消失)]2.闪回时间受undo表空间大小影响[关于undo表空间的操作,另一片文章会有讲解]3.查询的仅仅是快照,并不能修改当前状态4.基本语法[两种方式,使用时间片或scn号] 使用时间片的情况比较多1.select * from 你要查询表的名字 as of timestamp [查询某一时间该表的数据]2.select * from 你要查询表的名字 as of scn 具体scn号 [关于scn号,另一篇文章会讲解]4.原理:简单的说就是将以前被修改,删除了的数据,通过开启Flashback 模式,回到我们需要回到的时间来查看数据,在undo_retention该变量设置的时间过后,该镜像数据会自动被清除.相当于查看的是一个镜像数据.一种方式是利用scn号来查看镜像数据,另一种是通过查找时间片来查询镜像数据案例1:①--创建测试flashQuery表格主要由scn号和系统日期组成create table testQuery(id number,scn number,time varchar2(20),mydate varchar2(20));②--插入测试数据beginfor i in 1..16loopinsert into testQuery values(i,dbms_flashback.get_system_change_number(),to_char (sysdate,'yyyy-mm-dd hh24:mi:ss'),'你好'||i);--插入scn号和sysdate为方便后续查询commit;--如果不实时commit,那么会在循环完后,批量提交,时间点是一样的dbms_lock.sleep(2);--使用dbms_lock.sleep 方法和java的thread睡眠是一个意思参数以秒为单位end loop;end;③--查询未修改的数据result:1 3303552 2011-01-25 11:51:33 你好12 3303556 2011-01-25 11:51:35 你好23 3303558 2011-01-25 11:51:37 你好34 3303560 2011-01-25 11:51:39 你好45 3303562 2011-01-25 11:51:41 你好56 3303564 2011-01-25 11:51:43 你好67 3303566 2011-01-25 11:51:45 你好78 3303568 2011-01-25 11:51:47 你好89 3303570 2011-01-25 11:51:49 你好910 3303572 2011-01-25 11:51:51 你好1011 3303574 2011-01-25 11:51:53 你好1112 3303576 2011-01-25 11:51:55 你好1213 3303578 2011-01-25 11:51:57 你好1314 3303580 2011-01-25 11:51:59 你好1415 3303582 2011-01-25 11:52:01 你好1516 3303584 2011-01-25 11:52:03 你好16④--查询最新的scn号[类似于check point],该scn号在每次commit时,都会自动变化[使用scn号来开启Flashback Query模式] select dbms_flashback.get_system_change_number from dual;result:3307628 --该scn号可以理解成为一个check point点.我们可以借助这个标记来回退到该scn号查询当前的数据④--修改第十条,和第十一条的数据:update testQuery tq set tq.mydate='新年快乐'where scn='3303572';commit;update testQuery tq set tq.mydate='万事如意'where scn='3303574';commit;select*from testQueryresult:1 3303552 2011-01-25 11:51:33 你好12 3303556 2011-01-25 11:51:35 你好23 3303558 2011-01-25 11:51:37 你好34 3303560 2011-01-25 11:51:39 你好45 3303562 2011-01-25 11:51:41 你好56 3303564 2011-01-25 11:51:43 你好67 3303566 2011-01-25 11:51:45 你好78 3303568 2011-01-25 11:51:47 你好89 3303570 2011-01-25 11:51:49 你好910 3303572 2011-01-25 11:51:51 新年快乐11 3303574 2011-01-25 11:51:53 万事如意12 3303576 2011-01-25 11:51:55 你好1213 3303578 2011-01-25 11:51:57 你好1314 3303580 2011-01-25 11:51:59 你好1415 3303582 2011-01-25 11:52:01 你好1516 3303584 2011-01-25 11:52:03 你好16⑤--使用scn号来进行闪回查询1.不开启Flashback模式,仅使用Flashback query语句做查询select*from testQuery as of scn 3307628result:1 3303552 2011-01-25 11:51:33 你好12 3303556 2011-01-25 11:51:35 你好23 3303558 2011-01-25 11:51:37 你好34 3303560 2011-01-25 11:51:39 你好45 3303562 2011-01-25 11:51:41 你好56 3303564 2011-01-25 11:51:43 你好67 3303566 2011-01-25 11:51:45 你好78 3303568 2011-01-25 11:51:47 你好89 3303570 2011-01-25 11:51:49 你好910 3303572 2011-01-25 11:51:51 你好1011 3303574 2011-01-25 11:51:53 你好1112 3303576 2011-01-25 11:51:55 你好1213 3303578 2011-01-25 11:51:57 你好1314 3303580 2011-01-25 11:51:59 你好1415 3303582 2011-01-25 11:52:01 你好1516 3303584 2011-01-25 11:52:03 你好162.开启Flashback模式做查询,整个db将会产生某个scn号所在时间点的镜像数据.使用dbms包开启Flashback模式:execDBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(330 7628);现在查看表的数据:select*from testQuery as of scn 3307628;result:1 3303552 2011-01-25 11:51:33 你好12 3303556 2011-01-25 11:51:35 你好23 3303558 2011-01-25 11:51:37 你好34 3303560 2011-01-25 11:51:39 你好45 3303562 2011-01-25 11:51:41 你好56 3303564 2011-01-25 11:51:43 你好67 3303566 2011-01-25 11:51:45 你好78 3303568 2011-01-25 11:51:47 你好89 3303570 2011-01-25 11:51:49 你好910 3303572 2011-01-25 11:51:51 你好1011 3303574 2011-01-25 11:51:53 你好1112 3303576 2011-01-25 11:51:55 你好1213 3303578 2011-01-25 11:51:57 你好1314 3303580 2011-01-25 11:51:59 你好1415 3303582 2011-01-25 11:52:01 你好1516 3303584 2011-01-25 11:52:03 你好16注:此时整个DB为镜像数据.[如果单独再开启个链接,那么看到的还是真实数据而不是镜像数据];[如果中途要退出Flashback模式请使用:exec DBMS_FLASHBACK.DISABLE;]退出Flashback 模式:exec DBMS_FLASHBACK.DISABLE;select*from testQueryresult:1 3303552 2011-01-25 11:51:33 你好12 3303556 2011-01-25 11:51:35 你好23 3303558 2011-01-25 11:51:37 你好34 3303560 2011-01-25 11:51:39 你好45 3303562 2011-01-25 11:51:41 你好56 3303564 2011-01-25 11:51:43 你好67 3303566 2011-01-25 11:51:45 你好78 3303568 2011-01-25 11:51:47 你好89 3303570 2011-01-25 11:51:49 你好910 3303572 2011-01-25 11:51:51 新年快乐11 3303574 2011-01-25 11:51:53 万事如意12 3303576 2011-01-25 11:51:55 你好1213 3303578 2011-01-25 11:51:57 你好1314 3303580 2011-01-25 11:51:59 你好1415 3303582 2011-01-25 11:52:01 你好1516 3303584 2011-01-25 11:52:03 你好16以上就是使用scn号来做闪回查询了;⑥--使用时间点来进行闪回查询select*from testQuery as of timestamp to_timestamp('2011-01-25 13:25:55','yyyy-mm-dd hh24:mi:ss');做此查询要确保没有对原有表结构进行修改,如果有的话可能引发异常;select*from testQuery;result:1 3303552 2011-01-25 11:51:33 你好12 3303556 2011-01-25 11:51:35 你好23 3303558 2011-01-25 11:51:37 你好34 3303560 2011-01-25 11:51:39 你好45 3303562 2011-01-25 11:51:41 你好56 3303564 2011-01-25 11:51:43 你好67 3303566 2011-01-25 11:51:45 你好78 3303568 2011-01-25 11:51:47 你好89 3303570 2011-01-25 11:51:49 你好910 3303572 2011-01-25 11:51:51 你好1011 3303574 2011-01-25 11:51:53 你好1112 3303576 2011-01-25 11:51:55 你好1213 3303578 2011-01-25 11:51:57 你好1314 3303580 2011-01-25 11:51:59 你好1415 3303582 2011-01-25 11:52:01 你好1516 3303584 2011-01-25 11:52:03 你好16关于scn号和这个timeStamp的转换[这个可能会出问题(undo 表空间过小,无法查询到过早的数据)]scn→→timeStamp:select SCN_TO_TIMESTAMP(SCN号)as ts from dual;timeStamp→→scnselect TIMESTAMP_TO_SCN('25-1月-11 01.05.29.046000 下午')from dual;②:关于Flashback Table:1.闪回表格,可将表格的数据闪回到某个时间点2.需要开启行移动模式 [enable row movement]3.原理:Flashback Table也是利用Undo数据来恢复对象到指定时间点4.使用范围:恢复当前表及其相关对象到某个时间点5.注意点:1).闪回时间受参数undo_retention影响2).闪回时间受undo表空间大小影响3).和flashback query有差别,恢复表到以前的时间点[真实闪回,而不是镜像]6.语法:1).flashback table table_name to timestamp .... [根据时间点闪回]2).flash table table_name to scn ... [根据scn号回退,实际操作基本上不会用到]3).flashback table table_name to timestamp ... enable triggers. [创建表,开启行移动模式,用的不多]4).flashback table testFlashTable to TIMESTAMP systimestamp - interval '5' minute; [回退到几分钟之前,用的多]例:将第一条数据更新,然后进行闪回表格,得到我们以前的数据;创建新的表格测试:create table testFlashTable(id number,mydata varchar2(60));插入测试数据:insert into testFlashTable values(1,'一帆风顺'); commit;select*from testQuery;result:1 一帆风顺------等待5分钟--------让scn号飞一会,不然可能会出错删除数据:delete from testFlashTable;commit;select*from testQuery;result:无;开启行移动模式:alter table testFlashTable enable row movement;使用flashBack:[这种方法用的比较多,不小心删除了,马上就可以闪回][闪回到5分钟以前]flashback table testFlashTable to TIMESTAMP systimestamp -interval'5'minute;或者: [闪回到时间点]flashback table t to timestamp to_timestamp('2011-01-26 11:35:40','yyyy-mm-dd hh24:mi:ss');③:关于Flashback Database:1.闪回DB,可将数据库闪回到某个时间点 [需要事先配置,让oracle处于Flashback 状态]在真实环境中使用Flashback Database的场景是较少的,更多的是使用rman技术来做恢复还原需要单独开启后台进程[Recover Writer][RVWR],会额外增大oracle的开销这里就不对其做描述了.项目例子脚本,依次执行--后的脚本:--按创建时间逆序查询select * from web_log t order by create_date desc;--删除符合条件的数据--delete from web_log where create_date>to_date('2012-11-5 01:00:00','yyyy-mm-dd hh:mi:ss')--同上--delete from web_log where url='tj_fx';--闪回查询时间点前数据--select * from web_log as of timestamp to_timestamp('2012-11-03 13:25:55','yyyy-mm-dd hh24:mi:ss');--开启行移动模式--alter table web_log enable row movement--闪回恢复操作时间段前的数据--flashback table web_log to TIMESTAMP systimestamp - interval '30' minute。
OracleFlashback详解
OracleFlashback详解 Oracle flashback 是⼀种⽅便快捷的数据库恢复技术,它不使⽤备份⽂件,通过闪回⽇志可以使数据库恢复到过去的某个状态,当⽤户发⽣逻辑错误时(误删表数据、表、表空间等)需要快速恢复数据库,可以使⽤Flashback 实现。
1 启⽤Flashback 数据库 Oracle 默认不启动flashback 数据库,使⽤flashback 技术必须先启动数据库到flashback 状态,且数据库必须处于archive 模式下,并启⽤闪回恢复区,因为闪回⽇志⽂件必须存放在闪回恢复区中。
1) 检查数据库的归档状态SQL> archive log list;Database log mode Archive ModeAutomatic archival EnabledArchive destination USE_DB_RECOVERY_FILE_DESTOldest online log sequence 4Next log sequence to archive 6Current log sequence 6SQL>如果数据库没有启动到归档模式,需要⼿动启动到模式下。
SQL> shutdown immediateSQL> startup mountSQL> alter database archivelog2) 确定闪回恢复区的⽬录SQL> show parameter DB_RECOVERY_FILE_DEST;NAME TYPE VALUE------------------------------------ ----------- ------------------------------db_recovery_file_dest string /usr/oracle/app/flash_recovery_areadb_recovery_file_dest_size big integer 3882M3) 查看并设置db_flashback_retention_target参数该参数是⼀个以分为单位的数字,默认为1440分钟,表⽰从当前开始计算最⼤可以把数据库闪回到过去的时间。
oracle flash back原理
oracle flash back原理Oracle Flashback是一种数据库恢复和查询技术,它可以基于时间或者特定条件,将数据库恢复到过去的某个状态。
本文将详细介绍Oracle Flashback的原理和实现方式。
现代数据库面临着日益增长的数据量和日志的快速变化。
数据库管理员需要能够在数据损坏或删除时快速恢复数据库,并且能够进行详细的查询和分析操作。
Oracle Flashback技术提供了一种可靠且高效的解决方案,使管理员能够快速恢复数据库,追溯数据变更历史和查询特定时刻的数据状态。
【1. Oracle Flashback的基本原理】Oracle Flashback的原理是通过使用Undo数据和Redo数据来实现数据的恢复和查询。
Undo数据是事务发生前的数据副本,也称为回滚段。
当一个事务发生时,Oracle数据库将当前的数据状态复制一份,称为Undo数据。
在事务执行过程中,所有的修改操作都是在Undo数据上进行的,并且还会保存被修改的数据的一个副本。
这样,当需要恢复到过去的某个时刻时,可通过Undo数据将数据库还原到该时刻的状态。
Redo数据是在数据库中发生修改操作时,记录这些操作的数据。
当数据库发生故障或者需要进行恢复时,通过Redo数据可以将数据库恢复到最近的一次备份或者故障前的状态。
【2. Oracle Flashback的实现方式】Oracle提供了多种方式来实现Flashback技术,包括Flashback Query、Flashback Transaction、Flashback Table、Flashback Database等。
下面分别介绍这些实现方式的原理和使用方法。
(1) Flashback QueryFlashback Query是一种基于时间点查询的技术,可以在一个事务中查询到过去某个时间点的数据库状态。
它通过读取Undo数据和Redo 数据,将数据库恢复到指定时间点的状态,然后执行查询操作。
备份恢复之Flashback
总结oracle flashback 特性王力20090401Oracle 9i只能够使用flashback query。
10G依然可以使用闪回查询,与9i没有变化。
但flashback功能大幅强化,新增很多特性;如闪回表,闪回数据库等等。
11g又增加了flashback archive ,可以提供不依靠undo的闪回功能。
通过实验完成闪回功能测试,仅供参考。
10g默认启用除了闪回数据库之外的所有闪回功能,如果想打开Flashback database,要使用闪回区。
Flashback database使用flashbacklog & onlinelog/archivelog 实现数据库闪回,flashbackarchive通过永久tablespace实现闪回。
其他都是通过undo段实现闪回。
1ONE - Flashback query1.1 基于scn的查询SQL> select dbms_flashback.get_system_change_number from dual;GET_SYSTEM_CHANGE_NUMBER------------------------1032013SQL> select sal from emp where ename='SCOTT';SAL----------3000SQL> UPDATE EMP SET SAL=5000 WHERE ENAME='SCOTT';已更新1 行。
SQL> COMMIT;提交完成。
SQL> select sal from emp as of scn 1032013 where ename='SCOTT';SAL----------30001.2 基于时间的查询SQL> select sal from scott.emp as of timestamp2 to_timestamp('20090330 09:02:00','yyyymmdd hh24:mi:ss')3 where ename='SCOTT';SAL----------30001.3 可以创建闪回表SQL> create table f_emp as select * from emp as of scn 1032013;表已创建。
oracle flashback命令手册
FlashbackFlashback query(undo)select * from table_name as of timestampto_timestamp('2008-03-03 12:00:00','yyyy-mm-dd hh24:mi:ss');select * from table_name as of scn 123456;Flashback table(undo,恢复表到某时间点,阻塞写操作)--必须开启行移动alter table table_name enable row movement;flashback table table_name to timestamp(JUL-07-2008,02:33:00);flashback table table_name to scn 123456;flashback table table_name to timestamp '2008-03-03 12:05:00' enable triggers;--只恢复trigger或index状态,不恢复更改Flashback drop(recyclebin)--管理recyclebinshow recyclebin;select * from user_recyclebin;select * from dba_recyclebin;purge recyclebin;--闪回drop表flashback table table_name to before drop [rename to new_name];--recyclebin中有同名,闪回最近删除的;闪回后有同名表,需renameFlashback database(flashback log,redo log,archive log)--开启flashback databaseshutdown immediatestartup mountalter database flashback on --必须先开启归档--闪回数据库(mount状态,read only方式检查,resetlogs方式打开)flashback database to time to_date(xxx);flashback database to time to_timestamp(xxx);flashback database to scn xxx;flashback database to sequence xxx thread 1;flashback database to timestamp(sysdate-1/24);--管理闪回区db_recovery_file_dest --闪回区路径db_recovery_file_dest_size --闪回区大小db_flashback_retention_target --闪回数据保存时间select * from v$flash_recovery_area_usage; --闪回区使用率select * from v$flashback_database_log; --闪回区情况,如能恢复到的最早的时间点Flashback version query(undo)--查询表的多个版本,记录行的改变select versions_starttime,versions_endtime,versions_startscn,versions_endscn,versions_xid,versions_operation,a,bfrom test versions between timestamp minvalue and maxvalueorder by versions_starttime;Flashback transaction query(undo)--查看当前事务号select xid from v$transaction;--查看undo_sqlselect undo_sql from flashback_transaction_querywhere xid =hextoraw('xxxxxxx'); --不使用hextoraw很难利用系统的索引。
flashback的用法 -回复
flashback的用法-回复Flashback的用法中括号内的内容为主题,写一篇1500-2000字文章,一步一步回答引言:Flashback是一种常见的文学和电影技巧,也是人类思维活动中常见的现象。
它可以帮助读者或观众更好地理解故事的发展和角色的背景,同时也能给作品增添层次感和情感深度。
本文将详细探讨flashback的用法,包括定义、常见的几种形式以及它在文学和电影创作中的具体运用。
一、定义Flashback,中文翻译为“倒叙”或“回顾”,指的是故事中插入过去事件或回忆的手法。
通过flashback,作者或导演能够将故事的发展时间轴前后错置,从而给观众一种“穿越时空”的感觉。
这样的手法在文学和电影中被广泛使用,以便更好地解释角色的行为动机、展现复杂的情感状态,或者揭示故事的重要细节。
二、形式Flashback可以有几种形式,下面是几种常见的:1. 内部回顾:角色回忆起过去的事情,这种形式最常见。
比如,在一部小说中,主人公在独自思考时突然回忆起过去和父母在一起的美好时光。
2. 外部回顾:这种形式中,在故事发展过程中出现的某个事件或字符会触发角色的回忆。
比如,在一部电影中,主人公看到了一个陌生人后,闪回到一段旧时光,揭示了他与这个陌生人有过的某种联系。
3. 梦境回顾:故事中的角色在梦境中回忆起过去的事件,或者梦中的场景本身就是过去发生的事情。
这种形式可以给故事增添神秘和超现实的氛围。
比如,在一本小说中,主角在梦中重新经历了童年时的一次异国旅行经历。
三、文学创作中的运用Flashback在文学创作中有着广泛的应用。
它可以用来突出角色的变革和发展,揭示隐藏的秘密或个人经历,增加悬念和戏剧性,以及丰富作品的主题。
首先,Flashback可以帮助读者更好地理解角色的动机和过去经历。
通过回顾过去的事件,读者能够更加深入地了解角色的情感、性格和态度。
这样一来,角色的行为动机和决策就能够更加合理和身临其境。
oracle10g闪回技术讲解
语法: select id,name,VERSIONS_STARTTIME, VERSIONS_ENDTIME,VERSIONS_XID,VERSIONS_ OPERATION from xxx versions between scn/timestamp start and end
伪列
VERSIONS_START SCN 该条记录操作时的SCN或时间,如果为空,表示该行记录是在查询范 VERSIONS_START 围外创建的 TIME VERSIONS_ENDS CN VERSIONS_ENDTI ME VERSIONS_XID 该条记录失效时的SCN或时间,如果为空,说明记录当前时间在当前 表内不存在,或者已经被删除了,可以配合着 VERSIONS_OPERATION列来看,如果VERSIONS_OPERATION列 值为D,说明该列已被删除,如果该列为空,则说明记录在这段时间无 操作 该操作的事务ID
flashback table
粒度比flashback query粒度大 两种方式 从recyclebin中恢复 语法: flashback table xxx to before drop [rename to xxx1] 从undo表空间恢复 语法: flashback table xxx to scn xxx enable
语法: flashback database to scn xxx
Flashback database的体系结构 的体系结构
16Mb
SGA
Not every change! Buffer Cache
8Mb
Flashback Buffer
Redo Log Buffer
Every change Log block before images periodically
在Oracle中使用Flashback
在Oracle中使用FlashbackFlashback是Oracle数据库中的一项功能,它允许用户在不恢复数据库的情况下,将数据库对象和数据回滚到之前的状态。
Flashback技术提供了一种简单而快速的方式来修复因错误操作而导致的数据丢失或破坏。
Oracle提供了多种Flashback功能,包括Flashback Query、Flashback Version Query、Flashback Table和Flashback Transaction Query等。
首先,Flashback Query是一种查询数据历史状态的功能。
通过使用AS OF子句,可以查询特定时间点或系统变化号(SCN)之前的数据库状态。
这对于检查之前的数据状态以及确定问题源头非常有用。
例如,以下查询将返回在特定时间点之前的员工表数据:```SELECT * FROM employeesASOFTIMESTAMPTO_TIMESTAMP('2024-01-0109:00:00','YYYY-MM-DDHH24:MI:SS');```其次,Flashback Version Query是一种查询特定数据行在历史上的不同版本的功能。
通过使用VERSIONS BETWEEN子句,可以查询一些时间范围内数据行的所有版本。
这对于恢复误删除或误修改的数据非常有用。
例如,以下查询将返回在时间段内特定员工ID的所有数据行版本:```SELECTVERSIONSSTARTSCN,VERSIONSSTARTTIME,VERSIONSENDSCN,VERS IONSENDTIME,*FROM employees VERSIONS BETWEEN TIMESTAMPTO_TIMESTAMP('2024-01-0109:00:00','YYYY-MM-DDHH24:MI:SS')ANDTO_TIMESTAMP('2024-01-3109:00:00','YYYY-MM-DDHH24:MI:SS')WHERE employee_id = 100;```第三,Flashback Table是一种将整个表恢复到之前状态的功能。
在Oracle中使用Flashback
在Oracl e中使用Flashback在Oracle 9i/10g中使用Flashback一、Flashback的概念在Oracle 9i数据库中,提出了数据闪回〔Flashback〕的概念。
使用Flashback,可以在不对数据库进行不完全恢复的情况下,对某一个指定的表进行恢复。
所谓Flashback就是使数据库中的实体显示或回到过去的某一时间点,这样可以实现对历史数据的恢复。
二、在Oracle 9i中使用Flashback? ? ?在Oracle 9i中使用包DBMS_FLASHBACK来提供闪回功能。
如果需要用到闪回查询,必须在init.ora或者是spfile.ora中设置以下参数undo_management = auto 〔默认〕此外,参数undo_retention = n〔秒〕,它决定了能往前闪回的最大时间〔Undo 最多的保存时间〕,越大的值,就会需要更多的Undo空间的支持。
SQL> show parameter autoSQL> alter system set undo_retention=1200; 〔Undo信息将保持1200秒=20分钟〕注意:Oracle 9i是每五分钟记录一次SCN的,并将SCN和对应时间的映射做个纪录。
如果原来插入的记录到做闪回的时间在5分钟之内,用基于时间的flashback可能并查询不到记录,因为如果是基于时间点的查询,也是转化为最近的一次SCN,然后从这个SCN开始进行恢复,因此,如果需要精确的查询,我们可以采用基于SCN的flashback,它将能精确的闪回到需要恢复的时间。
Oracle 9i的Flashback有如下限制。
? 采用时间点的恢复,不能精确到最近5分钟,如果需要更精确的查询,需要采用SCN。
? 不能flashback 5天以前的数据,这个并不是undo_retention所能决定的。
? 闪回查询无法恢复到表结构改变之前,因为闪回查询使用的当前的数据字典。
Oracle Flashback 技术 总结
Oracle Flashback 技术总结Flashback 技术是以Undo segment中的内容为基础的,因此受限于UNDO_RETENTON参数。
要使用flashback 的特性,必须启用自动撤销管理表空间。
在Oracle 10g中,Flash back家族分为以下成员:Flashback Database,Flashback Drop,Flashback Query(分Flashback Query,Flashback V ersion Query,Flashback Transaction Query 三种) 和Flashback Table。
一.Flashback DatabaseFlashback Database 功能非常类似与RMAN的不完全恢复,它可以把整个数据库回退到过去的某个时点的状态,这个功能依赖于Flashback log 日志。
比RMAN更快速和高效。
因此Flashback Database 可以看作是不完全恢复的替代技术。
但它也有某些限制:1. Flashback Database 不能解决Media Failure,这种错误RMAN恢复仍是唯一选择2. 如果删除了数据文件或者利用Shrink技术缩小数据文件大小,这时不能用Flashback Database技术回退到改变之前的状态,这时候就必须先利用RMAN把删除之前或者缩小之前的文件备份restore 出来,然后利用Flashback Database 执行剩下的Flashback Datbase。
3. 如果控制文件是从备份中恢复出来的,或者是重建的控制文件,也不能使用Flashback Database。
4. 使用Flashback Database锁能恢复到的最早的SCN,取决与Flashback Log中记录的最早SCN。
Flashback Database 架构Flashback Database 整个架构包括一个进程Recover Writer(RVWR)后台进程,Flashback Database Log日志和Flash Recovery Area。
flashbacklog的管理方式
flashbacklog的管理方式FLASHBACKLOG的管理方式oracle对flashback log采用了自动管理的方式,并且不允许手工去删除flashback log。
当flashback log写满时,会自动的覆盖掉最早的一个flashback日志。
并且值得注意的是,如果手工删除了flashback log,数据库将自动把flashback设置成no!我们先把数据库的flashback打开:SQL> startup mount;ORACLE instance started.Total System Global Area 167772160 bytesFixed Size 1247900 bytesVariable Size 67110244 bytesDatabase Buffers 96468992 bytesRedo Buffers 2945024 bytesDatabase mounted.SQL> alter database flashback on;Database altered.Elapsed: 00:00:04.00SQL>SQL>SQL> alter database open;Database altered.Elapsed: 00:00:29.82SQL>SQL>SQL>SQL>SQL>SQL>SQL> select flashback_on from v$database;FLASHBACK_ON------------------YESElapsed: 00:00:22.05SQL>SQL>我们来看看当前flashback日志有哪些:SQL>SQL> exitDisconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsD:\oracle\product\10.2.0\flash_recovery_area\ORALOCAL\FL ASHBACK>D:\oracle\product\10.2.0\flash_recovery_area\ORALOCAL\FL ASHBACK>ls -ltotal 16016-rwxrwxrwa 1 Administrators SYSTEM 8200192 Jan 21 15:54 O1_MF_4QFKO379_.FLB我们再看看flashback的相关参数设置:目录大小设置了50M,当前1个flashback日志空间占用率为15.63%D:\oracle\product\10.2.0\flash_recovery_area\ORALOCAL\FL ASHBACK>sqlplus "/ as sysdba"SQL*Plus: Release 10.2.0.1.0 - Production on 星期三1月21 15:49:45 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> show parameter recoverNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_recovery_file_dest string D:\oracle\product\10.2.0\flash _recovery_areadb_recovery_file_dest_size big integer 50Mrecovery_parallelism integer 0SQL>SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES------------ ------------------ ------------------------- ---------------CONTROLFILE 0 0 0 ONLINELOG 0 0 0 ARCHIVELOG 0 0 0 BACKUPPIECE 0 0 0 IMAGECOPY 0 0 0 FLASHBACKLOG 15.63 0 16 rows selected.Elapsed: 00:00:04.01SQL>SQL> select * from v$flashback_database_log;OLDEST_FLASHBACK_SCN OLDEST_FLASHBA RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE-------------------- -------------- ---------------- -------------- ------------------------1402232 21-1月-09 1440 8192000 70410240Elapsed: 00:00:01.54SQL>SQL>SQL>现在,我们执行一些dml,来将block的pre image写到flashback log中。
oracle flashback用法
oracle flashback用法
Oracle Flashback是一种Oracle数据库提供的功能,用于恢复
或查询数据库的历史数据。
它通过使用数据库中的日志和其他信息来回溯数据库的状态,而不是通过传统的备份和恢复方法。
以下是一些Oracle Flashback的常见用法:
1. Flashback Table:通过Flashback Table命令可以将表还原到
之前的状态。
这个命令可以撤销对表格的一系列更新、删除或插入操作,从而恢复表格的先前状态。
2. Flashback Query:Flashback Query是一种基于时间的查询技术,可以查询数据库在过去某个时间点的数据快照。
通过使用AS OF子句可以指定查询的时间点。
3. Flashback Transaction:Flashback Transaction用于回滚整个
事务,而不仅仅是表格的某个状态。
它会恢复事务在过去的某个时间点的所有更改。
4. Flashback Database:Flashback Database是一种恢复整个数
据库到过去某个时间点的能力。
它可以回滚整个数据库到之前的状态,包括数据文件和控制文件。
需要注意的是,为了使用Oracle Flashback功能,数据库需要
开启Flashback功能,并在数据库中设置合适的Flashback区域。
此外,使用Flashback功能可能对数据库的性能产生一定
影响,因此在使用时需要权衡利弊。
闪回的功能
Oracle 10g的闪回查询概述与Oracle 9i相比Oracle 10g的Flashback有了非常大的改进,从普通的Flashback Query 发展到了多种形式,主要表现在如下几方面新特性:1、Flashback DatabaseOracle Flashback Database特性允许通过SQL语句Flashback Database语句,让数据库前滚到当前的前一个时间点或者SCN,而不需要做时间点的恢复。
闪回数据库可以迅速将数据库回到误操作或人为错误的前一个时间点,如Word中的"撤消"操作,可以不利用备份就快速的实现基于时间点的恢复。
Oracle通过创建新的Flashback Logs(闪回日志),记录数据库的闪回操作。
如果希望能闪回数据库,需要设置如下参数:DB_RECOVER_FILE_DEST日志的存放位置,DB_RECOVER_FILE_DEST_SIZE恢复区的大小。
在创建数据库的时候,Oracle将自动创建恢复区,但默认是关闭的,需要执行alter database flashback on命令。
例:执行Flashback Database命令格式。
SQL>flashback database to time to_timestamp(xxx);SQL>flashback database to scn xxx2、Flashback TableOracle Flashback Table特性允许利用Flashback Table语句,确保闪回到表的前一个时间点。
与Oracle 9i中的Flashback Query相似,利用回滚段信息来恢复一个或一些表到以前的一个时间点(一个快照)。
要注意的是,Flashback Table不等于Flashback Query,Flashback Query 仅仅是查询以前的一个快照点而已,并不改变当前表的状态,而Flashback Table将改变当前表及附属对象一起回到以前的时间点。
backlog的概念 -回复
backlog的概念-回复什么是backlog?在软件开发和项目管理中,backlog(待办清单)是一个存放任务、工作项和需求的列表。
它作为一个动态的文档,帮助团队跟踪和组织工作,确保项目按时交付,并提供一个清晰的工作流程。
为什么需要backlog?backlog的目标是确保团队始终知道接下来要做什么,并可以合理地安排任务的优先级。
它还提供了一个可视化的方法来跟踪和管理项目进度,同时也为团队成员提供了一个共享任务状态和责任的平台。
以下是backlog的几个关键好处:1. 避免遗漏:backlog将所有任务都集中在一个地方,确保团队不会遗漏任何重要的工作项。
2. 优先级管理:backlog帮助团队确定任务的优先级,确保最重要的工作得到优先处理。
3. 透明度和可视化:backlog提供了一个清晰的视图,让团队成员和其他利益相关者能够追踪项目的进展和问题。
4. 可追踪性:通过将每个任务记录在backlog中,团队可以随时追溯每个任务的状态、分配和进展情况。
5. 有序工作:backlog使团队能够按照逻辑和优先级的顺序进行工作,避免任务的混乱和延误。
6. 灵活性和可调整性:backlog是一个动态的工作列表,可以根据项目需求随时进行调整和优化。
如何使用backlog?使用backlog的第一步是确定清晰的任务和需求。
这些任务可以是单个的用户故事、功能或项目里程碑等。
然后,将它们添加到backlog中并为每个任务定义相应的属性,如优先级、估计的时间和负责人等。
在backlog中,任务的排序和优先级设置是至关重要的。
根据需求和项目的重要性,团队可以将任务划分为不同的优先级,例如高、中和低。
这有助于团队按照最重要的任务进行工作,确保项目能够按时交付。
任务的分配和进展跟踪也是backlog的重要部分。
团队成员可以在backlog中记录每个任务的状态更新,包括开始、进行中和完成。
这样的跟踪有助于团队了解任务的进展情况,并确保任务按时完成。
Oracle的闪回恢复区和归档日志多路径设置
Oracle的闪回恢复区和归档⽇志多路径设置Oracle9i开始提供闪回查询,以便能在需要的时候查到过去某个时刻的⼀致性数据,这是通过Undo实现的。
这个功能有很⼤的限制,就是相关事务的undo不能被覆盖,否则就⽆⼒回天了。
oracle10g⼤⼤的增强了闪回查询的功能,并且提供了将整个数据库回退到过去某个时刻的能⼒,这是通过引⼊⼀种新的flashback log实现的。
flashback log有点类似redo log,只不过redo log将数据库往前滚,flashback log则将数据库往后滚。
为了保存管理和备份恢复相关的⽂件,oracle10g提供了⼀个叫做闪回恢复区(Flashback recovery area)的新特性,可以将所有恢复相关的⽂件,⽐如flashback log,archive log,backup set等,放到这个区域集中管理。
1.设置闪回恢复区闪回恢复区主要通过3个初始化参数来设置和管理db_recovery_file_dest :指定闪回恢复区的位置db_recovery_file_dest_size :指定闪回恢复区的可⽤空间⼤⼩db_flashback_retention_target :指定数据库可以回退的时间,单位为分钟,默认1440分钟,也就是⼀天。
当然,实际上可回退的时间还决定于闪回恢复区的⼤⼩,因为⾥⾯保存了回退所需要的flash log。
所以这个参数要和db_recovery_file_dest_size配合修改。
2.启动flashback database设置了闪回恢复区后,可以启动闪回数据库功能。
⾸先,数据库必须已经处于归档模式1.关闭数据库SQL> shutdown immediate;2.启动数据库为mount模式SQL> startup mount3.显⽰和修改归档模式SQL> archive log listSQL> alter database archivelog;SQL> alter database open4.设置归档⽇志的格式SQL>alter system set log_archive_format='ARC%s%t%r.log' scope=spfile;5.设置归档⽇志的存放路径SQL>alter system set log_archive_dest='+data/arcl' scope=spfile;SQL>shutdown immediateSQL>startup6.强制切换归档⽇⾄SQL>alter system switch logfile;7.取消归档SQL>alter database noarchivelog;参数1.格式参数%s⽇志序列号%S⽇志序列号(带前导的0)%t重做线程编号%a活动的ID号%d数据库ID号%r RESELOGS的iD值SQL> archive log list;Database log mode Archive ModeAutomatic archival EnabledArchive destination USE_DB_RECOVERY_FILE_DESTOldest online log sequence 156Next log sequence to archive 158Current log sequence 158然后,启动数据库到mount状态SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startup mountORACLE instance started.Total System Global Area 285212672 bytesFixed Size 1218992 bytesVariable Size 75499088 bytesDatabase Buffers 205520896 bytesRedo Buffers 2973696 bytesDatabase mounted.SQL>alter database flashback on;数据库已更改。
Flashback用法汇总
Oracle的Flashback用法汇总by jdstkxx on 2012 年 4 月 22 日/*11g的flashbackup 分好几种,分别用途不一样。
A.flashback database 闪回数据库,简单理解就是把数据库闪回到某个以前的时间点,能恢复到的最早的SCN,取决与Flashback Log中记录的最早SCNB.flashback drop 回收数据库表,用于表误drop后恢复。
类似Windows的回收站。
C.flashback query 闪回表记录,用于数据表记录的恢复D.falshabck Table 闪回数据库表,后两个是重点,下面说明。
*/– A.flashback database相关/*1.默认情况数据库的flashback database是关闭,可以在mount exclusive状态下打开。
在设置了闪回恢复区后,可以启动闪回数据库功能。
*/–1.检查是否启动了flash recovery areashow parameter db_recovery_file–2.检查是否启用了归档archive log list;–3.flashback database 默认是关闭的,查看方法select flashback_on from v$database;–4.查询当前的scnSELECT CURRENT_SCN FROM V$DATABASE;–5.查询当前的时间select to_char(sysdate,’yy-mm-dd hh24:mi:ss’) time from dual;–6.查看SCN 和 timestamp 之间的对应关系:select scn,to_char(time_dp,’yyyy-mm-dd hh24:mi:ss’)from sys.smon_scn_time;–7.恢复到时间点,或者恢复到SCNflashback database to timestamp to_timestamp(’09-10-14 14:37:05′,’yy-mm-dd hh24:mi:ss’);flashback database to scn 947921;– B. flashback table 恢复误drop表drop table sphsy.login_table;select * from flash_table;–purge table sphsy.login_table;清空回收站flashback table sphsy.login_table to before drop;select * from sphsy.login_table;– C. flashback query 实现行级恢复/*flashback查询用于获取先前时间点的表行级数据。
nand flash 坏块管理方法
nand flash 坏块管理方法NAND flash 坏块管理方法是在 NAND flash 存储器中识别和处理坏块的方法。
由于使用NAND flash 存储器时坏块不可避免,正确的坏块管理方法对于保证 NAND flash 存储器的可靠性和可用性非常重要。
下面是一些常见的 NAND flash 坏块管理方法:1. 动态坏块管理(Dynamic bad block management):在NAND flash 存储器中,使用一个特殊的块来记录所有坏块的位置。
这个特殊的块称为坏块表(Bad Block Table,BBT)。
当写入数据时,控制器会检查目标块是否在坏块表中,并在表中记录任何新的坏块。
2. 重映射坏块管理(Remapping bad block management):这种方法中,控制器会将坏块从逻辑地址空间中移除,并将其映射到一个备用块。
所以,当应用程序访问一个逻辑块时,控制器会自动将其映射到可用的物理块。
3. 静态坏块管理(Static bad block management):在静态坏块管理中,存储器厂商在生产时会将 NAND flash 存储器中已知的坏块标记出来,并在芯片上的特殊区域存储这些坏块的位置信息。
这些坏块在用户使用时会被直接屏蔽,不可使用。
4. 坏块扫描和标记(Bad block scanning and marking):这种方法中,用户在首次使用 NAND flash 存储器时会进行一次坏块扫描,以识别和标记坏块。
之后,控制器会在每次使用时检查这些被标记的坏块,并在读写过程中避免使用它们。
需要注意的是,不同的 NAND flash 坏块管理方法在处理坏块时有所区别,并且不同的 NAND flash 设备可能支持不同的管理方法。
选择适合的坏块管理方法可以提高 NAND flash 存储器的可靠性和寿命。
Flashback-闪回技术讲解
使用 Oracle 闪回技术版权所有 © 2006,Oracle。
保留所有权利。
课程目标学完本课后,应能完成以下工作: • 使用闪回删除功能恢复删除的表 • 使用闪回查询功能查看截止到任一时间点的数据库内容 • 使用闪回版本查询功能查看行版本随时间的变化 • 使用闪回事务处理查询功能查看行的事务处理历史记录 • 使用闪回表功能将表内容还原到过去的某个特定时间点 • 配置闪回数据库 • 将数据库闪回到某个时间点版权所有 © 2006,Oracle。
保留所有权利。
Oracle Database 10g:数据库备份和恢复 5-2使用 Oracle 闪回技术对象级别 方案示例数据库 截断表;发生了意外多表 更改事件 删除表 使用了错误的 WHERE 子句 进行了更新 将当前数据与过去数据进 行比较 比较行版本 Tx 查看数据的一些历史状态闪回技术 使用数据库 闪回日志影响数据TRUE TRUE TRUE FALSE FALSE FALSE表删除 表 查询 版本 事务处理回收站 还原数据 还原数据 还原数据 还原数据版权所有 © 2006,Oracle。
保留所有权利。
使用 Oracle 闪回技术 当 Oracle 数据库发生逻辑损坏,而又需要简单快捷地恢复数据时,就可以使用闪回技术。
通常很难标识出受错误事务处理影响的对象和行。
使用闪回技术,可诊断数据库中产生的 错误并修复损坏的数据。
您可以查看导致特定行修改的事务处理,查看某一时间段内给定 行的所有版本集,或者只查看过去特定时间显示的数据。
幻灯片表中显示了闪回技术的典型用法。
闪回数据库使用闪回日志执行闪回。
闪回删除使用回收站。
其它所有技术都使用还原数据。
并不是所有闪回功能都会修改数据库。
有些功能只是一些用来查询数据其它版本的方法。
闪回查询结果可帮助您: • 确定执行哪种类型的数据库修改闪回操作来更正问题 • 将这些查询结果集用于 INSERT、UPDATE 或 DELETE 语句中以便于修复错误数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FLASHBACKLOG的管理方式oracle对flashback log采用了自动管理的方式,并且不允许手工去删除flashback log。
当flashback log写满时,会自动的覆盖掉最早的一个flashback日志。
并且值得注意的是,如果手工删除了flashback log,数据库将自动把flashback设置成no!我们先把数据库的flashback打开:SQL> startup mount;ORACLE instance started.Total System Global Area 167772160 bytesFixed Size 1247900 bytesVariable Size 67110244 bytesDatabase Buffers 96468992 bytesRedo Buffers 2945024 bytesDatabase mounted.SQL> alter database flashback on;Database altered.Elapsed: 00:00:04.00SQL>SQL>SQL> alter database open;Database altered.Elapsed: 00:00:29.82SQL>SQL>SQL>SQL>SQL>SQL>SQL> select flashback_on from v$database;FLASHBACK_ON------------------YESElapsed: 00:00:22.05SQL>SQL>我们来看看当前flashback日志有哪些:SQL>SQL> exitDisconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsD:\oracle\product\10.2.0\flash_recovery_area\ORALOCAL\FLASHBACK>D:\oracle\product\10.2.0\flash_recovery_area\ORALOCAL\FLASHBACK>ls -ltotal 16016-rwxrwxrwa 1 Administrators SYSTEM 8200192 Jan 21 15:54 O1_MF_4QFKO379_.FLB我们再看看flashback的相关参数设置:目录大小设置了50M,当前1个flashback日志空间占用率为15.63%D:\oracle\product\10.2.0\flash_recovery_area\ORALOCAL\FLASHBACK>sqlplus "/ as sysdba"SQL*Plus: Release 10.2.0.1.0 - Production on 星期三1月21 15:49:45 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> show parameter recoverNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_recovery_file_dest string D:\oracle\product\10.2.0\flash_recovery_areadb_recovery_file_dest_size big integer 50Mrecovery_parallelism integer 0SQL>SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES------------ ------------------ ------------------------- ---------------CONTROLFILE 0 0 0 ONLINELOG 0 0 0 ARCHIVELOG 0 0 0 BACKUPPIECE 0 0 0 IMAGECOPY 0 0 0 FLASHBACKLOG 15.63 0 16 rows selected.Elapsed: 00:00:04.01SQL>SQL> select * from v$flashback_database_log;OLDEST_FLASHBACK_SCN OLDEST_FLASHBA RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE-------------------- -------------- ---------------- -------------- ------------------------1402232 21-1月-09 1440 8192000 70410240Elapsed: 00:00:01.54SQL>SQL>SQL>SQL>现在,我们执行一些dml,来将block的pre image写到flashback log中。
SQL>SQL> update test.t1 set a=9898998;261344 rows updated.Elapsed: 00:19:31.50SQL>SQL>SQL> commit;Commit complete.Elapsed: 00:00:03.03查看目录的使用率情况:SQL>SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES------------ ------------------ ------------------------- ---------------CONTROLFILE 0 0 0 ONLINELOG 0 0 0 ARCHIVELOG 0 0 0 BACKUPPIECE 0 0 0 IMAGECOPY 0 0 0FLASHBACKLOG 99.38 83.75 126 rows selected.Elapsed: 00:00:04.20SQL>SQL>SQL>SQL>SQL>SQL>SQL>SQL>查看目录下的文件,删除这些文件:SQL> hostMicrosoft Windows XP [版本5.1.2600](C) 版权所有1985-2001 Microsoft Corp.D:\oracle\product\10.2.0\flash_recovery_area\ORALOCAL\FLASHBACK>lsO1_MF_4QFKO379_.FLB O1_MF_4QFO2K5L_.FLB O1_MF_4QFO39PO_.FLB O1_MF_4QFO3P9Y_.FLB O1_MF_4QFO45HB_.FLB O1_MF_4QFO58MP_.FLBO1_MF_4QFO2DT2_.FLB O1_MF_4QFO2O7K_.FLB O1_MF_4QFO3JFD_.FLB O1_MF_4QFO3VCX_.FLB O1_MF_4QFO4ZVK_.FLB O1_MF_4QFO5MR3_.FLBD:\oracle\product\10.2.0\flash_recovery_area\ORALOCAL\FLASHBACK>rm *.FLBrm: cannot unlink entry "O1_MF_4QFKO379_.FLB": 另一个程序正在使用此文件,进程无法访问。
由于其中一个文件正在被使用,我们只能删除除这个文件外的其他文件:D:\oracle\product\10.2.0\flash_recovery_area\ORALOCAL\FLASHBACK>lsO1_MF_4QFKO379_.FLBD:\oracle\product\10.2.0\flash_recovery_area\ORALOCAL\FLASHBACK>D:\oracle\product\10.2.0\flash_recovery_area\ORALOCAL\FLASHBACK>D:\oracle\product\10.2.0\flash_recovery_area\ORALOCAL\FLASHBACK>exit我们来看看删除flashback日志后,flashback的参数变化:--刚刚开始时,还是yes:SQL>SQL> select flashback_on from v$database;FLASHBACK_ON------------------YESElapsed: 00:00:00.18--做一些dmlSQL> update test.t1 set a=12112;261344 rows updated.Elapsed: 00:02:38.09SQL> commit;Commit complete.Elapsed: 00:00:00.04--查看目录下flashback log情况,发现就只有1个,且时间是最新的:SQL> host ls -ltotal 7792-rwxrwxrwa 1 Administrators SYSTEM 3989504 Jan 21 17:30 O1_MF_4QFKO379_.FLB--虽然只有1个文件,但是使用率还是在91.34%:SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES------------ ------------------ ------------------------- ---------------CONTROLFILE 0 0 0 ONLINELOG 0 0 0 ARCHIVELOG 0 0 0 BACKUPPIECE 0 0 0 IMAGECOPY 0 0 0 FLASHBACKLOG 91.34 0 126 rows selected.Elapsed: 00:00:00.15SQL>--参数自动被改成NO了!!!SQL> select flashback_on from v$database;FLASHBACK_ON------------------NOElapsed: 00:00:00.29SQL>。