-
Trigger after logon
salut
j'essaie de faire un trigger pour virer des users utilisant certains programmes
je n'ai pas pensé que cela tournera à la galère
cela concerne 11.2.0.3 mais 10 aussi (j'ai lu que 9i n'est pas concernée mais je n'ai pas testé)
plusieurs problèmes se posent
1. RAISE_APPLICATION_ERROR ne termine pas la session. Elle est toujours visible dans v$session. certains disent que c'est un focntionnement normal pour ne pas empêcher des users avec privilèges DBA de continuer sinon vous imaginez si le trigger foire pour tous le monde ? oui OK mais oracle peut bien tester avec de finir la session !!
certains disent que c'est un bug à rapporter au support
2. RAISE_APPLICATION_ERROR affiche 3 erreurs
ORA-00604: error occurred at recursive SQL level 1
ORA-20001: You are not allowed blabla
ORA-06512: at line 32
pas moyen d'afficher un message propre ? ORA-20001 seule ?
3. si on tente un kill session après RAISE_APPLICATION_ERROR alors faudra un grant select on sys.v_$session to public ce que je n'aime pas faire (la cellule sécurité /audit me tombera dessus)
J'ai aussi remarqué que SYS_CONTEXT('USERENV','SESSIONID') n'est pas unique et l'id est partagé par tous les users avec certains privilèges. Donc contrairement à ce qui se dit, çe ne permet pas d'identifier une unique session
4. et si on essaie dbms_output.put_line ensuite kill session ? là problème ça ne marche pas à partir d'un trigger
quelqu'un aurait des astuces pour faire marcher ce trigger proprement ?
-
je suis tombé sur ce fil où Tom dit que c’est comme ça et c’est tout
http://asktom.oracle.com/pls/asktom/...68817379083269
tout le monde parle de trigger after logon alors j'ai pensé que c'était un jeu d'enfant
finalement c'est pas du tout évident de le faire marcher .. la galère ... un truc aussi banal m'a pris la journée