代码改变世界

小知识:RMAN基于某个具体时间点的恢复示例

2022-01-15 01:03  AlfredZhao  阅读(89)  评论(0编辑  收藏  举报

最近帮忙基于某个时间点恢复一个库,说是备份和归档是全的。
好多年没做过这类事情了,不过这算是最基本的DBA技能,下面给出RMAN基于某个具体时间点的恢复示例脚本:

run{
allocate channel c1 type disk;
allocate channel c2 type disk;

sql "alter session set nls_date_format = ''yyyy-mm-dd hh24:mi:ss''";
set newname for database to '/public/Others/backup/db_%U.dbf';
restore database until time '2022-01-15 00:31:18';
switch datafile all;
recover database until time '2022-01-15 00:31:18';

release channel c1;
release channel c2;
}

注意/说明:

  • nls_date_format的格式设置;
  • 如果不确认时间是否需要,恢复完可以先alter database open read only 验证是否数据OK,如果有问题还可以再调整时间recover;
  • switch datafile all 是因为从rac的备份恢复到单实例,需要切换到正确的数据文件路径和名字;
  • set newname for database to 'xxx/db_%U.dbf',必须要有%U这类区分;
  • 这里只是示例,实际使用分配通道会更多,通常也要将脚本放到后台执行。