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

华为GaussDB T ALTER DATABASE

墨天轮 2019-10-12
212

ALTER DATABASE

功能描述

修改数据库。

注意事项

  • 执行该语句的用户需要有ALTER DATABASE系统权限。
  • 不支持自动的备机文件管理。
  • 不支持在备机上执行add/drop logfile操作。

语法格式

ALTER DATABASE [ database_name ] { startup_clauses | logfile_clauses | archlogfile_clauses | standby_database_clauses | alter_datafile_clauses | clear_logfile_clauses | SWITCHOVER | FAILOVER | CANCEL RESTRICTED | CONVERT TO { READONLY | READWRITE } |{[ CASCADED ] PHYSICAL STANDBY [ MOUNT ] } }
  • startup_clauses 子句:
    { MOUNT | OPEN [ RESETLOGS | READ ONLY | READ WRITE | RESTRICTED | UPGRADE | FORCE IGNORE LOGS] }
  • logfile_clauses 子句:
    { [ ARCHIVELOG | NOARCHIVELOG ] add_logfile_clauses | drop_logfile_clauses }
    • add_logfile_clauses 子句:
      ADD LOGFILE redo_log_file_spec
      redo_log_file_spec 子句:
      ( { 'file_name' SIZE integer [ K | M | G | T | P | E ] } [ , ... ] )
    • drop_logfile_clauses 子句:
      DROP LOGFILE ( 'file_name' )
  • archlogfile_clauses 子句:
    DELETE ARCHIVELOG { ALL | UNTIL TIME 'date_string' } [ FORCE ]
  • standby_database_clauses 子句:
    SET STANDBY DATABASE TO MAXIMIZE { PROTECTION | AVAILABILITY | PERFORMANCE }
  • alter_datafile_clauses 子句:
    DATAFILE { { 'file_name' | file_number } [, ...] } { autoextend_clause | resize_clause }
    • autoextend_clause 子句:
      AUTOEXTEND { OFF | ON [ NEXT integer [ K | M | G] ] [ MAXSIZE { integer [ K | M | G] | UNLIMITED } ] }
    • resize_clause 子句:
      RESIZE integer [ K | M | G ]
    • clear_logfile_clauses 子句
      CLEAR LOGFILE file_id

