暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB T ALTER TABLESPACE

墨天轮 2019-10-12
527

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论