#管理还原点
还原点(Restore Point)类似于书签,用于标记一个特定的SCN或时间戳,方便事后需要执行全库闪回时能更便捷地定位目标点。
根据有效属性,可分为永久还原点和普通还原点:
| 特性 | 永久还原点 | 普通还原点 |
|---|---|---|
| 闪回日志依赖性 | 强制保留该还原点后的闪回日志文件 | 闪回日志文件可被自动清理,相关文件被清理后普通还原点失效 |
| 存储开销 | 高 始终需保留闪回日志 | 低 仅记录时间戳或SCN |
| 删除机制 | 只能手动删除 | * 可手动删除 * 关闭闪回功能时,自动删除所有普通还原点 |
| 恢复机制 | * 对于备份与恢复:恢复后始终会删除所有还原点 * 对于全库恢复:取决于恢复到的时间点与目标还原点的创建时间点的先后关系 | 同永久还原点 |
| 其他 | * 强制保留该还原点的归档日志文件 * 通常存在永久还原点时无法关闭全库闪回功能,但执行SWITCHOVER时会强制自动关闭旧主的闪回功能(即使存在永久还原点) | - |
# 创建还原点
在执行高风险操作前,可以创建还原点以标记已知的良好状态,并根据恢复需求选择永久还原点或普通还原点。
# 前提条件
已开启全库闪回功能。
执行相应操作的实例必须处于MOUNT或OPEN阶段。
用户权限要求:
永久还原点:必须使用超级管理员sys用户执行相应操作。
普通还原点:执行相应操作的用户需具备FLASHBACK ANY TABLE及以上权限。
获取V$FLASHBACK_DATABASE_LOG视图里显示的最老时间线(OLDEST_FLASHBACK_SCN、OLDEST_FLASHBACK_TIME),创建还原点指定的时间线不得早于该值。
# 操作步骤
- 以符合权限要求的用户连接并登录数据库。
$ 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>
- 执行CREATE RESTORE POINT语句,创建永久还原点:
-- 方式1:基于SCN创建永久还原点
-- 1. 获取SCN信息,本文已获取当前SCN为例
SELECT CURRENT_SCN FROM V$DATABASE;
CURRENT_SCN
---------------------
725539138356854784
-- 2. 创建永久还原点
CREATE RESTORE POINT G20241201_01 AS OF SCN 725539138356854784 GUARANTEE FLASHBACK DATABASE;
-- 方式2:基于时间戳创建永久还原点
CREATE RESTORE POINT G20241201_02 AS OF TIMESTAMP SYSTIMESTAMP() GUARANTEE FLASHBACK DATABASE;
-- 方式3:直接创建当前时刻的永久还原点
CREATE RESTORE POINT G202412011100 GUARANTEE FLASHBACK DATABASE;
# 查看已有还原点
GV$RESTORE_POINT/V$RESTORE_POINT记录了还原点的信息,在执行全库闪回前可以先通过视图找到需要恢复到哪个目标时间点。
SELECT NAME,SCN,IS_GUARANTEE FROM V$RESTORE_POINT;
NAME SCN IS_GUARANTEE
---------------------------------------------------------------- --------------------- ------------
G20241201_01 725539138356854784 1
G20241201_02 725542053510234112 1
G202412011100 725539138356854784 1
N20241201_01 725539138356854784 0
N20241201_02 725542222390407168 0
N202412011100 725539138356854784 0
IS_GUARANTEE = 1表示该还原点为永久还原点。
IS_GUARANTEE = 0表示该还原点为普通还原点。
# 删除已有还原点
在明确某个还原点无需使用后,可以删除清理相关记录,避免无关信息太多,在执行全库闪回时干扰选择。
对于永久还原点,为避免日志文件堆积导致空间不足,更应定期进行手动删除。
如需关闭全库闪回功能,必须先手动删除所有永久还原点。
# 前提条件
已开启全库闪回功能。
执行相应操作的实例必须处于MOUNT或OPEN阶段。
用户权限要求:
永久还原点:必须使用超级管理员sys用户执行相应操作。
普通还原点:执行相应操作的用户需具备FLASHBACK ANY TABLE及以上权限。
# 操作步骤
以符合权限要求的用户连接并登录数据库。
$ 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>查询还原点信息,获取目标名称。
SELECT NAME,SCN,IS_GUARANTEE FROM V$RESTORE_POINT; NAME SCN IS_GUARANTEE ---------------------------------------------------------------- --------------------- ------------ G20241201_01 725539138356854784 1 G20241201_02 725542053510234112 1 G202412011100 725539138356854784 1 N20241201_01 725539138356854784 0 N20241201_02 725542222390407168 0 N202412011100 725539138356854784 0执行DROP RESTORE POINT语句,删除还原点。
DROP RESTORE POINT N202412011100;

