ALTER TABLESPACE

说明

修改表空间

语法

alter_tablespace ::=

alter_tablespace_option ::=

data_file_spec ::=

autoextend_clause ::=

size_clause ::=

opt_max_size ::=

file_name_spec ::=

default_storage_option ::=

encrypt_option ::=

参数

tablespace_name

要创建的表空间名

ADD DATAFILE

指定增加数据文件

注解

回滚表空间不允许添加数据文件

RENAME DATAFILE ... TO ...

指定重命名数据文件

不应该通过此命令修改临时文件路径,如果要修改临时文件位置,可以修改配置文件中的 TEMPFILE_RECREATE_OPTION 和 TEMPFILE_PATH 参数设置临时文件目录。

注解

重命名数据文件需要以下步骤:

1、将要重命名的数据文件所在的表空间 OFFLINE

2、将重命名后的数据文件移动或复制到新路径下

3、进行 RENAME

4、恢复表空间状态

ONLINE

将指定的表空间设置为在线状态,此时该表空间下的所有数据文件都将被打开,数据库系统可以访问存储在该表空间上的对象

OFFLINE

将指定的表空间设置为离线状态, 此时该表空间下的所有数据文件都将被关闭,数据库系统对该表空间上对象的后续访问都将被禁止

READ ONLY

将表空间置为只读状态,该操作会等待当前所有活动事务执行结束,成功返回后系统只允许对该表空间进行查询操作,所有在该表空间上的DDL语句也将被禁止

READ WRITE

将表空间置为读写状态,此时系统允许对该表空间进行读写操作

SHRINK

收缩临时表空间磁盘大小。

当未指定收缩值进行收缩时,数据库会尝试将临时文件缩小到最小值2M。

当指定收缩值进行收缩时,数据库会将临时文件缩小到指定值。如果有会话正在使用需要收缩的空间,数据库会等待一段时间。

如果页面被会话占用导致无法达到指定的收缩值,通过 V_SYS_SEGMENT_TEMP_INFO 视图去定位占用页面的会话id,详见 v_sys_segment_temp_info 的 MAX_PAGE_ID 列的说明。

注解

目前,收缩表空间磁盘大小的功能只支持临时表空间。

无论是否指定收缩值,一旦执行收缩动作,都会返回成功并尽可能地将可收缩的范围收缩。

需要注意的是,收缩临时表空间的动作是费时操作,可能会花费较长时间。

当收缩失败通过视图找到占用页面的会话id后,可通过杀死会话或等待会话结束的方式释放被占用的页面。

datafile_path

数据文件路径名

SIZE size [ K | KB | M | MB | G | GB | T | TB ]

指定数据文件大小,K,KB,M,MB,G,GB,T,TB分别是可选的字节单位

默认是M(兆字节)

AUTOEXTEND

指定数据文件自动增长属性

OFF | ON

指定数据文件是否自动增长, OFF不自动增长,ON自动增长

NEXT size [ K | KB | M | MB | G | GB | T | TB ]

分区大小的增长步长, K,KB,M,MB,G,GB,T,TB分别是可选的字节单位,增长步长为64k的倍数

默认是M(兆字节)

MAXSIZE { UNLIMITED | size [ K | KB | M | MB | G | GB | T | TB ] }

指定数据文件的最大长度,UNLIMITED为长度不受限制,K,KB,M,MB,G,GB,T,TB分别是可选的字节单位。

默认是M(兆字节)

LOGGING | NOLOGGING

对表空间上创建的对象进行的操作默认记日志或不记日志。

NOLOGGING可以使对象上的操作产生的日志量最少,通常指定NOLOGGING可以改善大数据量操作的性能,对少量数据的操作只有很小的影响,在大数据量NOLOGGING操作结束后应当将对象改回LOGGING模式。除以下操作外,不建议对其它操作使用NOLOGGING模式:

CREATE INDEX

ALTER INDEX REBUILD

INSERT INTO ...SELECT

大量的大对象数据操作

由于NOLOGGING模式下记录的少量日志无法满足数据库回滚和介质恢复的需要,你必须非常谨慎地使用这种模式,而且要与负责备份和恢复的人沟通之后才能使用。在执行NOLOGGING操作前应当为可能受影响的数据文件建立一个备份,一旦操作失败或发生事务回滚,必须从备份进行恢复,以避免产生数据不一致的情况。 执行NOLOGGING操作后,必须执行ALTER SYSTEM CHECKPOINT命令建立检查点强制数据刷新到磁盘上,并尽快为受影响的数据文件建立一个新的基准备份,从而避免由于介质失败而丢失对这些对象的后续修改。

