`

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 9i&10g编程艺术:深入数据库体系结构 中文

    - **READ ONLY**:解释了只读事务的特点及其应用场景。 - **7.3 多版本读一致性的含义**: - **一种会失败的常用数据仓库技术**:说明了一种常见的数据仓库技术存在的问题。 - **解释热表上超出期望的I/O**:...

    ORACLE10g数据库创建表空间序列

    在上述示例中,`WITH READ ONLY`表示`stat_jz_view`为只读视图。 以上就是Oracle 10g数据库中创建表空间、数据链路、同义词、序列号和视图的基本操作,它们在数据库管理和应用开发中起到至关重要的作用。理解并熟练...

    ORACLE10G 使用RMAN表空间的恢复

    在某些情况下,可能需要在恢复后将表空间置于只读状态以防止新数据的写入: ``` rman> alter tablespace '表空间名' read only; ``` 6. **还原数据文件**: RMAN会自动还原相关数据文件,但有时可能需要指定...

    ORACLE_11g教程_数据库应用简明教程

    - **只读(READ ONLY)**:只允许读取数据,不允许修改。 - **读写(READ WRITE)**:默认状态,允许读取和修改数据。 8. **创建非标准数据块表空间** - 非标准数据块表空间意味着使用不同于系统默认的db_block_...

    Oracle 表空间建立方法

    ### Oracle表空间建立方法 #### 一、Oracle 表空间概念与作用 在Oracle数据库管理系统中,表空间是逻辑存储单元的基本单位。每个数据库至少包含一个表空间,默认情况下为`SYSTEM`表空间。表空间由一个或多个数据...

    oracle10g表空间操作命令

    在Oracle 10g数据库管理中,表空间(Tablespace)是重要的逻辑存储结构单元,用于组织和管理数据库中的数据文件。本文将详细介绍如何通过Oracle 10g SQL命令进行表空间的操作,包括创建、调整大小、删除等,并提供...

    ORACLE表空间操作

    ### ORACLE表空间操作知识点详解 #### 一、表空间创建与管理 在Oracle数据库中,表空间是逻辑存储单元,用于组织数据文件。通过不同的命令可以实现对表空间的操作,包括创建、调整大小、离线与在线状态切换等。 ##...

    oracle-interview-questions

    - **Read Only Mount**: 以只读模式挂载数据库。 - **Force Mount**: 强制挂载数据库,即使存在错误也尝试挂载。 - **Parallel Mount**: 使用并行服务器技术挂载数据库,以便支持并行处理。 以上内容涵盖了...

    Oracle视图操作

    * WITH READ ONLY 表示视图是只读的。 删除视图的语法如下: DROP VIEW 视图名; 删除视图者需要是视图的建立者或者拥有 DROP ANY VIEW 权限。视图的删除不影响基表,不会丢失数据。 创建简单视图: 例如,创建...

    Oracle 12c受限模式 只读模式 静默模式 延迟模式

    只读模式(READ ONLY)允许用户读取数据库中的数据,但不允许任何写入操作,包括DML(如INSERT、UPDATE、DELETE)和DDL(如CREATE TABLESPACE、ALTER DATABASE ADD LOGFILE等)操作。此模式主要用于保护数据库免受...

    国家开放大学《Oracle数据库编程》形考任务1-6参考答案.docx

    - `WITH READ ONLY`: 创建只读视图。 6. **检测视图存在性的示例代码:** - **目标:** 检测视图`clu$`是否存在。 - **代码实现:** ```sql DECLARE v_count NUMBER; BEGIN SELECT COUNT(*) INTO v_count ...

    oracle自测题 oracle自测题oracle自测题oracle自测题oracle自测题oracle自测题

    - 表空间状态:表空间可以处于online(在线)和read write(读写)状态,还可以是offline(离线)或read only(只读)状态。 - 数据字典组成:数据字典由一系列只读的数据字典表和数据字典视图构成。 - DML操作:...

Global site tag (gtag.js) - Google Analytics