在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>
相关推荐
### Oracle11g学习笔记知识点总结 #### 一、Oracle11g简介及重要性 Oracle数据库是一款由美国Oracle公司开发的关系型数据库管理系统,广泛应用于企业和组织的数据存储和管理领域。Oracle11g作为Oracle数据库的一个...
- **READ ONLY**:解释了只读事务的特点及其应用场景。 - **7.3 多版本读一致性的含义**: - **一种会失败的常用数据仓库技术**:说明了一种常见的数据仓库技术存在的问题。 - **解释热表上超出期望的I/O**:...
在上述示例中,`WITH READ ONLY`表示`stat_jz_view`为只读视图。 以上就是Oracle 10g数据库中创建表空间、数据链路、同义词、序列号和视图的基本操作,它们在数据库管理和应用开发中起到至关重要的作用。理解并熟练...
在某些情况下,可能需要在恢复后将表空间置于只读状态以防止新数据的写入: ``` rman> alter tablespace '表空间名' read only; ``` 6. **还原数据文件**: RMAN会自动还原相关数据文件,但有时可能需要指定...
- **只读(READ ONLY)**:只允许读取数据,不允许修改。 - **读写(READ WRITE)**:默认状态,允许读取和修改数据。 8. **创建非标准数据块表空间** - 非标准数据块表空间意味着使用不同于系统默认的db_block_...
### Oracle表空间建立方法 #### 一、Oracle 表空间概念与作用 在Oracle数据库管理系统中,表空间是逻辑存储单元的基本单位。每个数据库至少包含一个表空间,默认情况下为`SYSTEM`表空间。表空间由一个或多个数据...
在Oracle 10g数据库管理中,表空间(Tablespace)是重要的逻辑存储结构单元,用于组织和管理数据库中的数据文件。本文将详细介绍如何通过Oracle 10g SQL命令进行表空间的操作,包括创建、调整大小、删除等,并提供...
### ORACLE表空间操作知识点详解 #### 一、表空间创建与管理 在Oracle数据库中,表空间是逻辑存储单元,用于组织数据文件。通过不同的命令可以实现对表空间的操作,包括创建、调整大小、离线与在线状态切换等。 ##...
- **Read Only Mount**: 以只读模式挂载数据库。 - **Force Mount**: 强制挂载数据库,即使存在错误也尝试挂载。 - **Parallel Mount**: 使用并行服务器技术挂载数据库,以便支持并行处理。 以上内容涵盖了...
* WITH READ ONLY 表示视图是只读的。 删除视图的语法如下: DROP VIEW 视图名; 删除视图者需要是视图的建立者或者拥有 DROP ANY VIEW 权限。视图的删除不影响基表,不会丢失数据。 创建简单视图: 例如,创建...
只读模式(READ ONLY)允许用户读取数据库中的数据,但不允许任何写入操作,包括DML(如INSERT、UPDATE、DELETE)和DDL(如CREATE TABLESPACE、ALTER DATABASE ADD LOGFILE等)操作。此模式主要用于保护数据库免受...
- `WITH READ ONLY`: 创建只读视图。 6. **检测视图存在性的示例代码:** - **目标:** 检测视图`clu$`是否存在。 - **代码实现:** ```sql DECLARE v_count NUMBER; BEGIN SELECT COUNT(*) INTO v_count ...
- 表空间状态:表空间可以处于online(在线)和read write(读写)状态,还可以是offline(离线)或read only(只读)状态。 - 数据字典组成:数据字典由一系列只读的数据字典表和数据字典视图构成。 - DML操作:...