我在oracle 11g数据库中不小心删除了一个闪回点,有没有办法恢复恢复点
PS:如果我有一个先创建的闪回点A,和一个后创建的闪回点B。如果我删除闪回点B并闪回到闪回点A,我可以恢复闪回点B。
PPS:没有其他备份可以恢复。
所以我有一个定义如下的表:
`create table test.test as (select * from dual);
并运行以下更新语句:
update test.test set dummy = '1' where dummy = 'X';
commit;
我想找到上面事务的undo_sql,所以我运行了下面的语句来查找事务id
SQL> select dummy, versions_xid, versions_startscn, versions_endscn from test.test
versions between scn minvalue and maxvalue ;
D VERSIONS_XID VERSIONS_STARTSCN VERSIONS_ENDSCN
- ---------------- ----------------- ---------------
1 0A000500B00A0000 2802291
X 2802291
并运行以下语句以找到 undo_sql 语句
SQL> select undo_sql from flashback_transaction_query
where xid = (select versions_xid from test.test versions
between scn minvalue and maxvalue where versions_xid is not null);
UNDO_SQL
--------------------------------------------------------------------------------
如您所见,我什么也没有,如果我运行以下语句,我也什么也没有。
SQL> select undo_sql from flashback_transaction_query where undo_sql is not null;
no row selected
看起来 undo_sql 总是为空;
有什么我没有配置的吗?这是来自 v$system_parameter 的值
SQL> select name, value from v$system_parameter where name like '%undo%';
NAME VALUE
---------------- ----------------
undo_management AUTO
undo_tablespace UNDOTBS1
undo_retention 18000
我很想知道还有哪些其他数据库具有类似于Oracle 的 Flashback Query 的功能。似乎任何支持MVCC的数据库都可以具有该功能,但有哪些呢?SO对 SQL Server 有这个问题,但在这里似乎更合适。