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