Nivel de aislamiento actual en oráculo


10

¿Cómo obtener el nivel de aislamiento de transacción actual (predeterminado) en Oracle?


Si está buscando el nivel de aislamiento actual de una sesión, vea esta pregunta SO: ¿Cómo puede ver qué nivel de aislamiento de transacción está utilizando una sesión de Oracle arbitraria?
Vincent Malgrat

¿Está buscando el nivel de aislamiento predeterminado para las transacciones en una sesión o el nivel de aislamiento de la transacción actual en curso?
Leigh Riffel

Respuestas:


6

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.


5

- 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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.