在oracle中,可以利用“alter tablespace 表空间名 read only”语句设置表空间为只读;alter tablespace语句用于修改表空间的数据,表空间处于只读状态时文件中的数据就不会发生变化,可以提高系统的效率。

本教程操作环境:Windows10系统、Oracle 11g版、Dell G3电脑。

oracle怎么设置表空间只读

alter tablespace 表空间名 read only;

一个表空间处于只读状态时,只能进行读操作,因此数据文件中的数据也就不会发生变化,因此也就不进行重做日志的保护,不会产生重做操作。所以处于此状态下可以提高系统的效率。

刚刚改为只读状态时,表空间还处于中间状态,当所有的事务完成后才被置为只读状态。将一个表空间修改为只读状态时,系统会产生检查点。当然可以删除只读表空间的对象,比如说表,索引等。因为删除对象的命令为DDL语句,它只修改数据字典而不是数据文件。

示例如下:

1.查看dba_tablespaces结构

SQL> desc dba_tablespaces;
名称                                      是否为空? 类型
----------------------------------------- -------- ----------------------------
TABLESPACE_NAME                   NOT NULL VARCHAR2(30)
BLOCK_SIZE                                NOT NULL NUMBER
INITIAL_EXTENT                                     NUMBER
NEXT_EXTENT                                        NUMBER
MIN_EXTENTS                               NOT NULL NUMBER
MAX_EXTENTS                                        NUMBER
PCT_INCREASE                                       NUMBER
MIN_EXTLEN                                         NUMBER
STATUS                                          VARCHAR2(9)
CONTENTS                                        VARCHAR2(9)
LOGGING                                          VARCHAR2(9)
FORCE_LOGGING                                  VARCHAR2(3)
EXTENT_MANAGEMENT                           VARCHAR2(10)
ALLOCATION_TYPE                                VARCHAR2(9)
PLUGGED_IN                                      VARCHAR2(3)
SEGMENT_SPACE_MANAGEMENT                   VARCHAR2(6)
DEF_TAB_COMPRESSION                          VARCHAR2(8)
RETENTION                                      VARCHAR2(11)
BIGFILE                                          VARCHAR2(3)

2.查询XUANXUAN表空间的状态

SQL> select  TABLESPACE_NAME, STATUS, CONTENTS from dba_tablespaces where TABLESPACE_NAME like 'XUANXUAN';
TABLESPACE_NAME                STATUS    CONTENTS
------------------------------ --------- ---------
XUANXUAN                       ONLINE    PERMANENT

从查询结果来看是处于联机状态。

3.修改XUANXUAN表空间为只读状态。

SQL> alter tablespace XUANXUAN read only;

表空间已更改。

4.修改完后进行查询,查看是否已经成功修改。

SQL> select  TABLESPACE_NAME, STATUS, CONTENTS from dba_tablespaces where TABLESPACE_NAME like 'XUANXUAN';
TABLESPACE_NAME                STATUS    CONTENTS
------------------------------ --------- ---------
XUANXUAN                       READ ONLY PERMANENT

5.如果想改回可读可写状态,需要执行下面的命令。

SQL> alter tablespace XUANXUAN read write;

表空间已更改。

6.修改完后进行查询,查看是否已经成功修改。

SQL> select  TABLESPACE_NAME, STATUS, CONTENTS from dba_tablespaces where TABLESPACE_NAME like 'XUANXUAN';
TABLESPACE_NAME                STATUS    CONTENTS
------------------------------ --------- ---------
XUANXUAN                       ONLINE    PERMANENT

从结果看表空间XUANXUAN已经处于联机状态。

推荐教程:《Oracle视频教程》

高并发千万级数据库系统解决方案

本文来源:https://www.php.cn/oracle/491899.html

发表评论

您的电子邮箱地址不会被公开。