Comment obtenir le niveau d'isolation de transaction actuel (par défaut) dans Oracle?
Comment obtenir le niveau d'isolation de transaction actuel (par défaut) dans Oracle?
Réponses:
En utilisant la requête de la réponse SO référencée par Vincent Malgrat, voici comment obtenir le niveau d'isolement de transaction pour la transaction en cours:
SELECT s.sid, s.serial#,
CASE BITAND(t.flag, POWER(2, 28))
WHEN 0 THEN 'READ COMMITTED'
ELSE 'SERIALIZABLE'
END AS isolation_level
FROM v$transaction t
JOIN v$session s ON t.addr = s.taddr AND s.sid = sys_context('USERENV', 'SID');
Si vous n'êtes pas déjà dans une transaction, vous pouvez en démarrer une avec ce qui suit:
declare
trans_id Varchar2(100);
begin
trans_id := dbms_transaction.local_transaction_id( TRUE );
end;
/
Il semble qu'il y aurait un moyen plus simple que cela. Je ne sais pas comment obtenir le niveau d'isolement par défaut pour la session si c'est ce que vous recherchez.
- J'utilise quelque chose comme ci-dessous
avec q1 comme (sélectionner un nom distinct, isdefault, valeur, décoder (valeur, 'sérialisable', SID, null) SID de V $ SES_OPTIMIZER_ENV où inférieur (nom) comme '% isolation%' commander par nom) sélectionner q1. *, vs .status, vs.username, vs.OSUSER, vs.MACHINE, vs.TERMINAL, vs.PROGRAM from q1, v $ session vs where q1.sid = vs.sid (+);
-- Cordialement. - AZ