在之前的版本中想要实现只读表只能对用户只授予SELECT权限,但是对表的所有者还是保留了读写权限。
11g的这个功能使用户的所有者也只能具有读的权限了。
wangzk>create table test
2 (id number,
3 name varchar2(20));
表已创建。
wangzk>insert into test values(1,'cherry');
已创建 1 行。
wangzk>commit;
提交完成。
wangzk>alter table test read only;
表已更改。
--任何DML操作都不被允许
wangzk>insert into test values(2,'wangzk');
insert into test values(2,'wangzk')
*
第 1 行出现错误:
ORA-12081: 不允许对表 "SYS"."TEST" 进行更新操作
wangzk>update test set name='wangzk' where id=1;
update test set name='wangzk' where id=1
*
第 1 行出现错误:
ORA-12081: 不允许对表 "SYS"."TEST" 进行更新操作
wangzk>delete from test;
delete from test
*
第 1 行出现错误:
ORA-12081: 不允许对表 "SYS"."TEST" 进行更新操作
--DDL操作也不被允许
wangzk>alter table test add (addr varchar2(20));
alter table test add (addr varchar2(20))
*
第 1 行出现错误:
ORA-12081: 不允许对表 "SYS"."TEST" 进行更新操作
wangzk>truncate table test;
truncate table test
*
第 1 行出现错误:
ORA-12081: 不允许对表 "SYS"."TEST" 进行更新操作
wangzk>
--解除表只读
wangzk>alter table test read write;
表已更改。
wangzk>insert into test values(2,'wangzk');
已创建 1 行。
wangzk>commit;
提交完成。
wangzk>
在之前的版本中想要实现只读表只能对用户只授予SELECT权限,但是对表的所有者还是保留了读写权限。
11g的这个功能使用户的所有者也只能具有读的权限了。