¿Cómo obtener el nivel de aislamiento de transacción actual (predeterminado) en Oracle?
¿Cómo obtener el nivel de aislamiento de transacción actual (predeterminado) en Oracle?
Respuestas:
Usando la consulta de la respuesta SO a la que hizo referencia Vincent Malgrat, así es como puede obtener el nivel de aislamiento de la transacción en curso:
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 aún no está en una transacción, puede comenzar una con lo siguiente:
declare
trans_id Varchar2(100);
begin
trans_id := dbms_transaction.local_transaction_id( TRUE );
end;
/
Parece que habría una manera más fácil que esto. No sé cómo obtener el nivel de aislamiento predeterminado para la sesión si eso es lo que está buscando.
- Estoy usando algo como abajo
con q1 como (seleccione un nombre distinto, es predeterminado, valor, decodificación (valor, 'serializable', SID, nulo) SID de V $ SES_OPTIMIZER_ENV donde menor (nombre) como '% aislamiento%' ordenar por nombre) seleccione q1. *, vs .status, vs.username, vs.OSUSER, vs.MACHINE, vs.TERMINAL, vs.PROGRAM from q1, v $ session vs where q1.sid = vs.sid (+);
-- Saludos. - AZ