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

华为GaussDB T ALTER DATABASE 修改数据库命令

原创 章芋文 2019-09-22
1804

功能描述

修改数据库。

注意事项

执行该语句的用户需要有ALTER DATABASE系统权限。

不支持自动的备机文件管理。

不支持在备机上执行add/drop logfile操作。

语法格式

ALTER DATABASE [ database_name ]

  {   startup_clauses 

    | logfile_clauses 

    | archlogfile_clauses

    | standby_database_clauses 

    | alter_datafile_clauses

    | clear_logfile_clauses 

    | rebuild_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

( { '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

rebuild_clause子句

REBUILD TABLESPACE tablespace_name

参数说明

database_name

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

startup_clauses

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

只能将数据库从MOUNT状态修改为OPEN状态,不能从OPEN状态修改为MOUNT状态。

数据库从OPEN状态切换为OPEN子状态,或除READ WRITE和READ ONLY外的其他OPEN子状态之间相互切换状态时,只能按照下面的步骤,否则报错:

UPGRADE模式是升级专用模式,该模式需匹配升级脚本upgrade.py使用,具体操作请参见《GaussDB 100 V300R001C00用户指南(单机)》中的“安装部署 > 安装准备 > 升级数据库”,其他非常规操作将导致数据库进程异常退出等不可用场景。

RESTRICTED模式下可以进行系统表的索引重建,非必要时不建议进行该操作;如果发现系统表的索引结构稀疏,占空间较大,影响业务运行速度,建议在RESTRICTED模式下进行索引重建;重建系统表索引不支持在线(online),也不支持重新指定表空间。主备场景下,如果主机要进行重建系统表索引的维护操作,备机也需要进入RESTRICTED模式。

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

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

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

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

使用python zctl.py -t stop命令,关闭数据库。

以NOMOUNT或MOUNT状态启动数据库,并连接数据库。

切换数据库状态为OPEN子状态。

logfile_clauses

添加或删除日志文件。

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

online和standby的日志文件之和最多支持256个,如果超过则报错。

SIZE integer [ K | M | G | T | P | E ]

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

ARCHIVELOG

设置Redo日志归档。

NOARCHIVELOG

设置Redo日志在线。

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

add_logfile_clauses

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

redo_log_file_spec

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

drop_logfile_clauses

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

archlogfile_clauses

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

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

ALL

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

删除策略指归档日志占用空间是否达到MAX_ARCH_FILES_SIZE的85%,归档日志是否已经备份,归档日志是否被备机重演完,可通过配置MAX_ARCH_FILES_SIZE和ARCH_CLEAN_IGNORE_STANDBY参数配置删除策略。

UNTIL TIME 'date_string'

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

FORCE

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

standby_database_clauses

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

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

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

AVAILABILITY:最大可用模式。

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

PERFORMANCE:最大性能模式。

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

alter_datafile_clauses

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

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

integer [ K | M | G ]

OFF

关闭自动扩展属性。

ON

开启自动扩展属性。

NEXT,指定自动扩展的大小。若用户未指定时,默认值为16MB。

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

UNLIMITED

自动扩展,无上限。

file_name:文件名。支持绝对路径和单纯文件名两种方式。如果用户输入的是单纯的文件名,则数据库会根据当前ALTER DATABASE语句指定的数据库实例路径的 “data”目录拼接出一个全路径。若用户输入的就是绝对路径,则数据库不会对输入值进行任何加工。file_name最大长度为256字节。

file_number:文件编号。数据库中的数据文件编号。请参见《GaussDB 100 V300R001C00数据库参考信息》中的“数据字典和视图 > 动态性能视图 > DV_DATA_FILES”的ID字段获得一个数据文件的编号。

autoextend_clause

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

resize_clause

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

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

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

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

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

数据文件大小。

K:单位KB

M:单位MB

G:单位GB

SWITCHOVER

数据库主备机切换。

FAILOVER

数据库备机升为主机。

CANCEL RESTRICT

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

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

CONVERT TO

READWIRTE,启动到OPEN后的默认状态,支持读写。

READONLY,只读模式,此时数据库只支持查询。

[CASCADED] PHYSICAL STANDBY [MOUNT]

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

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

READONLY| READWRITE

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

clear_logfile_clause

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

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

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

rebuild_clause

重建表空间,注意此命令必须在mount模式下执行。

tablespace_name,表空间名称,当前仅支持重建temp表空间。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论