#全库闪回基础配置
全库闪回的基础配置主要包括功能启停、闪回日志文件管理。
当YashanDB部署为容器数据库(配置参数ENABLE_PLUGGABLE_DATABASE=TRUE)时,根容器、各个PDB的闪回操作及其所依赖的闪回日志文件、还原点等均相互独立且私有。需连接目标容器执行相关的管理操作,且操作只对自身生效。
存算一体分布式集群部署中暂无全库闪回功能。
# 开启全库闪回
全库闪回功能默认关闭,可以根据实际使用需求将其开启。
Note:
全库闪回功能会消耗部分系统资源,请在业务允许场景下酌情开启。
开启全库闪回后会自动生成闪回日志文件,且闪回日志会随着数据库运行而增加,可按需配置允许闪回日志文件占据的磁盘容量上限并为其规划充足的磁盘空间。
# 前提条件
需确保数据库已开启归档模式。
执行相应操作的数据库(或容器)实例必须处于MOUNT或OPEN阶段。若其处于MOUNT阶段,则只能使用sys用户登录。
在主备集群部署的备集群中执行该操作时,必须登录其master实例(GV$INSTANCE视图中INSTANCE_ROLE=MASTER)。
执行相应操作的用户需至少具备SYSDBA角色或FLASHBACK相关权限。
# 操作步骤
以符合权限要求的用户连接并登录目录数据库(或容器)。
# 登录非容器数据库或容器数据库的根容器 $ yasql / as sysdba # 登录容器数据库的某个PDB $ yasql sys/********@192.168.1.2:1688/pdb1通过V$DATABASE视图的FLASHBACK_ON字段可以查看全局闪回功能是否已开启。
SELECT FLASHBACK_ON FROM V$DATABASE; FLASHBACK_ON ----------------- NOFLASHBACK_ON = NO表示暂未开启闪回,可按需执行后续操作将其开启。
FLASHBACK_ON = YES表示已开启闪回。
按需配置闪回日志相关参数:
日志存放路径:通过DB_FLASHBACK_FILE_DEST参数进行配置,可按需调整该参数自定义指定闪回日志存放路径。
单机部署中,默认为$YASDB_DATA/fra。
共享集群/分布式集群部署中,默认为+DG0/fra。
当YashanDB部署为容器数据库(配置参数ENABLE_PLUGGABLE_DATABASE=TRUE)时,上述默认值是根容器的闪回日志默认存放路径,PDB的默认路径则为{PDB数据文件存放路径}/fra(例如$YASDB_DATA/containers/{pdb_name}/fra或+DG0/containers/{pdb_name}/fra)。如需调整配置,DB_FLASHBACK_FILE_DEST参数只能直连目标容器进行自定义配置,且只对自身生效。
日志自动清理策略:通过DB_FLASHBACK_FILE_DEST_SIZE和DB_FLASHBACK_RETENTION_TARGET参数进行配置,详情请查阅管理闪回日志自动清理策略。
-- 查看当前配置 SELECT NAME,VALUE FROM V$PARAMETER WHERE NAME LIKE 'DB_FLASHBACK_%'; NAME VALUE ---------------------------------------------------------------- ---------------------------------------------------------------- DB_FLASHBACK_RETENTION_TARGET 1440 DB_FLASHBACK_FILE_DEST_SIZE 8G DB_FLASHBACK_FILE_DEST ?/fra若当前配置不符合实际需求,可按需调整,本文以使用默认路径为例。
若当前登录的是备库/备集群且处于OPEN状态,需先暂停其redo日志回放再执行后续操作。
-- 查看数据库状态 SELECT status FROM V$INSTANCE; STATUS ------------- OPEN -- 若处于OPEN状态,需手动停止redo日志回放 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; -- 若处于MOUNTED状态,其回放暂未启动(无需额外操作,直接进入下一步)执行如下语句开启全库闪回。
ALTER DATABASE FLASHBACK ON;若前序步骤中暂停了redo日志回放,需将其恢复。
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;为减少重复操作,您也可以考虑在创建还原点后再恢复回放。
# 查看全库闪回相关信息
通过V$DATABASE视图的FLASHBACK_ON字段可以查看全局闪回功能是否已开启。
SELECT FLASHBACK_ON FROM V$DATABASE; FLASHBACK_ON ----------------- NOFLASHBACK_ON = NO表示暂未开启闪回,可按需执行后续操作将其开启。
FLASHBACK_ON = YES表示已开启闪回。
通过GV$FLASHBACK_DATABASE_LOG/V$FLASHBACK_DATABASE_LOG视图可以查看全库闪回的相关信息,例如全库闪回能到达的最老时间点对应的SCN、当前全库闪回所有日志文件所占空间等。
SELECT * FROM V$FLASHBACK_DATABASE_LOG; OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TIME RETENTION_TARGET TOTAL_FILE_SIZE --------------------- ---------------------------------------------------------------- --------------------- --------------------- 723859443785293824 2025-08-07 17:51:37.017894 1440 1224210944
# 管理闪回日志文件
开启全库闪回功能后,会自动生成闪回日志文件。
# 查看闪回日志文件
# 查看物理文件
闪回日志文件的存放路径默认为$YASDB_DATA/fra。
使用安装用户登录数据库所在服务器,进入该路径即可查看对应的物理文件。
$ cd $YASDB_DATA/fra
$ ls -lrt
total 1457608
-rw-r----- 1 yashan yashan 1074827264 Aug 11 02:00 flb_file_0
-rw-r----- 1 yashan yashan 140962304 Aug 11 16:06 flb_file_1
-rw-r----- 1 yashan yashan 8421376 Aug 11 16:06 flb_ctrl
闪回日志文件包括flb_ctrl和flb_file_{sequence}:
flb_ctrl:闪回控制文件。
flb_file_{sequence}:具体的闪回日志文件,{sequence}为文件序列号,从0开始递增。
# 通过视图查看
通过V$FLASHBACK_DATABASE_LOGFILE视图可以查看闪回日志文件的信息,例如文件名、文件所占空间大小、文件被创建时对应的SCN等。
SELECT * FROM V$FLASHBACK_DATABASE_LOGFILE;
FILE_NAME FILE_NUM THREAD# SEQUENCE# FILE_SIZE FIRST_CHANGE# FIRST_TIME
-------------------------------------------- ------------ ------- ------------ --------------------- --------------------- -----------------------------
$YASDB_DATA/fra/flb_file_0 0 0 0 1074827264 723743061460926464 2025-08-07 17:58:03.364484
$YASDB_DATA/fra/flb_file_1 1 0 1 141250048 724923208865271808 2025-08-11 02:00:05.289373
# 管理闪回日志自动清理策略
YashanDB提供了闪回日志文件的自动清理策略,包括闪回日志文件的清理策略和自动清理任务的启停触发条件。
如果YashanDB默认的自动清理策略无法满足实际需求,只能自定义修改相关参数值,不得手动删除任一物理文件。
自动清理闪回日志时,始终只会清理早于永久还原点的文件。
# 清理策略
闪回日志文件的清理策略取决于以下参数:
| 参数名称 | 参数描述 | 默认值 |
|---|---|---|
| DB_FLASHBACK_FILE_DEST_SIZE | 允许闪回日志文件占据的最大磁盘空间,单位为字节。 同时将作为闪回日志文件清理任务的启停条件,清理任务触发后会删除所有满足早于永久还原点 + 最大保留时长(DB_FLASHBACK_RETENTION_TARGET参数)要求的闪回日志文件。 | 8G |
| DB_FLASHBACK_RETENTION_TARGET | 闪回日志文件的最大保留时长,单位为分钟。 同时将作为闪回日志文件的清理策略(即是否允许被清理)。 | 1440 |
Caution:
若自动清理任务无法保障现存所有闪回日志文件的总容量 ≤ DB_FLASHBACK_FILE_DEST_SIZE参数值,例如所有闪回日志文件均不满足清理条件无法自动清理,此时业务可能会卡住,系统会打印运行日志提示空间不足,需人工介入调大DB_FLASHBACK_FILE_DEST_SIZE参数的值或手动删除不必要的永久还原点。
查看清理策略相关参数值:
SELECT NAME,VALUE FROM V$PARAMETER WHERE NAME LIKE 'DB_FLASHBACK_%';
NAME VALUE
---------------------------------------------------------------- ----------------------------------------------------------------
DB_FLASHBACK_RETENTION_TARGET 1440
DB_FLASHBACK_FILE_DEST_SIZE 8G
# 调整自动清理策略
以DBA用户连接并登录数据库。
$ yasql sales/********@192.168.1.2:1688 YashanDB SQL Enterprise Edition Release {version_number} x86_64 Connected to: YashanDB Server Enterprise Edition Release {version_number} x86_64 - Linux SQL>按需调整参数值,并指定生效范围。
-- 将自动清理闪回日志文件的触发条件设置为16G ALTER SYSTEM SET DB_FLASHBACK_FILE_DEST_SIZE = 16G SCOPE=BOTH; SHOW PARAMETER DB_FLASHBACK_FILE_DEST_SIZE NAME VALUE ---------------------------------------------------------------- ---------------------------------------------------------------- DB_FLASHBACK_FILE_DEST_SIZE 16G -- 将闪回日志文件的最大保留时长设置为7天,即10080分钟 ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET = 10080 SCOPE=BOTH; SELECT NAME,VALUE FROM V$PARAMETER WHERE NAME LIKE 'DB_FLASHBACK_%'; NAME VALUE ---------------------------------------------------------------- ---------------------------------------------------------------- DB_FLASHBACK_RETENTION_TARGET 10080 DB_FLASHBACK_FILE_DEST_SIZE 16G
# 关闭全库闪回
若确认无需再使用全库闪回功能,可将其关闭,还原数据库性能。
关闭全库闪回时,会自动删除/清空以下信息,请谨慎操作。
所有存量闪回日志文件,但不会删除
fra文件夹。所有非永久的普通还原点。
闪回相关的视图数据,包括GV$FLASHBACK_DATABASE_LOG/V$FLASHBACK_DATABASE_LOG、GV$FLASHBACK_DATABASE_LOGFILE/V$FLASHBACK_DATABASE_LOGFILE。
# 前提条件
若存在永久还原点将无法直接关闭全库闪回功能,需先手动将其删除。
执行相应操作的数据库(或容器)实例必须处于MOUNT或OPEN阶段。
执行相应操作的用户需至少具备SYSDBA角色或FLASHBACK相关权限。
# 操作步骤
以符合权限要求的用户连接并登录目录数据库(或容器)。
# 登录非容器数据库或容器数据库的根容器 $ yasql / as sysdba # 登录容器数据库的某个PDB $ yasql sys/********@192.168.1.2:1688/pdb1执行如下语句关闭全库闪回。
ALTER DATABASE FLASHBACK OFF;

