SYS n'est pas inclus dans ANY

C’est une évidence, au moins lorsque O7_DICTIONARY_ACCESSIBILITY=false (valeur par défaut du paramètre), le fait d’hériter des privilèges ANY, comme create any table ne donne pas accès aux objets de l’utilisateur SYS. Vous me direz : « tant mieux ! ». Moralité, SYSTEM ne peut pas faire un AS OF SCN sur DUAL, alors qu’il peut le faire sur les objets des autres schémas :

connect system

col grant format a80
select 'grant '||privilege||' on '||owner||'.'
||table_name||' to '||grantee "GRANT"
from dba_tab_privs
where table_name like 'DUAL'
order by table_name;

GRANT
-----------------------------------
grant SELECT on SYS.DUAL to PUBLIC


col scn format 999999999999 new_value scn
select dbms_flashback.get_system_change_number scn
from dual;

select *
from dual as of scn &&scn;

*
ERROR at line 1:
ORA-01031: insufficient privileges

select *
from WMSYS.WM$LOG_TABLE as of scn &&scn;

no rows selected

Pour permettre cette opération, donnez simplement le droit associé à SYSTEM ou PUBLIC :

connect / as sysdba

grant flashback on DUAL to PUBLIC;

connect system/manager

col scn format 999999999999 new_value scn
select dbms_flashback.get_system_change_number scn
from dual;

select *
from dual as of scn &&scn;

D
-
X