ALTER TABLESPACE语句用于更改一个已存在的表空间的相关属性。
在分布式部署中,执行本语句时系统会检查是否存在异常未恢复DDL语句,若存在将报错并需等待对应DDL恢复成功后才能执行本语句。

alter tablespace::=
语法图
代码
syntax::= ALTER TABLESPACE tablespace_name (datafile_clause|
databucket_clause|
shrink_clause|
offline_clause|
ONLINE|
rename_clause)语法图
代码
syntax::= ADD (DATAFILE|TEMPFILE) [(file_specification) {"," (file_specification)}]
| DROP (DATAFILE|TEMPFILE) file_name语法图
代码
syntax::= "'file_name'" SIZE size_clause [AUTOEXTEND (OFF|(ON [NEXT size_clause] [MAXSIZE (UNLIMITED|size_clause)]))] [PARALLEL parallel]
语法图
代码
syntax::= add_databucket_clause | alter_databucket_clause | drop_databucket_clause语法图
代码
syntax::= ADD DATABUCKET ((bucket_clause) {"," (bucket_clause)})语法图
代码
syntax::= "'bucket_name'" [s3_bucket_clause] MAXSIZE size_clause语法图
代码
syntax::= S3 "(" URL "'url'" ["," REGION "'region'"] "," ACCESS KEY "'access_key'" "," SECRET KEY "'secret_key'" ")"
语法图
代码
syntax::= ALTER DATABUCKET "'bucket_name'" (READONLY | READWRITE)语法图
代码
syntax::= DROP DATABUCKET "'bucket_name'"语法图
代码
syntax::= SHRINK SPACE [KEEP size_clause]语法图
代码
syntax::= OFFLINE [NORMAL|TEMPORARY|IMMEDIATE]
语法图
代码
syntax::= RENAME TO space_name该语句用于修改表空间的数据文件。
分布式部署中,仅允许对通过CREATE TABLESPACE语句创建的表空间新增/删除数据文件,若修改表空间数据文件时出现节点故障,恢复措施见用户表空间管理章节描述。
为表空间增加一个或多个数据文件(临时文件需使用TEMPFILE关键字)。对于本地临时表空间以及本地SWAP表空间而言,添加一个文件等于添加一组文件,每一组文件数量的个数等于集群实例个数。
file_specification的描述请参考CREATE TABLESPACE。
当不指定file_specification时,系统按如下规则自动创建一个数据文件:
删除表空间的某个数据文件(临时文件需使用TEMPFILE关键字)。对于本地临时表空间以及本地SWAP表空间而言,删除一个文件等于删除一组文件,每一组文件数量的个数等于集群实例个数。
删除表空间文件的规则如下:
Note: MEMORY MAPPED表空间的数据文件删除后该文件内部ID以及全局ID在该表空间被删除并重启数据库之前都不允许被复用。 当增加数据文件导致文件的表空间内部ID到达表空间限制(63)时,删除已有文件也无法向该表空间添加数据文件。 如果删除数据文件中途数据库掉电,重启后磁盘可能会有残留文件,此时需要手动删除。
示例(单机、共享集群部署)
ALTER TABLESPACE SYSTEM ADD DATAFILE 'sys1' SIZE 4M AUTOEXTEND ON NEXT 4M MAXSIZE 1G;
ALTER TABLESPACE yashan ADD DATAFILE 'yashan_add1' SIZE 4M AUTOEXTEND ON NEXT 4M MAXSIZE 1G;
ALTER TABLESPACE yashan ADD DATAFILE 'yashan_add2' SIZE 4M AUTOEXTEND ON NEXT 4M MAXSIZE 1G PARALLEL 4;
ALTER TABLESPACE yashan ADD DATAFILE;
ALTER TABLESPACE SYSTEM DROP DATAFILE 'sys1';
ALTER TABLESPACE yashan DROP DATAFILE 'yashan_add1';Copied!
该语句用于修改表空间的databucket(数据桶)信息。
为表空间增加databucket,可同时挂载多个,以,分隔。对于新建databucket的描述与约束与CREATE TABLESPACE章节中databucket_clause语句相同。
同CREATE TABLESPACE章节中bucket_clause语句描述。
同CREATE TABLESPACE章节中s3_bucket_clause语句描述。
示例(单机、分布式部署)
ALTER TABLESPACE lsc_tb ADD DATABUCKET '?/lscfile_add3' MAXSIZE 1G;Copied!
该语句用于修改databucket的读写属性,创建的databucket均默认为可读写属性。
分布式部署中用户无法执行此操作。
对于不同的databucket类型,bucket_name具有不同的含义:
readonly表示只读,readwrite表示可读写。
注意databucket修改为只读后不支持任何形式的写入操作,但用户执行的DML语句(非Bulkload操作)不受影响,执行Bulkload操作时由于需要生成SCOL数据,若表空间下没有可写入的databucket则会报错。
示例(单机部署)
ALTER TABLESPACE lsc_tb ALTER DATABUCKET '?/lscfile_add3' READONLY;Copied!
删除表空间的某个databucket,每次只允许指定一个databucket删除。
分布式部署中用户无法执行此操作。
同alter_databucket_clause语句描述。
示例(单机部署)
ALTER TABLESPACE lsc_tb DROP DATABUCKET '?/lscfile_add3';Copied!
该语句用于根据各个数据文件的空间使用情况回收空闲空间,收缩表空间大小。
共享集群部署中不允许执行shrink_clause。
Note:
将表空间收缩至指定大小,如表空间实际使用已超过该大小值,则收缩失败并返回错误。
不指定KEEP时,系统将最大化收缩表空间。
示例(单机、分布式部署)
ALTER TABLESPACE SYSTEM SHRINK SPACE KEEP 100M;
ALTER TABLESPACE SYSTEM SHRINK SPACE;Copied!
改变表空间至脱机状态。本操作一般应用于如下业务场景:
当某个表空间被offline后,该表空间下的所有数据文件将不可读写也不可修改,且不能对该表空间执行DDL操作,包括增删数据文件等操作。
SYSTEM/SYSAUX/UNDO/SWAP/TEMPORARY等内置表空间不允许offline。
共享集群部署中不允许执行offline_clause。
Note: 被offline的表空间及其下数据文件仍为数据库的一部分,因此不能创建与它们同名的表空间或数据文件。
offline选项,可省略,默认为NORMAL。
OFFLINE NORMAL:当表空间所有的数据文件均没有脱机时,才会将表空间及数据文件offline,否则报错。
OFFLINE TEMPORARY:允许表空间中存在已经脱机的数据文件,只对online的数据文件执行offline。
OFFLINE IMMDIATE:对非脱机的数据文件立即执行offline,可能存在归档或redo日志没有完全应用于数据文件,处于不一致状态,所以该操作offline的数据文件无法直接online。当数据库未开启归档模式时,不允许指定此选项执行offline。
示例(单机、分布式部署)
ALTER TABLESPACE yashan OFFLINE;
ALTER TABLESPACE yashan1 OFFLINE NORMAL;
ALTER TABLESPACE yashan2 OFFLINE TEMPORARY;
ALTER TABLESPACE yashan3 OFFLINE IMMEDIATE;Copied!
改变脱机表空间至在线状态,使其正常可用。
影子状态的临时文件不存在物理文件,不能被online。
本操作将表空间及其下的所有数据文件online,如果存在无法online的数据文件,则执行失败并返回错误。
共享集群部署中不允许执行online。
示例(单机、分布式部署)
ALTER TABLESPACE yashan ONLINE;Copied!
该语句用于表空间或数据文件重命名,限制如下:
示例(单机、共享集群部署)
ALTER TABLESPACE yashan1 RENAME TO yashanDb;本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。