Read only table – Oracle 11g

Olá,

Outra funcionalidade interessante no Oracle 11g é o modo read only em tabelas.

Vejamos um exemplo :

dbajccorrea@ORCL11G> alter session set nls_language=english;

Session altered.

dbajccorrea@ORCL11G> set lines 2000 pages 50 timing on serveroutput on

Table dropped.

Elapsed: 00:00:00.96

dbajccorrea@ORCL11G> create table test_read
2 (x number,y varchar2(20)) ;

Table created.

Elapsed: 00:00:00.07
dbajccorrea@ORCL11G>
dbajccorrea@ORCL11G> insert into test_read values(1,'OCA');

1 row created.

Elapsed: 00:00:00.01
dbajccorrea@ORCL11G> insert into test_read values(2,'OCP');

1 row created.

Elapsed: 00:00:00.01
dbajccorrea@ORCL11G> commit ;

Commit complete.

Elapsed: 00:00:00.01
dbajccorrea@ORCL11G> alter table test_read read only ;

Table altered.

Elapsed: 00:00:00.07
dbajccorrea@ORCL11G> insert into test_read values(3,'OCM') ;
insert into test_read values(3,'OCM')
*
ERROR at line 1:
ORA-12081: update operation not allowed on table "DBAJCCORREA"."TEST_READ"

Elapsed: 00:00:00.03

A mensagem parece estranha,mas informa que a operação não é permiitida mesmo sabendo que como owner da tabela tenho todos os privilégios sobre a tabela.Realmente deixa a tabela em modo read only.

dbajccorrea@ORCL11G> select owner,table_name,read_only from dba_tables
2 where table_name ='TEST_READ' ;

OWNER TABLE_NAME REA
------------------------------ ------------------------------ ---
DBAJCCORREA TEST_READ YES

Elapsed: 00:00:00.08

dbajccorrea@ORCL11G> alter table test_read read write ;

Table altered.

Elapsed: 00:00:00.02

dbajccorrea@ORCL11G> alter table test_read read write;

Table altered.

Elapsed: 00:00:00.01
dbajccorrea@ORCL11G> select owner,table_name,read_only from dba_tables
2 where table_name ='TEST_READ' ;

OWNER TABLE_NAME REA
------------------------------ ------------------------------ ---
DBAJCCORREA TEST_READ NO

Elapsed: 00:00:00.01

dbajccorrea@ORCL11G> insert into test_read values(3,'OCM') ;

1 row created.

Elapsed: 00:00:00.01
dbajccorrea@ORCL11G> commit ;

Commit complete.

Elapsed: 00:00:00.00
dbajccorrea@ORCL11G>

Abs

4 comentários em “Read only table – Oracle 11g”

  1. Hi sir Eduardo Legatti,
    É uma honra ter um comentário seu em meu blog.
    Admiro seus posts ,são muito bem elaborados e com ótimo conteúdo .Sempre acompanho seu blog.

    Este curso é bom mesmo,porque a um tempo atrás o cliente me perguntou se eu poderia colocar uma tabela em modo leitura e eu informei que não,eles usavam a versão 10g R2.Na versão 11g já poderemos utilizar este recurso.

    Abs,

    JC

    Responder
  2. Fala Eduardo,
    Confesso que não conhecia este método.Até pensava que poderia ser feito somente retirando os privilégios dos usuários não owner,que não seria por completo uma restrição para somente leitura.
    Não tinha visto este seu post e portanto já aprendi mais um pouco.Por isso que é bom compartilhar os conhecimentos mesmo.

    Sucesso!

    Abs,

    JC

    Responder

Deixe um comentário

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detectado !

Verificamos que está usando alguma extensão para bloquear os anúncios. O GPO (Grupo de Profissionais Oracle) obtém a sua renda através dos anúncios, para assim manter toda a estrutura dedicada a universalização do conhecimento.

Se você gosta de nosso trabalho, pedimos por gentileza que desabilite o ads blocker. Trabalhamos somente com o Google Adsense e tentamos ao máximo exibir apenas o necessário.

Agradecemos de antemão ! :)

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock