Oracle 9.2.0.1.0 et trigger
Bonjour,
J'ai une DB de production Oracle 9.2.0.1.0 sur un serveur AIX Version 5.2
Je ne peut actuellement faire aucun changement de release.
Il y a environs 1200 clients(sessions) dessus.
Dans le cadre de faire un "change data capture" j'ai un trigger sur une table qui inscrit toutes les modifications de celle-ci dans une autres.
TRIGGER:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| create or replace TRIGGER TRGG_BBO_VBO_160
AFTER INSERT OR UPDATE OR DELETE ON PL_GRP
FOR EACH ROW
declare
T_CMD char(1);
T_NUMGRP NUMBER(10,0);
chainetemp VARCHAR2(4000);
begin
if ( :new.NUMGRP != :old.NUMGRP ) then
insert into TRACE_BBO_VBO_160 (cmd,stade,quand,NUMGRP) values ('Y','0',sysdate,:old.NUMGRP);
T_NUMGRP :=:new.NUMGRP;
T_CMD:='Y';
else
IF inserting then
T_CMD:='I';
T_NUMGRP :=:new.NUMGRP;
elsif updating then
T_CMD:='U';
T_NUMGRP :=:new.NUMGRP;
elsif deleting then
T_CMD:='D';
T_NUMGRP :=:old.NUMGRP;
else
T_CMD:='X';
T_NUMGRP :=:old.NUMGRP;
end if;
end if;
select IP||'-'||INFO||'-'||MODULE||'-'||PROG "QUI" INTO chainetemp
from ( select trim(to_char(sys_context('USERENV','IP_ADDRESS'))) "IP"
,trim(to_char(sys_context('USERENV','CLIENT_INFO'))) "INFO"
,trim(to_char(sys_context('USERENV','MODULE'))) "MODULE"
,trim(to_char(sys_context('USERENV','PROGRAM'))) "PROG"
from dual);
insert into TRACE_BBO_VBO_160 (cmd,stade,quand,NUMGRP) values (T_CMD,'0',sysdate,T_NUMGRP);
exception
when others then
BBO_VBO_AUDIT_TRGG (T_CMD,'TRGG_BBO_VBO_CHU_160 :'||chainetemp||' : '|| substr(SQLERRM,1,200));
end; |
PROCEDURE:
Code:
1 2 3 4 5 6 7 8 9
| CREATE OR REPLACE PROCEDURE BBO_VBO_AUDIT_TRGG
(pERR_CMD CHAR, pERR_VALUE VARCHAR2)
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
insert into bbo_vbo_err (err_cmd,err_value) values(BBO_VBO_AUDIT_TRGG.pERR_CMD, BBO_VBO_AUDIT_TRGG.pERR_VALUE);
--RAISE VALUE_ERROR;
COMMIT;
END; |
Après +/-15 jours de production j'ai environs 180.000 lignes de + dans ma table d'origine que de ligne "CMD:='I'" dans ma trace.
J'ai bien des I, U et D mais visiblement pas tout.
Et je n'ai pas d'erreur (exception) inscrit par la procédure "BBO_VBO_AUDIT_TRGG"
Il n'y a pas d'ext/imp ni de sqlldr sur cette table.
Est-ce que quelqu'un à une idée d’où cela peut-il venir ?
Est-il possible d'écrire sans déclencher le trigger ?