Welcome 微信登录

首页 / 数据库 / MySQL / Oracle 11g 新特性:只读表(Read-only)

在Oracle 11g前的版本中,若想对表设置为只读,可以通过赋予SELECT对象权限给这些用户,但表的拥有者还是读写的。而Oracle 11g 允许表标记为只读(read-only)通过ALTER  TABLE 命令。可以通过下面命令对表读写权限进行设置:  ALTER  TABLE  table_name READ ONLY;  ALTER  TABLE  table_name READ WRITE;简单示例如下:CREATE  TABLE ro_test (    id  number );INSERT  INTO  ro_test  VALUES (1);ALTER  TABLE  ro_test  READ ONLY; 任何影响表数据的DML语句和SELECT...FOR UPDATE查询语句都返回ORA-12081错误信息SQL> INSERT INTO ro_test  VALUES (2);
INSERT INTO ro_test  VALUES (2)
            *
ERROR at line 1:
ORA-12081: update operation not allowed on table "TEST"."RO_TEST"
SQL> UPDATE ro_test  SET id = 2;
UPDATE ro_test  SET id = 2
      *
ERROR at line 1:
ORA-12081: update operation not allowed on table "TEST"."RO_TEST"
SQL> DELETE FROM ro_test;
DELETE FROM ro_test
            *
ERROR at line 1:
ORA-12081: update operation not allowed on table "TEST"."RO_TEST"影响表数据的DDL语句也受限制SQL> TRUNCATE TABLE ro_test;
TRUNCATE TABLE ro_test
              *
ERROR at line 1:
ORA-12081: update operation not allowed on table "TEST"."RO_TEST"
SQL> ALTER TABLE ro_test ADD (description VARCHAR2(50));
ALTER TABLE ro_test ADD (description VARCHAR2(50))
*
ERROR at line 1:
ORA-12081: update operation not allowed on table "TEST"."RO_TEST"表是只读表但在与之相关的索引上操作不受影响。当表切换回读写模式时DML和DDL操作恢复正常。SQL> ALTER TABLE ro_test READ WRITE;Table altered.SQL> DELETE FROM ro_test;1 row deleted.SQL>相关阅读:Oracle 11g 的新特性 —— 只读表 http://www.linuxidc.com/Linux/2012-07/66454.htmOracle 11g 触发器新增功能Oracle 11g 新特性 -- 只读表(read-only table)说明相关资讯      Oracle 11g  Oracle 11g 新特性 
  • Oracle 11g导入到10g引起的错误  (11/16/2015 10:55:27)
  • Oracle 11g 导库导不出空表问题  (08/19/2015 19:55:58)
  • Oracle 11g统计信息收集--多列统计  (07/24/2015 10:32:39)
  • Oracle 11gClone安装方法  (08/24/2015 20:25:41)
  • Oracle 11g中和SQL TUNING相关的新  (08/12/2015 11:22:52)
  • Oracle 11g数据泵详解  (07/08/2015 08:29:51)
本文评论 查看全部评论 (0)
表情: 姓名: 字数

版权所有©石家庄振强科技有限公司2024 冀ICP备08103738号-5 网站地图