* Versão do Oracle: 10g e 11g
* Sistema Operacional: Oracle Enterprise linux 4.5 / 5
Talves isso seja algum bug do 11g ou algo que não faca sentido ate que
me provem ao contrario.poderia me ajudar??!!!
Estava Fazendo um teste de Travas do ORACLE Repare no ORACLE 10g como
se comporta.
OBSERVE:
Ao emitir o comando DML (UPDATE) na SESSAO1 e não encerrar a
transação (commit;).
já na SESSAO2 a tentativa de emitir cum DDL(ALTER TABLE) Recebi a
seguinte mensagem
"ORA-00054: o recurso está
ocupado e é obtido com o NOWAIT especificado"
Estava Fazendo um teste de Travas do ORACLE Repare no ORACLE 11g como
se comporta.
OBSERVE:
O mesmo processo feito no no 11G,e foi visto que ele não locka a
tabela e faz a alteração com o comando DDL(
ALTER TABLE
), já com oDDL(
DROP TABLE
) ele emite a seguinte mensagem: "ORA-00054: o recurso
está ocupado e é obtido com o NOWAIT especificado ou o timeout expirou."
Esse processo ocorre com a sessao1 aberta.
PROMPT============= SESSAO 1 ORACLE 10G ======================
SQL> SHOW USER
USER é SESSAO1
SQL> SELECT * FROM V$VERSION;
BANNER
----------------------------------------------------------------
Oracle Database 10g Release 10.2.0.1.0 - Production
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
SQL> create table teste as select * from dual;
Tabela criada.
SQL> insert into teste values('1');
1 linha criada.
SQL> commit;
Commit concluído.
SQL> update teste set DUMMY='2';
2 linhas atualizadas.
PROMPT============= SESSAO 2 ORACLE 10G ======================
sessao 2
SQL> SHOW USER
USER é SESSAO2
SQL> SELECT * FROM V$VERSION;
BANNER
----------------------------------------------------------------
Oracle Database 10g Release 10.2.0.1.0 - Production
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
SQL> select * from teste;
D
-
X
1
SQL> alter table teste add c date;
alter table teste add c date
*
ERRO na linha 1:
ORA-00054: o recurso está ocupado e é obtido com o NOWAIT especificado
==================================================================================================
PROMPT============= SESSAO 1 ORACLE 11G ======================
SQL> SHOW USER
USER é SESSAO1
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production
SQL> create table teste as select * from dual;
Tabela criada.
SQL> insert into teste values('1');
1 linha criada.
SQL> commit;
Commit concluído.
SQL> update teste set DUMMY='2';
2 linhas atualizadas.
PROMPT============= SESSAO 2 ORACLE 11G ======================
SQL> SHOW USER
USER é SESSAO2
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production
SQL> select * from teste;
D
-
X
1
SQL> alter table teste add c date;
Tabela alterada.
SQL> DROP TABLE TESTE;
DROP TABLE TESTE
*
ERRO na linha 1:
ORA-00054: o recurso está ocupado e é obtido com o NOWAIT especificado ou o
timeout expirou