回放数据库的全部日志或回放日志到指定时间点,恢复数据库的数据。
注意事项
RECOVER DATABASE(不包括 RECOVER DATABASE UNTIL CANCEL)必须在成功执行RESTORE DATABASE恢复数据库文件后执行。如果RECOVER DATABASE未执行成功,则后续启动数据库至OPEN状态会失败。
RECOVER DATABASE UNTIL CANCEL,仅在数据库因日志损坏无法启动时使用,需要在mount状态执行,执行后必须使用ALTER DATABASE RESTLOGS或ALTER DATABASE IGNORE LOGS启动数据库。
语法格式
RECOVER DATABASE [ UNTIL [TIME 'time_string' | CANCEL] ]
参数说明
UNTIL TIME
恢复到time_string时间点。
time_string
设置回放数据库日志至某个时间点。
格式为“YYYY-MM-DD HH:MM:SS”。时间精度可指定到秒级别。
UNTIL CANCEL
恢复到最后一个可用的日志点。主要用于数据库因日志损坏导致无法启动时,忽略损坏日志,强行启动数据库。此操作会丢失一些数据,也可能破坏数据一致性,因此仅在数据库日志损坏并无法启动时才可以使用此命令。
示例
完全恢复数据库(回放全部日志)。
--open状态下全量备份到磁盘。
BACKUP DATABASE FULL FORMAT '?/full0824.bak';
--清空data目录($GSDB_DATA/data)下的数据文件后,在nomount状态下恢复数据库的数据文件。
RESTORE DATABASE FROM '?/full0824.bak';
--完全恢复数据库(回放全部日志)。
RECOVER DATABASE;
将数据库恢复至指定时间点(回放日志至指定时间点)。
--OPEN状态下全量备份到磁盘。
BACKUP DATABASE FULL FORMAT '?/fullbackup01.bak';
--清空data目录($GSDB_DATA/data)下的数据文件后,在nomount状态下恢复数据库的数据文件。
RESTORE DATABASE FROM '?/fullbackup01.bak';
--将数据库恢复至指定时间点(回放日志至指定时间点)。
RECOVER DATABASE UNTIL TIME '2018-06-29 15:28:54';
恢复数据库直到最后一个可用的日志点,忽略后面损坏的日志,在 mount 状态下执行。