oracle11g添加只读用户,Oracle11g新特性:只读表(Read-only)

在Oracle 11g前的版本中,若想对表设置为只读,可以通过赋予SELECT对象权限给这些用户,但表的拥有者还是读写的。而Oracle 11g 允

在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 的新特性 —— 只读表

logo.gif, 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值