首页 > 数据库 > 国内数据库 > YashanDB ALTER DATABASE语句
ALTER DATABASE用于修改数据库的相关属性。 分布式部署中,仅支持如下语法:
推荐使用yasboot运维工具管理分布式集群,具体见 yasboot命令介绍章节描述。
alter database::=







该语句用于MOUNT和OPEN数据库,以便用户访问。
MOUNT是数据库挂载物理文件后的状态,OPEN是数据库打开后的状态,详细数据库启动介绍请参考 实例启停章节。
YashanDB的OPEN方式分为:
示例
该语句用于对数据库的数据文件进行自动扩展的开关控制、大小指定等。此操作需要数据库处于OPEN状态。 在设置数据文件自动扩展或RESIZE数据文件时,对于TEMP表空间和SWAP表空间的数据文件使用tempfile选项,其它表空间的数据文件使用datafile选项。
关闭某个数据文件的自动扩展,同时该数据文件的NEXT_SIZE和MAX_SIZE被设置为0。
示例(单机、共享集群部署)
开启某个数据文件的自动扩展,同时NEXT用于指定自动扩展下一空间的大小,以Bytes为单位,未指定则取默认值8K个BLOCK大小;MAXSIZE用于指定自动扩展的最大空间,UNLIMITED为无限制,未指定则默认为64M个BLOCK大小。
示例(单机、共享集群部署)
重新指定某个数据文件的大小。
创建表空间下的数据文件时可以通过设定数据文件自动扩展来满足用户对于更大数据文件的需求,但如果存储空间并不充足,或者数据文件按预期指定过大而实际使用很小,或者数据文件中存在大量被删除的临时数据而空间并没有被回收,这些情况下就需要使用resize的方式对数据文件进行缩小,释放磁盘空间。
使用resize对数据文件进行扩大,一次设置文件为自己所需大小 ,也可以避免频繁的申请资源。
resize后的数据文件大小必须在128到64MB个BLOCK之间。
resize操作不一定会成功,例如在扩大文件时可能会存在磁盘空间不足,或者在缩小文件时,当前数据文件的有效数据大小已超过指定的值。
注意:UNDO表空间的数据文件只能进行扩大,不能进行缩小。
示例(单机、共享集群部署)
改变某个数据文件至offline状态,可以在数据库处于MOUNT或者OPEN时执行该操作。 执行此操作后该数据文件所属表空间也会被offline,表空间内的所有数据文件的状态都是recover。
执行offline的场景:
执行offline的说明:
执行offline的限制:
在数据库未开启归档模式时,执行数据文件offline必须指定此选项。在开启归档模式的情况下,此选项被忽略,即OFFLINE DROP = OFFLINE。
示例(单机、共享集群部署)
当数据库整库迁移到其它目录后,该语法可用于将数据库记录在控制文件中的路径进行转换,从而使数据库继续正常启动、运行。该语句仅在实例处于NOMOUNT阶段时使用。
该语句的具体使用步骤如下:
当需要转换归档日志路径时指定该子句。
示例
该语句用于对数据库的redo日志进行归档模式设置、备库保护模式设置、增加、删除等操作。
启用或停止数据库的日志归档模式。
单机部署中,此操作需要数据库实例处于MOUNT状态。
共享集群部署中,此操作需要当前所在实例处于MOUNT状态,且其他实例处于NOMOUNT状态。
当数据库处于主备复制模式( 单机主备部署或 主备共享集群部署)时,无法从归档模式切换为非归档模式。
示例
指定备库的保护模式,缺省值为MAXIMIZE PERFORMANCE。其中,设置为MAXIMIZE PROTECTION的前提主库的日志已经同步到备库,否则会报错。FORCE表示强制设置,忽略报错。TIMEOUT表示在设置最大保护模式时,等待备库同步的时间,超过该时间将报错,单位为秒,可省略,默认为10s。
Note:
在共享集群部署下,设置最大保护模式要求所有存活实例处于open状态。
在共享集群部署下,无法使用TIMEOUT字段。
示例
示例(单机、分布式部署)
为数据库增加新的redo日志,同时增加多个文件以','隔开。此操作需要数据库处于OPEN状态。
指定STANDBY子句,添加redo日志文件到standby redo log,如果不指定该字段,则添加一个redo文件到online redo log。
共享集群下,redo日志是各个实例独享的,仅支持各个实例给自己添加redo日志。
SIZE指新增redo日志文件大小。BLOCKSIZE指redo日志文件的块大小,默认为4096,可手动指定为512的整数。redo日志实际创建的文件大小是BLOCKSIZE的整数倍,若指定大小不是整数倍,则实际创建大小向上取整。 PARALLEL可以指定创建redo日志文件的并行度,取值范围为1到8。不指定时系统根据文件大小自适应并行度,例如文件不超过1G时的并行度为1,文件超过128G时的并行度为8,文件大小在1G到128G之间时的并行度为4。
注:redo日志文件大小的最小值受DB_BLOCK_SIZE,MAX_SESSIONS和REDO_BUFFER_SIZE三个参数的影响(最小值参考公式:DB_BLOCK_SIZE * MAX_SESSIONS * 8 + REDO_BUFFER_SIZE / 2)。
示例
删除一个已存在的redo日志,对于正在使用中的redo日志则不被允许删除。此操作需要数据库处于OPEN状态。
指定STANDBY子句,删除一个standby redo log,如果不指定该字段,则删除一个online redo log。
共享集群下,redo日志是各个实例独享的,仅支持各个实例删除自己的redo日志。
示例
该语句用于执行主备库之间的切换。主备库详细操作描述请参考 高可用手册。
从主数据库切换为备数据库。
示例
Note:
- 数据库的角色必须是PRIMARY,且执行实例必须处于MOUNT状态。
- 在共享集群部署下,只有1号实例并且该实例是MASTER_ROLE才可以执行该操作。
从备数据库切换回主数据库。
示例
Note:
- 数据库的角色必须是STANDBY,且执行实例必须处于OPEN状态。
- 主库的所有存活实例的状态必须是OPEN状态。
- 主备之间的redo传输链路连接正常,且备库处于NORMAL状态。(主库查询视图V$ARCHIVE_DEST_STATUS,备库查询视图V$REPLICATION_STATUS)
- 共享集群部署下,主库的1号实例必须存活。
- 共享集群部署下,switchover的性能受checkpoint的影响,需要等待非1号实例完成全量checkpoint再执行该操作。
当主库出现故障不能恢复时,将备库强制切换为主数据库。
示例
Note:
- 数据库的角色必须是STANDBY。
- 执行实例必须处于OPEN状态。
- 数据库与主数据库的连接必须是断开的,可以查看视图V$REPLICATION_STATUS查看主备的连接情况。
- 共享集群部署下,1号实例执行该操作切换成主数据库,其他的实例需要手动OPEN。
- RESET ID仅用于仲裁选主场景yasom自动下发的failover语句中, 不得手动指定该选项。
在备库并且为Open状态下执行的SQL语句,该语句的作用为停止当前回放操作。 如果有前台回放正在进行,则中断该线程使其退出。
示例(单机、共享集群部署)
在备库并且为Open状态下执行的SQL语句,该语句的作用为启动备库回放,如需退出,需要执行取消回放SQL语句。
示例(单机、共享集群部署)
在备库并且为Open状态下执行的SQL语句,该语句的作用为启动备库回放,回放到指定到SCN时主动退出。 此时如需退出则需要执行取消回放SQL语句进行中断操作。
示例(单机、共享集群部署)
在备库并且为Open状态下执行的SQL语句,该语句的作用为在后台执行回放,当前会话可执行其他业务。
示例(单机、共享集群部署)
该语句用于将物理备用数据库转换为逻辑备用数据库。
如果您想要使用逻辑备用数据库提供的滚动升级功能,同时恢复到主数据库和物理备用数据库的原始配置,请使用此子句。
该语句用于手动注册归档。该SQL的功能约束有:
示例(单机、共享集群部署)
如果发现归档已经注册,就替换原有注册的归档,该操作比较危险,需要谨慎使用。
示例(单机、共享集群部署)
该语句用于开启逻辑备用数据库的逻辑回放功能,该功能默认关闭。
该语句用于数据库的版本升级。
当数据库升级完成之后,可以直接退出升级模式进入正常OPEN模式,无需重启。
示例
该语句用于数据库处于ABNORMAL状态时,DBA介入修复。
当数据库出现故障时,数据库被设为只读,数据库为故障状态,DBA修复之后,可以通过本语句将数据库手动切换为正常模式。
Note:
当数据库因为资源错误陷入异常状态时,无法使用此语句将数据库状态置为正常。
示例(单机、共享集群部署)
该语句用于对数据库的归档文件进行手动清理,释放磁盘空间。
手动清理归档日志的筛选条件由ARCH_CLEAN_IGNORE_MODE参数决定,清理条件的具体描述见 归档管理章节。
清理掉满足清理条件的所有归档。
清理指定序列号之前满足清理条件的归档。若不指定实例,则默认清理实例1的归档。
清理指定时间之前生成的并且满足清理条件的归档。
清理指定SCN之前生成的并且满足清理条件的归档。(同V$ARCHIVED_LOG中的NEXT_CHANGE#作比较)。
不考虑清理条件,强制清理归档。
示例
该语句用于重新指定双写文件的大小。
示例(单机、共享集群部署)
该语句用于配置数据库级别的附加日志,不适用于分布式部署。
开启附加日志后,数据库将在redo里额外记录一些数据,这些数据包括DDL的原始SQL文本,update,delete时用于定位行位置的索引信息等。
结合附加日志,可以通过redo解析还原出对应的DDL、DML语句,通常用于异构数据库同步。
数据库级附加日志对选定类型的所有用户表生效,可以通过动态视图 V$DATABASE 查看数据库级别的附加日志生效状态。若目标表开启了 加密,数据库级附加日志仍会根据选定表类型显示生效状态但实际redo里并不会记录该表相关的附加信息。
表级附加日志请参考 ALTER TABLE。
SUPPLEMENTAL LOG DATA表示最小附加日志,这种模式下redo里会额外记录DDL文本和DML的rowid,性能影响最小。
当开启ALL或PRIMARY KEY模式的附加日志时,最小附加日志隐式开启。且在关闭其他模式的附加日志前,不能关闭最小附加日志。
ALL模式的优先级大于PRIMARY KEY模式,当数据库级附加日志模式和表级附加日志模式中有一个为ALL时,该表使用ALL模式。
数据库级附加日志记录FUNCTION,PACKAGE,PROCEDURE,SEQUENCE,TRIGGER,SYNONYM,LIBRARY,TABLE,INDEX,TYPE,VIEW,MATERIALIZED VIEW这些对象的DDL,并且不修改元数据的DDL不会记录。
ALL模式下,redo里会额外记录DDL文本和DML的rowid,还会在update和delete时记录原行中的所有列(除了LOB,超过32K的varchar和char等)。
这种模式适用于没有主键的表,由于redo里额外记录了整行数据,性能影响较大。
PRIMARY KEY模式下,redo里会额外记录DDL文本和DML的rowid,还会在update和delete时尝试记录主键列。
如果表没有主键,但有非空的唯一索引,则会记录该索引列。
如果表既没有主键,也没有非空的唯一索引,则会记录原行中的所有列(除了LOB,超过32K的varchar和char等)。
这种模式下,优先记录主键,redo占用较少,性能影响较小。
示例(单机部署)
设置数据库级别的DML附加日志对哪些类型的用户表生效。默认为空,在开启附加日志后,请同时设置需要生效的表类型。
LSC表的热数据转冷数据后,所涉及行的rowid可能会发生改变,不建议对LSC表使用rowid作为行的定位信息。 LSC表在导入或通过create table as select创建时,不会产生insert的redo,所以不会记录insert的逻辑日志。
示例(单机部署)
Note:
修改数据库级附加日志状态时,不会对正在执行的语句生效。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3093337/ ,如需转载,请注明出处,否则将追究法律责任。