Oracle 11g 新特性 -- 只读表(read-only table)说明

2014-11-24 18:22:21 · 作者: · 浏览: 0

一.Read only table说明


在Oracle 11g中,我们可以直接对表的读写权限进行设置:


ALTER TABLE table_name READ ONLY;


ALTER TABLE table_name READ WRITE;


二.示例


--创建表


SQL> create table dave as select * fromdba_objects;



Table created.



--设置为只读:


SQL> alter table dave read only;


Table altered.



--查看表状态:


SQL> select table_name,status,read_onlyfrom dba_tables where table_name='DAVE';



TABLE_NAME STATUS REA


------------------------------ -------- ---


DAVE VALID YES


--这里显示是只读的。



--对Dave表进行DML操作:


SQL> insert into dave select * fromdave;


insert into dave select * from dave


*


ERROR at line 1:


ORA-12081: update operation not allowed ontable "SYS"."DAVE"



SQL> update dave set object_id=88;


update dave set object_id=88


*


ERROR at line 1:


ORA-12081: update operation not allowed ontable "SYS"."DAVE"




SQL> delete from dave;


delete from dave


*


ERROR at line 1:


ORA-12081: update operation not allowed ontable "SYS"."DAVE"



SQL> truncate table dave;


truncate table dave


*


ERROR at line 1:


ORA-12081: update operation not allowed ontable "SYS"."DAVE"




SQL> alter table dave add(namevarchar(20));


alter table dave add(name varchar(20))


*


ERROR at line 1:


ORA-12081: update operation not allowed ontable "SYS"."DAVE"




--虽然表示只读的,但是我们对表进行与索引相关的操作,因为索引修改的是数据字典,和表不相关。


SQL> create index idx_id on dave(object_id);



Index created.



SQL> drop index idx_id;



Index dropped.



--将表改成读写:


SQL> altertable dave read write;



Table altered.



SQL> droptable dave;



Table dropped.