1

是否有可能在系统表上使用 Oracle 闪回,例如user_tablesor cols

我能够成功地对我创建的表发出闪回查询,但是当我对系统表尝试同样的操作时,我得到了ORA-01031: insufficient privileges. 是否需要授予特权?

4

1 回答 1

1

这是意料之中的,因为您正在使用AS OF查询访问的视图基于 拥有的系统表SYS,并且被授予阻止访问,例如flashback any tableor select any table

您需要设置O7_DICTIONARY_ACCESSIBILITYTRUE使用户能够闪回系统表。

SQL> conn jay/jay
Connected.
SQL> SELECT * FROM user_tables
AS OF TIMESTAMP
TO_TIMESTAMP('2017-03-21 06:45:00', 'YYYY-MM-DD HH24:MI:SS'); 
SELECT * FROM user_tables
              *
ERROR at line 1:
ORA-01031: insufficient privileges


SQL> alter system set O7_DICTIONARY_ACCESSIBILITY=true scope=spfile;

System altered.

SQL> startup force
ORACLE instance started.

Total System Global Area  413372416 bytes
Fixed Size          2253784 bytes
Variable Size         327158824 bytes
Database Buffers       79691776 bytes
Redo Buffers            4268032 bytes
Database mounted.
Database opened.

SQL> conn jay/jay
Connected.

SQL> SELECT * FROM user_tables
AS OF TIMESTAMP
TO_TIMESTAMP('2017-03-21 06:45:00', 'YYYY-MM-DD HH24:MI:SS'); 

在 Oracle 11.2.0.4 中测试。

注意:启用前请阅读文档。

参考:O7_DICTIONARY_ACCESSIBILITY

于 2017-03-21T10:48:57.883 回答