闪回(Flashback)错误操作:,:(所有已经提交了的历史记录):------------------:1、delete删除表数据可以闪回,因为他是只删除数据,表没变;但是truncate删除表所有数据无法闪回,因为truncate原理是先删除原先整个表,在重新建立一个结构相同的表,该表是新创建的,无法回滚了。1、对用户进行闪回设置与授权SQL>--闪回的时间参数cmd下>sqlplussystem/admin已连接。SQL>showuserUSER为"SYS"SQL>showparametersundo;l闪回表,上。实现表的闪回,需要使用到与撤销表空间相关的undo信息,通过showparameterundo命令可以了解这些信息。ll用户对表数据的修改操作,都记录在撤销表空间中,这为表的闪回提供了数据恢复的基础。例如,某个修改操作在提交后被记录在撤销表空间中,保留时间为900秒,用户可以在这900秒的时间内对表进行闪回操作,从而将表中的数据恢复到修改之前的状态。NAMETYPEVALUEundo_managementstringAUTOundo_retentioninteger900undo_tablespacestringUNDOTBS1--将900秒改为20分钟SQL>altersystemsetundo_retention=1200scope=both;系统已更改。SQL>showparametersundo;NAMETYPEVALUEundo_managementstringAUTOundo_retentioninteger1200undo_tablespacestringUNDOTBS1SQL>/*SQL>scope的取值:sessionspfile(参数文件)bothSQL>*/SQL>--为scott授予闪回的权限SQL>grantflashbackanytabletoscott;授权成功。SQL>connscott/tiger已连接。SQL>showuserUSER为"SCOTT"SQL>hostcls2、,回滚,。本方法只针对delete删除表数据起作用。SQL>createtableflashback_table1(fidnumber,fnamevarchar2(10));表已创建。SQL>insertintoflashback_table1values(&fid,'&fname');//&表示输入字段输入fid的值:1输入fname的值:mit;提交完成。SQL>select*fromflashback_table1;FIDFNAME1Tom2Mary3Mike--记录当前的系统时间(SCN)SQL>selectsysdate时间,(sysdate)SCNfromdual;21-9月-114354761SQL>deletefromflashback_table1wherefid=2;已删除1行。mit;提交完成。SQL>select*fromflashback_table1;FIDF NAME--------------------1 Tom3 MikeSQL>--执行闪回表SQL>4354761;4354761*第1行出现错误:ORA-08189:因为未启用行移动功能,不能闪回表SQL>selectrowid,fid,fnamefromflashback_table1;ROWID FID FNAME------------------ ---------- ----------AAANh7AAEAAAAGnAAA1 TomAAANh7AAEAAAAGnAAC3 MikeSQL>--开启行移动功能SQL>altertableflashback_table1enablerowmovement;表已更改。SQL>4354761;闪回完成。SQL>selectrowid,fid,fnamefromflashback_table1;ROWID FID FNAME------------------ --------------------AAANh7AAEAAAAGnAAB1 TomAAANh7AAEAAAAGnAAD2 MaryAAANh7AAEAAAAGnAAE3 Mike闪回表语法:FLASHBACKTABLE[schema.]<table_name>TO{[BEFOREDROP[RENAMETOtable]][SCN
oracle闪回技术 来自淘豆网www.taodocs.com转载请标明出处.