|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : novembre 2012 Messages : 83 ![]() |
Bonjour
Je voulais implémenter un trigger AFTER LOGON ON DATABASE afin d'utiliser et tester les statistiques privées (pending stats ) déjà calculées dans une session dédiée. Le but est de tester avec les statistiques « privées » le comportement d’une application JAVA (une boîte noire) qui lance des traitements PL/SQL. PROBLEME : DEADLOCK (ORA-4020) dès le lancement de l’application et le déclenchement du trigger permettant de faire l’alter session. Existe-il une autre manière d’exécuter l’alter session autre que le trigger sachant que j’ai pas la main sur l’application ? Autre détail , cette erreur ora-4020 devrait apparaître dans alert.log mais ce n'est pas le cas !!! merci Code :
|
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 4 162 ![]() |
Ca devrait marcher. Qu’est ce que provoque le deadlock l’insert ou l’exécute immediate? Est-ce que ça passe avec seulement l’alter session ?
|
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Yong Huang Inscription : janvier 2010 Messages : 122 ![]() |
Est-ce que trigger valide (user_objects.status)?
Il devrait y avoir un fichier de trace dans udump. |
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : novembre 2012 Messages : 83 ![]() |
C'est l'execute immediate(alter session) suivant qui provoque le deadlock puis kill session (effectué automatiquement par Oracle) :
execute immediate 'ALTER SESSION SET optimizer_use_pending_statistics = TRUE'; |
|
|
00
|
|
|
#5 |
|
Membre actif
![]() Yong Huang Inscription : janvier 2010 Messages : 122 ![]() |
Que diriez-vous "after logon on schemaname.schema" au lieu de "after logon on database"?
user_objects.status? fichier de trace dans udump? |
|
00
|
|
|
#6 | ||
|
Expert Confirmé Sénior
![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 4 162 ![]() |
Quelle version de la base utilisez vous ?
Je n'ai eu aucun problème avec le trigger suivant Code :
|
||
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : novembre 2012 Messages : 83 ![]() |
Le trigger est à priori valide !
Je testerai AFTER LOGON ON SCHEMA... Existe-il une autre manière d’exécuter l’alter session autre que le trigger sachant que j’ai pas la main sur l’application ? Autrement dit : Comment pouvoir tracer une application (boîte noire) qui se connecte à la base Oracle 11.2.0.3 via un user USER1 ? Sachant que l'application lance séquentiellement des connexions via ce user USER1 donc plusieurs traces générées !!! merci |
|
|
00
|
|
|
#8 | |
![]() ![]() Inscription : décembre 2002 Messages : 2 676 ![]() |
Citation:
Normalement, en cas d'interblocage, Oracle annule la dernière opération de l'une des deux sessions impliquées. Il n'annule pas la transaction complète, pas plus qu'il ne tue la session.
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
|
|
|
00
|
|
|
#9 |
|
Membre actif
![]() Yong Huang Inscription : janvier 2010 Messages : 122 ![]() |
> Existe-il une autre manière d’exécuter l’alter session autre que le trigger sachant que j’ai pas la main sur l’application ?
Code :
exec dbms_system.set_bool_param_in_session(1234, 567, 'optimizer_use_pending_statistics', true) |
|
00
|
|
|
#10 | |
|
Membre émérite
![]() Mohamed HouriInscription : mars 2010 Messages : 421 ![]() |
Citation:
http://jonathanlewis.wordpress.com/2...29/deadlock-2/ Ensuite vous avez tout à fait raison de dire qu'Oracle ne fait pas de rollback et donc n'annule pas la transaction
__________________
Bien Respectueusement www.hourim.wordpress.com "Ce qui se conçoit bien s'énonce clairement" |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com