ALTER TABLESPACE
功能描述
修改tablespace。
注意事项
- 执行该语句的用户需要有ALTER TABLESPACE系统权限。
- 增加数据文件、删除数据文件,修改AUTOEXTEND属性及重命名表空间,需在数据库open状态下执行。
- 修改数据文件名称,需要在数据库mount状态下执行。
- 只能对用户表空间设置AUTOOFFLINE。
语法格式
ALTER TABLESPACE tablespace_name { datafile_tempfile_clauses | RENAME TO new_tablespace_name | SHRINK SPACE KEEP integer [ K | M | G | T ] | AUTOOFFLINE [ ON | OFF ] }
- datafile_tempfile_clauses 子句:
{ ADD DATAFILE {datafile_tempfile_spec [ , ... ]} | DROP DATAFILE ‘file_name’ | RENAME DATAFILE 'old_file_name' TO 'new_file_name' | autoextend_clause | OFFLINE DATAFILE 'file_name' [ , ... ] }
- datafile_tempfile_spec 子句:
file_name SIZE integer [ K | M | G ] [ autoextend_clause ]
- autoextend_clause 子句:
AUTOEXTEND { OFF | ON [ NEXT integer [ K | M | G] ] } [ MAXSIZE { integer [ K | M | G] | UNLIMITED } ]
参数说明
- tablespace_name
待修改表空间的名称,当表空间不存在时报错。
- ADD DATAFILE
向表空间添加数据文件。
- DROP DATAFILE
向表空间删除数据文件,数据文件必须是没有使用过的(hwms为0)才可以被删除。
- autoextend_clause
修改表空间AUTOEXTEND属性。
- RENAME DATAFILE
修改表空间中的数据文件名称,只有在MOUNT模式下执行,由于修改文件名需要暂时关闭文件,目前不支持等待数据库处于恢复状态。
- AUTOOFFLINE
设置表空间是否开启自动离线。AUTOOFFLINE为ON时,开启自动离线的用户表空间,在数据库启动过程中存在文件打开失败的问题时,会自动离线该用户表空间;若用户表空间在数据库启动成功后出现问题,则不会自动离线。
某些用户表空间发生损坏或其他故障时,如果已通过“ALTER TABLESPACE tablespace_name AUTOOFFLINE ON;”将该表空间设置为损坏后离线,那么在启动数据库时可以将数据库加载到MOUNT状态,否则将报错,且数据库启动失败。
- OFFLINE DATAFILE
将损坏的datafile离线,只有在MOUNT模式下执行,之后若被离线的数据文件不为空,则该表空间被离线。
- datafile_tempfile_spec
表空间数据文件,可以用逗号分隔多个数据文件,数据文件中暂时不支持中文。
file_name
新生成的数据文件在操作系统下的路径+新数据文件名。指定文件名为相对路径时,默认保存在数据目录的data目录下。
SIZE integer[ K | M | G ]
数据文件大小。
K:单位KB
M:单位MB
G:单位GB
undo表空间的取值范围:[1M,32G),其它表空间的取值范围:[1M, 8TB]。
autoextend_clause
表空间的AUTOEXTEND为on时,可以手动指定每次扩展的大小。
- 不指定AUTOEXTEND字句,默认不自动扩展。
- 指定AUTOEXTEND OFF;默认不自动扩展。
- 指定AUTOEXTEND ON时,可设置的属性如下:
- “NEXT”指定自动扩展的大小。若用户未指定时,默认值为16MB
- “MAXSIZE”指定数据文件自动扩展的上限。
- 若用户未指定或指定为 "UNLIMITED" 时,undo表空间的上限大小为32GB,其它表空间的上限大小为 8TB。
- 若用户指定了上限值,则undo表空间指定的上限值不可大于32GB,其它表空间指定的上限值不可大于 8TB。
- 若用户既指定了上限值也通过“NEXT”指定了自动扩展大小,则指定的上限值不得小于用户指定的自动扩展值。
- RENAME TO new_tablespace_name
修改表空间名字。
- SHRINK SPACE KEEP integer [ K | M | G | T ]
收缩表空间,在RESTRICTED模式下支持收缩临时表空间和undo表空间。
若需收缩undo表空间,则必须保证事务无残留。
K:单位KB
M:单位MB
G:单位GB
T:单位TB
表空间的取值范围:[1M, 8000T]。
示例
- 向表空间tbs_human中添加数据文件。
--创建表空间tbs_human。 CREATE TABLESPACE tbs_human DATAFILE 'dfile_tbs_01' SIZE 32M AUTOEXTEND ON NEXT 10M;
--向表空间tbs_human中添加数据文件privilege_dfile(大小是32M),manager_dfile(大小是32M)和section_dfile(大小是32M)。 ALTER TABLESPACE tbs_human ADD DATAFILE 'privilege_dfile' SIZE 32M, 'manager_dfile' SIZE 32M, 'section_dfile' SIZE 32M;
- 删除表空间tbs_human中的数据文件manager_dfile。
ALTER TABLESPACE tbs_human DROP DATAFILE 'manager_dfile';
- mount状态下将表空间tbs_human中的数据文件privilege_dfile重命名为new_privilege_dfile。
--mount状态下将数据文件privilege_dfile重命名为new_privilege_dfile。 ALTER TABLESPACE tbs_human RENAME DATAFILE 'privilege_dfile' TO 'new_privilege_dfile';
--修改数据库状态为OPEN. ALTER DATABASE OPEN;
- mount状态下将表空间tbs_human中损坏的数据文件section_dfile离线。
--mount状态下将表空间tbs_human中损坏的数据文件section_dfile离线。 ALTER TABLESPACE tbs_human OFFLINE DATAFILE 'section_dfile';
--修改数据库状态为OPEN. ALTER DATABASE OPEN;
- 修改表空间tbs_human为自动扩展,数据插满时,表空间自动扩展,可手动指定每次扩展大小。
ALTER TABLESPACE tbs_human AUTOEXTEND ON NEXT 5M;
- 将表空间名称tbs_human修改为data_tbs_human:
ALTER TABLESPACE tbs_human RENAME TO data_tbs_human;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」关注作者【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。评论