Probé este ejemplo en Oracle 11.2.0.2.7. Un colega quería saber cual era el propósito de la columna table_lock en la vista dba_tables. Yo no sabía y por lo tanto decidí investigar. Para empezar, miré los valores en la columna table_lock en una base de datos de prueba:
SQL> select table_lock, count(*)
2 from dba_tables
3 group by table_lock
4 /
TABLE_LOCK COUNT(*)
TABLE_LOCK COUNT(*)
---------- ----------
ENABLED 2760
SQL>
SQL>
Esto me hizo pensar que el valor predeterminado fuese ENABLED. Para confirmar esta teoría, creé una tabla de prueba:
SQL> create table andrew (col1 number)
2 /
Tabla creada.
SQL>
SQL> l
Como se esperaba, la columna table_lock tenía un valor de ENABLED para esta tabla nueva:
SQL> l
1 select table_lock from user_tables
2* where table_name = 'ANDREW'
SQL> /
TABLE_LOCK
----------
ENABLED
SQL>
SQL>
Se puede cambiar el valor de table_lock de la manera siguiente:
SQL> alter table andrew disable table lock
2 /
Tabla modificada.
SQL>
SQL>
Tras hacer esto, el valor de table_lock cambia a DISABLED:
SQL> select table_lock from dba_tables
2 where table_name = 'ANDREW'
3 /
TABLE_LOCK
----------
DISABLED
SQL>
SQL>
Luego no es posible tener un bloqueo en la tabla:
SQL> l
1* lock table andrew in share mode
SQL> /
lock table andrew in share mode
*
ERROR en linea 1:
ORA-00069: no se puede obtener el bloqueo -- bloqueos
de tabla desactivados para ANDREW
SQL>
SQL>
Tampoco es posible cambiar la tabla de cualquier manera. Por ejemplo, no se puede renombrarla:
SQL> rename andrew to fred
2 /
rename andrew to fred
*
ERROR en linea 1:
ORA-00069: no se puede obtener el bloqueo -- bloqueos
de tabla desactivados para ANDREW
SQL>
SQL> alter table andrew enable table lock
Si quieres hacer estas cosas, es necesario cambiar table_lock a ENABLED:
SQL> alter table andrew enable table lock
2 /
Tabla modificada.
SQL>
SQL> rename andrew to fred
Entonces se puede cambiar la tabla otra vez:
SQL> rename andrew to fred
2 /
Nombre de tabla cambiado.
SQL>
En inglés / in English
Así se puede ver que cuando table_lock sea ENABLED, Oracle te permite tener bloqueos en la tabla y cambiar su definición.
No hay comentarios:
Publicar un comentario