Base de Datos Oracle: diferencia para actualizar y para la actualización de nowait

I. Descripción

Mientras que otras transacciones escribir en la tabla, espera un periodo de tiempo o fue rechazada inmediatamente por el sistema de base de datos y volver a desarrollar maneras de realizar búsquedas con nowait, por lo que cuando se encuentran en otros datos de la sesión está bloqueada en el tiempo, será rápidamente retorno ORA-00054 error, el contenido es el recurso está ocupado, pero especifica nOWAIT acceso a los recursos de una manera. Así que podemos utilizar de una manera nowait programa para determinar rápidamente si los datos actual está bloqueado, si está bloqueado, entonces tomaríamos las medidas operativas pertinentes para su procesamiento.

En segundo lugar, los ejemplos de verificación

2.1.for actualización nowait 验证

¿Cómo entender las palabras anteriores.

  1. Abrir una sesión (que se va a abrir una sqlwindow)
select  empno,ename from emp where empno='7369' for update nowait ;

Resultados obtenidos siguiente conjunto:

empno  ename
7369   smith
  1. Abrir otra sesión
 select  empno,ename from emp where empno='7369' for update nowait ;

Volver RA-00054 de error, el contenido es el recurso está ocupado, pero la manera especificada en el acceso a los recursos NOWAIT
por encima de las sesiones se presentaron a cometer;

2.2.for de comprobación de actualizaciones

  1. Abrir una sesión,
 select  empno,ename from emp where empno='7369' for update ;

Resultados obtenidos siguiente conjunto:

   empno  ename
    7369    smith
  1. Abrir otra sesión
select  empno,ename from emp where empno='7369' for update;

Obstrucción, no devuelve un error.
Presentado a la primera sesión, la segunda respuesta se realiza automáticamente
sometido a la segunda sesión

En tercer lugar, el resumen

3.1.for actualización

Después de la última confirmación o retrotracción primera sesión, una segunda sesión en el resultado de la búsqueda se salta de forma automática, así como la estancia de traba de datos.
Abrir una sesión:

select empno,ename from emp   where empno="7369" for update

Resultados obtenidos siguiente conjunto:

empno  ename
7369    smith

Abrir otra sesión,

update emp set ename='ALLEN'  where empno="7396";

Obstrucción.
Presentado a la primera sesión, instrucción de actualización se ejecuta
y luego abrir una sesión

update emp set ename="SMITH" where empno='7396';

También bloqueado, aunque la primera sesión ya que el autor publicó la cerradura, pero la segunda actualización sesión permitió a la línea de una cerradura;

3.2.for actualización nowait

La primera vez que abre un bloqueo de sesión, la segunda sesión se ejecute correctamente. Cuando se ejecuta la segunda instrucción sesión, los datos han sido bloqueado su sentencia quedó segunda sesión, esta vez, siempre y cuando sus segundas declaraciones de sesión no se comprometan, otra sesión todavía no puede bloquear las actualizaciones de datos, y mucho más.

Se han publicado 19 artículos originales · ganado elogios 67 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/m1090760001/article/details/104582797
Recomendado
Clasificación