参数说明

  • database_name

    待修改的数据库名,不指定则取当前MOUNT状态的数据库。

  • startup_clauses

    指定数据库状态为MOUNT或者OPEN。

    • MOUNT,数据库加载状态,但不打开数据库。此模式下,仅数据库管理员可以通过命令修改数据库,但用户无法与数据库建立连接或会话。

      如果数据库当前状态为MOUNT,再次修改为MOUNT时将报错。

    • OPEN,数据库正常启动状态。

      OPEN数据库时初始化DC,将堆文件元数据加载到内存中。

      • RESETLOGS,重置数据库日志序列号为1。
      • READ WIRTE,启动到OPEN后的默认状态,支持读写。
      • READ ONLY,只读模式,此时数据库只支持查询。
      • RESTRICTED, 约束模式,该模式用来支持数据库维护,紧急修复等DFX能力。该模式只支持SYS用户启动并执行操作,进入该模式后,仅支持一个session连接。模式下支持重建系统表的索引,但是需要严格遵循步骤操作。
      • UPGRADE,该模式只加载核心系统表,只支持SYS用户启动并执行操作,进入该模式后,仅支持一个session连接。

        数据库升级时,需要先切换数据库状态为UPGRADE。

        该模式仅用于升级,如果不严格按照升级流程操作,会导致数据库处于不可用状态。

      • FORCE IGNORE LOGS, 数据库启动到OPEN模式时,强制忽略日志文件。

        用于数据库日志文件损坏,无法恢复到CONSISTENT POINT时,强制忽略损坏的日志。

        该操作无法保证数据库的一致性,如果未恢复到CONSISTENT POINT点,会在运行日志中提示用户,同时视图DV_DATABASE中的OPEN_INCONSISTENCY将置为TRUE。

    说明:
    • 只能将数据库从MOUNT状态修改为OPEN状态,不能从OPEN状态修改为MOUNT状态。
    • 数据库从OPEN状态切换为OPEN子状态,或除READ WRITE和READ ONLY外的其他OPEN子状态之间相互切换状态时,只能按照下面的步骤,否则报错:
      • 使用python zctl.py -t stop命令,关闭数据库。
      • 以NOMOUNT或MOUNT状态启动数据库,并连接数据库。
      • 切换数据库状态为OPEN子状态。
    • RESTRICTED模式下可以进行系统表的索引重建,非必要时不建议进行该操作;如果发现系统表的索引结构稀疏,占空间较大,影响业务运行速度,建议在RESTRICTED模式下进行索引重建;重建系统表索引不支持在线(online),也不支持重新指定表空间。主备场景下,如果主机要进行重建系统表索引的维护操作,备机也需要进入RESTRICTED模式。
  • logfile_clauses

    添加或删除日志文件。

    设置Redo日志归档和Redo日志在线,只能在数据库MOUNT状态下执行。添加和删除Redo日志只能在数据库open状态下执行。

    • ARCHIVELOG

      设置Redo日志归档。

    • NOARCHIVELOG

      设置Redo日志在线。

      说明:

      数据库主备部署时,只能设置Redo日志归档,不能设置Redo日志在线。

    • add_logfile_clauses

      在主机的Redo Log增加一个或者多个Redo日志文件。如果只是给出日志文件名,则文件默认添加在“$GSDB_HOME/data”目录下面。

      redo_log_file_spec

      Redo日志文件,可以设置一个或多个。此参数必须包含文件大小、绝对路径或文件名,其中文件大小无限制条件。

      • online和standby的日志文件之和最多支持256个,如果超过则报错。
      • SIZE integer [ K | M | G | T | P | E ]

        指定文件大小。默认单位为字节。K表示单位为KB,M表示单位为MB,G表示单位为GB,T表示单位为TB,E表示单位为EB。

    • drop_logfile_clauses

      在主机的Redo Log删除Redo日志文件,一次只能删除一个日志文件。

  • archlogfile_clauses

    删除归档日志文件,只能在归档模式下执行。

    • ALL

      删除所有满足删除策略的归档日志。

    • UNTIL TIME 'date_string'

      删除date之前产生的满足删除策略的归档日志。

      • date_string :时间参数,格式可以为YYYY-MM-DD hh:mm:ss 或 YYYY-MM-DD。
    • FORCE

      删除时忽略归档日志是否已经备份,对所有小于rcy_point的归档日志进行删除。FORCE子句是高危语句,在使用时应当十分谨慎。

  • standby_database_clauses

    切换数据库备机的数据保护模式。

    • PROTECTION:最大保护模式。只能在备机MOUNT状态执行。

      提供最高级别的数据保护能力。要求数据库备机收到Redo日志后,数据库主机的事务才能提交。此模式可以保证没有数据丢失,但是对网络等客观条件要求非常高,对数据库性能会有较大影响。

    • AVAILABILITY:最大可用模式。

      提供仅次于“PROTECTION”模式的数据保护能力。原则上要求数据库备机收到Redo日志后,数据库主机的事务才能提交,当备机无法写入Redo日志时,数据保护模式临时降低为“PERFORMANCE”,直到备机恢复可以成功写入日志。此模式可以在数据库备机没有问题时,保证备机数据不丢失,对数据库性能有一定影响。

    • PERFORMANCE:最大性能模式。

      保证数据库主机的最高可用性。主机不受备机影响,但如果数据库主机提交的事务相关的恢复数据没有发送到备机,这些事务数据将丢失,不能保证数据无损失。

  • alter_datafile_clauses

    变更数据库的一个或多个数据文件属性。当前只支持变更数据文件的自动扩展属性。

    数据文件可以通过“文件名”以及“文件编号”两种方式指定。

    • file_name文件名。支持绝对路径和单纯文件名两种方式。如果用户输入的是单纯的文件名,则数据库会根据当前ALTER DATABASE语句指定的数据库实例路径的 “data”目录拼接出一个全路径。若用户输入的就是绝对路径,则数据库不会对输入值进行任何加工。file_name最大长度为256字节。
    • file_number:文件编号。数据库中的数据文件编号。请参见《GaussDB 100 1.0.0产品文档》中的数据库参考信息 > 数据字典和视图 > 动态性能视图 > DV_DATA_FILES的ID字段获得一个数据文件的编号。
    • autoextend_clause

      设置自动扩展属性,以及开启时每次自动扩展的尺寸或自动扩展的上限。

      • OFF

        关闭自动扩展属性。

      • ON

        开启自动扩展属性。

        当自动扩展属性设置为ON时,可设置的属性如下:
        • NEXT,指定自动扩展的大小。若用户未指定时,默认值为16MB。
        • MAXSIZE,指定数据文件自动扩展的上限。设置的上限大小不能超过当前文件大小。若用户未指定或指定为 “UNLIMITED” 时,上限尺寸为8TB。若用户指定了上限值,则指定的上限值不可大于8TB。若用户既指定了上限值也通过“NEXT”指定了自动扩展大小,则指定的上限值不得小于用户指定的自动扩展值。

          UNLIMITED

          自动扩展,无上限。

    • resize_clause

      修改数据文件的大小,请参见《GaussDB 100 1.0.0产品文档》中的数据库参考信息 > 数据字典和视图 > 动态性能视图 > DV_DATA_FILES的FILE_NAME字段或ID字段所表示的文件的大小。

      不支持在OPEN状态下的READ ONLY状态执行该语句,OPEN状态下的其余子状态下均支持。

      当减小数据文件的大小时,不能小于数据库系统要求的最小尺寸,其中system表空间以及undo表空间最小尺寸为128M,其他数据文件最小尺寸为1M。

      减小数据文件大小时不能损坏有效数据的存储区域,否则命令执行失败。

      有效数据占用的页面数,请参见《GaussDB 100 1.0.0产品文档》中的数据库参考信息 > 数据字典和视图 > 动态性能视图 > DV_DATA_FILES的HIGH_WATER_MARK字段获取,需要注意的是该参数是数据文件占据的页面数,要计算文件大小需要将该值乘以每一页面的尺寸大小。

      • integer [ K | M | G ]

      数据文件大小。

      K:单位KB

      M:单位MB

      G:单位GB

  • SWITCHOVER

    数据库主备机切换。

  • FAILOVER

    数据库备机升为主机。

  • CANCEL RESTRICT

    取消RESTRICTED模式。数据库升级完成后,需要取消RESTRICTED模式。

    需在进入RESTRICTED模式且执行完成ALTER SYSTEM INIT DICTIONARY语句后执行。

  • CONVERT TO
    • [CASCADED] PHYSICAL STANDBY [MOUNT]

      修改数据库角色为备机(PHYSICAL STANDBY)或者级联备机(CASCADED PHYSICAL STANDBY)。该操作只能在MOUNT状态下执行。

      如果指定参数MOUNT,则只修改角色,不修改数据库状态;若不指定参数MOUNT,修改角色后,数据库会自动转换为OPEN状态下的READ ONLY 状态。

    • READONLY| READWRITE

      修改数据库状态。READWRITE和READONLY状态可以在线相互切换,数据库主备部署时,只能在主机执行。

      • READWIRTE,启动到OPEN后的默认状态,支持读写。
      • READONLY,只读模式,此时数据库只支持查询。
  • clear_logfile_clause

    清理和重建日志文件id为file_id的日志文件内容,用于日志文件头部损坏导致数据库无法启动时,若此日志文件可以清理,则可以使用此命令清理损坏内容,重建日志文件,使数据库可以启动。

    该操作可以在mount或open状态下执行。

    • file_id,指定要清理重建的日志文件id。仅支持状态为UNUSED或INACTIVE的日志文件。

