Oracle Flashback на системные таблицы

Есть ли возможность использовать Oracle Flashback для системных таблиц, таких как user_tables или же cols?

Мне удалось успешно выполнить запросы Flashback для созданных таблиц, но когда я попытался сделать то же самое для системных таблиц, я получил ORA-01031: insufficient privileges, Требуется ли предоставление особых привилегий?

1 ответ

Решение

Это ожидается, так как мнение о том, что вы обращаетесь с помощью AS OF запрос основан на системных таблицах, принадлежащих SYSи не имеют доступа к таким грантам, как flashback any tableили же select any table,

Вам нужно установить O7_DICTIONARY_ACCESSIBILITY в TRUE чтобы позволить пользователю вспомнить системные таблицы.

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

Другие вопросы по тегам