政务网站开发方案,wordpress如何选择对应模板,优质的中小型网站建设,软件开发学习Oracle的闪回oracle中为什么会有闪回呢#xff01;它的作用是什么呢#xff1f;我们来学习一下闪回吧#xff01;闪回和回滚异曲同工之妙。一闪回的介绍(1)在Oracle的操作工程中#xff0c;会不可避免地出现操作失误或者用户失误#xff0c;例如不小心删除了一个表等…Oracle的闪回oracle中为什么会有闪回呢它的作用是什么呢我们来学习一下闪回吧闪回和回滚异曲同工之妙。一闪回的介绍(1)在Oracle的操作工程中会不可避免地出现操作失误或者用户失误例如不小心删除了一个表等这些失误和错误可能会造成重要数据的丢失最终导致Oracle数据库停止允许。(2)在传统意义上当发生数据丢失、数据错误问题时解决的主要办法是数据的导入导出、备份恢复技术这些方法都需要在发生错误前有一个正确的备份才能进行恢复。(3)为了减少这方面的损失Oracle提供了闪回技术。有了闪回技术就可以实现数据的快速恢复而且不需要数据备份。有了闪回那他的优点是什么呢(1)恢复中闪回技术是革命性的进步(2)传统的恢复技术缓慢:它是整个数据库或者一个文件恢复不只恢复损坏的数据在数据库日志中每个修改都必须被检查(3)闪回速度快:通过行和事务把改变编入索引仅仅改变了的数据会被恢复(4)闪回命令很容易:没有复杂棘手的多步程序闪回的类型闪回表(flashback table)、闪回删除(flashback drop)、闪回版本查询(flashback version query)、闪回事务查询(flashback transaction query)闪回的益处(1)恢复中闪回技术是革命性的进步(2)传统的恢复技术缓慢:•它是整个数据库或者一个文件恢复不只恢复损坏的数据•在数据库日志中每个修改都必须被检查(3)闪回速度快:•通过行和事务把改变编入索引•仅仅改变了的数据会被恢复(4)闪回命令很容易:•没有复杂棘手的多步程序二闪回表的使用1闪回表闪回表实际上是将表中的数据快速恢复到过去的一个是焦点或者系统改变号SCN上。实现表的闪回需要使用到与撤销表空间相关的undo信息通过show parameter undo命令可以了解这些信息。用户对表数据的修改操作都记录在撤销表空间中这为表的闪回提供了数据恢复的基础。例如某个修改操作在提交后被记录在撤销表空间中保留时间为900秒用户可以在这900秒的时间内对表进行闪回操作从而将表中的数据恢复到修改之前的状态。执行表的闪回需要有flashback any table的权限2举例(1)查询闪回信息SQL show parameter undo;NAMETYPEVALUE------------------------------------ ----------- ------------------------------undo_managementstringAUTOundo_retentioninteger900undo_tablespacestringUNDOTBS1(2)修改闪回信息在修改时首先要切换用户为conn system/orcl,然后再修改为SQL alter system set undo_retention1200 scopeboth;System altered(3)在修改密码的时候要先打开比表的行移动开关打开行移动开关SQL alter table flashbacktable enable row movement;Table altered(4)闪回的应用通过temestamp闪回首先要先创建表来存储数据SQL create table flashbacktable(id number,ename varchar2(20));Table created然后向其中插入数据SQL insert into flashbacktable values(5,sdf);1 row insertedcommit;SQL select to_char(sysdate,yyyy-mm-dd hh24:mi:ss) from dual;TO_CHAR(SYSDATE,YYYY-MM-DDHH2------------------------------2012-03-23 15:24:53SQL flashback table flashbacktable to timestamp to_date(2012-03-23 15:24:53,yyyy-mm-dd hh24:mi:ss);Done在查询数据的时候刚才插入的数据没有了注意是在提交之后执行的闪回通过scn号闪回首先查询出当前日期的scn号SQL select timestamp_to_scn(sysdate) from dual;TIMESTAMP_TO_SCN(SYSDATE)-------------------------1335034然后向表中插入数据SQL insert into flashbacktable values(12,dfds);1 row insertedSQL insert into flashbacktable values(13,dfds);1 row insertedSQL select timestamp_to_scn(sysdate) from dual;TIMESTAMP_TO_SCN(SYSDATE)-------------------------1335053SQL update flashbacktable set enameaaaaaaaaaa where id12;1 row updatedSQL select timestamp_to_scn(sysdate) from dual;TIMESTAMP_TO_SCN(SYSDATE)-------------------------1335088因为有三个阶段的scn所以可以指定那个scn来闪回执行的语句为SQL flashback table flashbacktable to scn(1335053);Done三闪回删除闪回删除实际上从系统的回收站中将已删除的对象恢复到删除之前的状态。系统的回收站只对普通用户有作用1闪回表删除的介绍(1)回收站是所有被删除对象及其相依对象的逻辑存储容器例如当一个表被删除(drop)时该表及其相依对象并不会马上被数据库彻底删除而是被保存到回收站中。(2)回收站将用户执行的drop操作记录在一个系统表中也就是将被删除的对象写到一个数据字典中。如果确定不再需要该对象可以使用purge命令对回收站进行清空。(3)被删除的对象的名字可能是相同的例如用户创建了一个test表使用drop命令删除该表后又创建了一个test表这时如果再次删除该表就会导致向回收站中添加了个相同的表(4)为了确保添加到回收站中的对象的名称都是唯一的系统会对这些保存到回收站中的对象进行重命名2程序讲解通过show recyclebin命令可以查询oracle回收站的删除的信息如果要闪回则执行命令flashback table backtable to before drop;注如果两个命名相同不能够闪回可以起别名为flashback table backtable to before drop rename to a;四闪回版本查询闪回版本查询提供了一个审计行改变的查询功能通过它可以查找到所有已经提交了的行记录1首先来创建一个表create table version_table(id number,content varchar2(20));2向表中插入数据和更新数据insert into version_table values(1,Tom);insert into version_table values(2,Tom);向表中更新数据update version_table set enametom11 where id2;3通过闪回版本的查询获取该历史的记录select id,ename,versions_operation,versions_starttime,versions_endtime from version_table versionsbetween timestamp minvalue and maxvalue;4通过时间段来闪回select empno,ename,versions_operation,versions_starttime,versions_endtime from version_table versions between timestamp to_date(2012-03-22 14:42:19,yyyy-mm-dd hh24:mi:ss)and to_date(2012-03-22 14:43:28,yyyy-mm-dd hh24:mi:ss);五闪回事务查询1查询事务的信息desc flashback_transaction_query;2创建表create table transaction_table (id number,ename varchar(20));3向表中插入数据insert into transaction_table values(1,tom);insert into transaction_table values(2,tom);update transaction_table set enameTom123 where id1;4.先通过闪回版本查询获取事务相关信息SQL select id,ename,versions_operation,versions_xid from transaction_table versions between timestamp minvalue and maxvalue;ID ENAMEVERSIONS_OPERATION VERSIONS_XID---------- -------------------- ------------------ ----------------2 sdfdU04001400EE0100001 Tom123I020022002F0200002 tomI020022002F0200005.执行闪回事务查询select xid,operation,table_name,undo_sql from flashback_transaction_query where xid04001400EE010000;