示例

  • 修改数据库的状态。
    --修改数据库状态为MOUNT。 ALTER DATABASE MOUNT;
    --在数据库MOUNT状态下,修改数据库状态为OPEN。 ALTER DATABASE OPEN;
    --在数据库MOUNT状态下,重置数据库日志序列号为1。 ALTER DATABASE OPEN RESETLOGS;
    --在数据库MOUNT状态下,修改数据库状态为只读模式。 ALTER DATABASE OPEN READ ONLY;
    --在数据库MOUNT状态下,修改数据库状态为支持读写。 ALTER DATABASE OPEN READ WRITE;
    --在数据库MOUNT状态下,修改数据库状态为RESTRICTED。 ALTER DATABASE OPEN RESTRICTED; --在数据库MOUNT状态下,修改数据库状态为UPGRADE。 ALTER DATABASE OPEN UPGRADE;
  • 添加或删除日志文件。
    --在数据库MOUNT状态下,设置Redo日志归档。 ALTER DATABASE ARCHIVELOG;
    --在数据库MOUNT状态下,设置Redo日志在线(主备部署时,不可设置)。 ALTER DATABASE NOARCHIVELOG;
    --在数据库OPEN状态下,在Redo Log中增加名称为test1,大小为1G的Redo日志文件。 ALTER DATABASE ADD LOGFILE( 'test1' SIZE 1G);
    --在数据库OPEN状态下,在Redo Log中删除名称为test1的Redo日志文件。 ALTER DATABASE DROP LOGFILE( 'test1' );
  • 修改数据库备机数据的保护模式。
    --在数据库备机MOUNT状态下,修改数据保护模式为最大保护模式。 ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PROTECTION;
    --修改数据保护模式为最大可用模式。 ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY;
    --修改数据保护模式为最大性能模式。 ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY;
  • 变更数据库的数据文件属性。
    --关闭文件编号为“1”的数据文件的自动扩展属性。 ALTER DATABASE DATAFILE 1 AUTOEXTEND OFF;
    --修改文件编号为“1”的数据文件自动扩展大小为20M。 ALTER DATABASE DATAFILE 1 AUTOEXTEND ON NEXT 20M;
    --修改文件编号为“1”的数据文件自动扩展上限为10G。 ALTER DATABASE DATAFILE 1 AUTOEXTEND ON MAXSIZE 10G;
    --修改文件编号为“1”的数据文件自动扩展的大小无上限。 ALTER DATABASE DATAFILE 1 AUTOEXTEND ON MAXSIZE UNLIMITED;
  • 修改数据库角色
    --在数据库MOUNT状态下,修改数据库角色为备机。 ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
    --在数据库MOUNT状态下,修改数据库角色为级联备机。 ALTER DATABASE CONVERT TO CASCADED PHYSICAL STANDBY;
    --在数据库MOUNT状态下,修改数据库角色为备机,不OPEN数据库。 ALTER DATABASE CONVERT TO PHYSICAL STANDBY MOUNT;
    --在数据库MOUNT状态下,修改数据库角色为级联备机,不OPEN数据库。 ALTER DATABASE CONVERT TO CASCADED PHYSICAL STANDBY MOUNT;
  • 修改数据库状态。
    --修改数据库状态为READWRITE。 ALTER DATABASE CONVERT TO READWRITE;
  • 修改数据文件大小。
    --在数据库MOUNT状态下将USER数据文件的大小改为128M ALTER DATABASE DATAFILE 'USER' RESIZE 128M;
  • 重建文件id为0的日志文件头部。
    ALTER DATABASE CLEAR LOGFILE 0;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论