您好,欢迎访问一九零五行业门户网

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

在oracle 11g之前,如果我们想要对一个表设置为只读的,可以通过授予某些用户select 权限。 但是对于表的所有者来说,还是读写的
一.read only table说明
在oracle 11g之前,如果我们想要对一个表设置为只读的,可以通过授予某些用户select 权限。 但是对于表的所有者来说,还是读写的。
在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.
相关阅读:oracle 11g 的新特性 —— 只读表
其它类似信息

推荐信息