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
| 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
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
开启自动扩展属性。
当自动扩展属性设置为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表空间。