Páginas

terça-feira, 6 de novembro de 2012

TABELAS READ ONLY


Olá, hoje vamos falar de uma nova funcionalidade do 11G, colocar uma tabela no modo read only.

A partir do Oracle 11G release 1 o estado de uma tabela pode ser alterado de read write para read only com o comando ALTER TABLE.

Abaixo uma demonstração dessa nova funcionalidade:

SQL> CREATE TABLE TESTE(
  2  CODIGO NUMBER);

Tabela criada.

SQL> INSERT INTO TESTE
  2  VALUES(1);

1 linha criada.

SQL> SELECT TABLE_NAME,READ_ONLY FROM USER_TABLES WHERE TABLE_NAME = 'TESTE';

TABLE_NAME                     REA
------------------------------ ---
TESTE                          NO

SQL> ALTER TABLE TESTE READ ONLY;

Tabela alterada.

SQL> SELECT TABLE_NAME,READ_ONLY FROM USER_TABLES WHERE TABLE_NAME = 'TESTE';

TABLE_NAME                     REA
------------------------------ ---
TESTE                          YES

SQL> DELETE TESTE;
DELETE TESTE
       *
ERRO na linha 1:
ORA-12081: operação de atualização não permitida na tabela "ISABELE"."TESTE"


SQL> TRUNCATE TABLE TESTE;
TRUNCATE TABLE TESTE
               *
ERRO na linha 1:
ORA-12081: operação de atualização não permitida na tabela "ISABELE"."TESTE"


SQL> UPDATE TESTE
  2  SET CODIGO = 2;
UPDATE TESTE
       *
ERRO na linha 1:
ORA-12081: operação de atualização não permitida na tabela "ISABELE"."TESTE"


SQL> INSERT INTO TESTE
  2  VALUES(2);
INSERT INTO TESTE
            *
ERRO na linha 1:
ORA-12081: operação de atualização não permitida na tabela "ISABELE"."TESTE"


SQL> ALTER TABLE TESTE READ WRITE;

Tabela alterada.

SQL>  INSERT INTO TESTE
  2   VALUES(2);

1 linha criada.

SQL> COMMIT;

Commit concluído.

Qualquer comando DML e DDL(Truncate) não irá funcionar enquanto a tabela estiver no modo READ ONLY. Comandos merge e select for update também não serão permitidos.
Uma ótima forma de restringuir o acesso a uma tabela específica.

Um abraço e até o próximo post.


Fonte:http://eduardolegatti.blogspot.com.br/2008/06/read-only-table-abordando-uma-nova.html