你这里是删除了数据,如果undo的数据没有被覆盖的话,可以用 SQL> select * from tablename as of scn xxxxxxxx; SQL> select * from tablename as of timestamp to_timestamp('2009-08-21 18:40:00','YYYY-MM-DD HH24:MI:SS'); 这样的方式把以前的数据查出来,然后找到指定的数据,insert到你的现在的表里来。 这个是9i也支持的,主要依赖于你的undo表空间,而不是闪回日志,所以如果flashback没有开的话,也可以用。
关于flashback的操作 见 http://www.inthirties.com/?p=600
oracle 10g 可以,用过,但9i不知道了。 FLASHBACK TABLE 表名 TO TIMESTAMP TO_TIMESTAMP('2008-04-17 13:30:00', 'YYYY-MM-DD HH24:MI:SS'); 但执行这条语句前先要执行以下语句才可以 ALTER TABLE 表名 ENABLE ROW MOVEMENT; //允许更改时间挫
我没时间得走了
如果你开了flashback,那用flashback是最省事的办法之一了
SQL> select * from tablename as of scn xxxxxxxx;
SQL> select * from tablename as of timestamp to_timestamp('2009-08-21 18:40:00','YYYY-MM-DD HH24:MI:SS');
这样的方式把以前的数据查出来,然后找到指定的数据,insert到你的现在的表里来。
这个是9i也支持的,主要依赖于你的undo表空间,而不是闪回日志,所以如果flashback没有开的话,也可以用。
http://www.inthirties.com/?p=600
FLASHBACK TABLE 表名 TO TIMESTAMP
TO_TIMESTAMP('2008-04-17 13:30:00', 'YYYY-MM-DD HH24:MI:SS');
但执行这条语句前先要执行以下语句才可以
ALTER TABLE 表名 ENABLE ROW MOVEMENT; //允许更改时间挫
lz这里需要的功能只是用到undo表空间,而不需要用到flashback log所以,9i也支持。