ALTER TABLESPACE¶
说明¶
修改表空间
语法¶
alter_tablespace ::=
data_file_spec ::=
size_clause ::=
opt_max_size ::=
file_name_spec ::=
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;