对象之间的LOGGING属性是相互独立的,表与LOB字段、表与索引的LOGGING属性都不会互相影响。例如,如果想对索引在NOLOGGING模式下重建,只需执行ALTER INDEX ... REBUILD NOLOGGING. 并不需要对表进行NOLOGGING设置。

INIT size [ K | KB | M | MB | G | GB | T | TB ]

段大小的初始值, K,KB,M,MB,G,GB,T,TB分别是可选的字节单位

默认是M(兆字节)

NEXT size [ K | KB | M | MB | G | GB | T | TB ]

段大小的增长步长, K,KB,M,MB,G,GB,T,TB分别是可选的字节单位,增长步长为64k的倍数

默认是M(兆字节)

PCTINCREASE pctincsize

段增长步长的增长比例。每次段增长的大小比上次段增长的大小多pctincsize%

MAX size [ K | KB | M | MB | G | GB | T | TB ]

段大小的最大值,K,KB,M,MB,G,GB,T,TB分别是可选的字节单位

默认是M(兆字节)

PCTFREE freesize

保留空闲空间百分比,详见 sys_segment(段信息) 的 PCTFREE 列的说明

PCTUSED usedsize

恢复可插入的空间百分比,详见 sys_segment(段信息) 的 PCTUSED 列的说明

FILL fillsize

索引填充系数,详见 sys_segment(段信息) 的 PCTFREE 列的说明

SPLIT splitsize

索引分裂系数,详见 sys_segment(段信息) 的 PCTUSED 列的说明

BUFFER_POOL {KEEP|RECYCLE|DEFAULT|SEQUENCE}

BUFFER_POOL子句用于为指定的模式对象指定一个默认的缓存方式。

  • 指定KEEP,表示尽量将该模式对象数据缓存在内存中;
  • 指定RECYCLE,表示采用LRU算法换出该模式对象数据;
  • 指定SEQUENCE,表示按顺序换出该模式对象数据;

指定DEFAULT时,表示采用系统默认的缓存方式,当前系统默认缓存方式为RECYCLE。

ENCRYPT | DECRYPT

设置表空间的加密模式。

ENCRYPT 设置表空间的加密模式。

DECRYPT 设置表空间为非加密模式。

缺省时,加密模式保持不变。

USING 'encrypt_algorithm'

指定加密算法。目前支持的加密算法包括:'des3' 、 'aes128' 、 'aes192' 、 'aes256' 、 'sm4'。

注解

通过增加数据文件,表空间可以有更多的数据文件。

重命名表空间数据文件可以用于恢复,当数据文件因各种原因破坏掉时,可以使表空间数据文件指向备份的数据文件,注意:备份数据文件与使用的数据文件数据一致。

示例

示例1: 增加数据文件

--  清理环境
DROP TABLESPACE at_ts1;

--  创建表空间
CREATE TABLESPACE at_ts1 DATAFILE 'at_ts1.data' SIZE 5m;


--  增加数据文件
ALTER TABLESPACE at_ts1 ADD DATAFILE 'at_ts2.data' SIZE 5m;


--  删除表空间
DROP TABLESPACE at_ts1;

示例2: 修改数据文件名

--  清理环境
DROP TABLESPACE at_ts2;

--  创建表空间
CREATE TABLESPACE at_ts2 DATAFILE 'at_ts2.data' SIZE 5m;

--  1.将要重命名的数据文件所在的表空间 OFFLINE
ALTER TABLESPACE at_ts2 OFFLINE;

--  2.将重命名后的数据文件移动或复制到新路径下

--  3.进行 RENAME
ALTER TABLESPACE at_ts2 RENAME DATAFILE 'at_ts2.data' TO 'at_ts3.data';

--  4.恢复表空间状态
ALTER TABLESPACE at_ts2 ONLINE;

--  删除表空间
DROP TABLESPACE at_ts2;

示例3: 修改表空间加密模式

--  清理环境
DROP TABLESPACE at_ts3;

--  创建表空间
CREATE TABLESPACE at_ts3 DATAFILE 'at_ts3.data' DEFAULT ENCRYPT USING 'sm4';

--  修改表空间的加密方式
ALTER TABLESPACE at_ts3 DEFAULT ENCRYPT USING 'aes128' ;

--  删除表空间
DROP TABLESPACE at_ts3;

示例4: 收缩临时表空间磁盘大小

--  清理环境
DROP TABLESPACE at_ts4;

--  创建临时表空间
create temporary tablespace at_ts4 tempfile 'at_ts4.data' size 100M;

--  指定收缩值收缩
ALTER TABLESPACE at_ts4 SHRINK SPACE KEEP 20M;

--  删除表空间
DROP TABLESPACE at_ts4;