Pb autocommit lors d'un exit en sqlplus
Bonjour à tous,
J'ai 2 bases de données Oracle 9.2, chacune sur un serveur unix AIX 5.3.
Dans chacune des bases j'ai une table AA_CATHY et une procédure PR_TOTO qui fait un insert dans cette table.
Voici ma procédure
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
PROCEDURE PR_TOTO
IS
vc_sqlcode NUMBER := -20000; -- error code
vc_sqlerrm VARCHAR2(100); -- error message
BEGIN
INSERT INTO AA_CATHY(NOM,CODE) VALUES ('123456','A');
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('PB');
vc_sqlerrm := SUBSTR(SQLERRM, 1, 100);
ROLLBACK;
RAISE_APPLICATION_ERROR(vc_sqlcode,vc_sqlerrm);
END PR_TOTO; |
Il n'y a pas de "COMMIT" volontairement
Sur la base 1, lorsque j'exécute les commandes suivantes par sqlplus, l'insert de ma procédure est automatiquement commité après le "exit".
Code:
1 2 3 4 5 6 7 8 9 10 11
|
SET SERVEROUTPUT ON
WHENEVER SQLERROR EXIT 1
BEGIN
PR_TOTO;
EXCEPTION
WHEN OTHERS THEN RAISE;
END;
/
exit |
Sur la base 2, l'insert de ma procédure n'est pas commité après le "exit".
Les paramètres de mes 2 bases semblent tous identiques.
Par exple, le paramètre AUTOCOMMIT est à OFF sur les 2 bases
Je ne comprends pas pourquoi lorsque je sors de sqlplus il n'y a pas de "commit" de fait dans ma base 2 alors que c'est le cas dans la base 1 ?
Celà ne semble pas venir d'un paramètre de sqlplus sur les serveur unix car j'ai la même différence avec mon client sqlplus (windows xp).
Il n'y a pas si longtemps, la base 2 faisait le "commit" lorsqu'on sortait d'une session sqlplus mais ce n'est plus le cas. Quelqu'un a du toucher un paramètre, je ne sais pas.
Je sais juste qu'il y a eu des tests sur l'isolation level des transactions de fait avec les commandes suivantes :
Code:
1 2 3 4 5 6 7 8
|
set transaction READ WRITE;
set transaction read only;
set transaction isolation level read committed;
set transaction isolation level serializable; |
Mais ces tests ne concernent que les transactions qui ont suivies il y a plus de 3 semaines, depuis les utilisateurs se sont déconnectés. Il n'y a pas eu d'alter session ou alter system à ma connaissance.
Je ne veux pas ajouter un COMMIT dans ma procédure, ce qui résoudrait mon pb, mais juste comprendre pourquoi la sortie de ma session sqlplus ne commite plus.
Merci de votre aide.
Cat