在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)