rollback适用于未提交的事务
否则去看logminer~
否则去看logminer~
解决方案 »
- 请教一SQL语句
- sql优化问题
- 求教,做一个财务借贷程序,为零的值显示NULL ,(也就是不显示)
- 一个SQL错误,谁能帮我看看,急啊~~
- 我创建了一个用户,设置了他的默认表空间,为什么按这个用户名导入数据的时候,数据并没有保存到他默认的表空间里去?
- 系统提示“ora-00054:资源正忙,要求指定NOWAIT”,
- 现有的服务器操作系统是windows 2000 server,已经安装了sql server2000,现在想再安装Oracle 9i,这样做可行吗?
- 启动oracle监听报错,请帮忙解决谢谢
- 请高手们救命,高分提供,解决web方式下的oracle数据库的备份和恢复的问题。
- Oracle系统预设的系统管理员都有什么不同!
- oracle 启动问题,着急啊着急啊着急啊
- 基础问题: 1: rownum 用法 2: 用户名
cursor flash_recover is
select * from t1;
t_recode t1%rowtype;
begin
DBMS_FLASHBACK.ENABLE_AT_TIME(to_date('2004-07-20 14:00:00','yyyy-mm-dd hh24:mi:ss'));
open FLASH_RECOVER;
DBMS_FLASHBACK.DISABLE;
loop
FETCH FLASH_RECOVER INTO t_recode;
EXIT WHEN FLASH_RECOVER%NOTFOUND;
insert into t1(a,b,c) values (t_recode.a,t_recode.b,t_recode.c);
end loop;
CLOSE FLASH_RECOVER;
commit;
end;
PL/SQL procedure successfully completed.15:39:28 SQL> 15:39:28 SQL>15:39:31 SQL> select * from t;A----------www.ncn.cnwww.ncn.cnwww.ncn.cnwww.ncn.cnwww.ncn.cn15:39:35 SQL>我们可以已经恢复了5条纪录,但我们要恢复的6条纪录,为什么会少一条呢?原因就在下面。三、局限性1、闪回查询是基于SCN的,虽然我执行的是:DBMS_FLASHBACK.ENABLE_AT_TIME(to_date('2003-05-16 15:37:23'));但Oracle并不会精确的这个时间点,而是ROUND DOWN到最近的一次SCN,然后从这个SCN开始进行恢复。而Oracle 9i是每五分钟记录一次SCN的,并将SCN和对应时间的映射做个纪录。这正是上面我们进行恢复时少了一条的原因。因此如果使用DBMS_FLASHBACK.ENABLE_AT_TIME来进行恢复,为了避免恢复失败,我可以先等5分钟,然后再进行恢复。使用DBMS_FLASHBACK.ENABLE_AT_TIME进行恢复还有一个缺点,那就是在Oracle 9i中SCN和对应时间的映射信息只会保留5天,因此我们无法通过DBMS_FLASHBACK.ENABLE_AT_TIME来恢复5天前的数据。如果你想使用闪回查询来恢复5天前的数据,你必须自己来确定需要恢复的SCN,然后使用DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(SCN_NUMBER); 来定位你的恢复时间点,下面是使用方法:15:58:58 SQL> VARIABLE SCN_SAVE NUMBER;16:13:43 SQL> EXECUTE :SCN_SAVE := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER;PL/SQL procedure successfully completed.16:13:50 SQL> print SCN_SAVE;SCN_SAVE----------2.1202E+1116:28:34 SQL> execute DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(:SCN_SAVE);PL/SQL procedure successfully completed.另外,在使用DBMS_FLASHBACK.ENABLE_AT_TIME前,你必须设定你的NLS_DATE_FORMAT的精确程度,Oracle默认的是精确到天,如果你不设定,像上面的例子你不会得到预期结果。2、如果你使用sysdate和DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER来获取时间点或者SCN值,你必须注意它们取得都是当前的时间点和SCN值。3、你只能在事务开始时进入闪回查询模式,如果之前有DML操作,则必须COMMIT。4、闪回查询无法恢复到表结构改变之前,因为闪回查询使用的当前的数据字典。