Bom, nem preciso dizer que isso *** VAI ** causar um overhead sensível,
principalmente sendo para TODO O DATABASE, isso não é algo factível na maioria
dos ambientes, mas enfim...
Isso posto, resposta : com *** Absoluta certeza *** eu recomendaria se
possível que vc use as soluções prontas que não exigem programação (ie, comando
AUDIT. basicamente) mas veja lá na Documentação que as tabelas de Auditoria
populadas pelo comando AUDIT ** não ** possuem rigorosamente todas as
informações que vc cita : para identificar o programa-cliente/sessão que emitiu
o comando, vc vai ter as colunas TERMINAL, USERHOST, mas (por exemplo) afaik
não a PROGRAM que vc cita... CASO seja possível aceitar se virar com as que são
mantidas pela Auditoria padrão ok, vá com ela que vc não precisa programar
nadinha e ela cobre sim DDL e DCL além (naturalmente) dos DMLs, e é MUUUITO
simples de usar...
Já se for ABSOLUTAMENTE MANDATÓRIO que vc tenha realmente todas as colunas da
V$SESSION que vc cita, SEM chance de usar apenas as que são mantidas no audit
trail nativo, aí vc está Por Conta, e vc VAI ter que programar um pouquinho :
provavelmente vc vai escrever uma trigger de DDL, cfrme
https://community.oracle.com/thread/2618581?start=0&tstart=0 exemplifica, já
que iirc FGA não é disparada para DCLs...
[]s
Chiappa