$ rman target / @rman.cmd
大约需要3-4个小时,才能将数据还原完成,完成后如下
发现有错误,不过没关系,是因为还原脚本内写了”recover database” 的命令,这是自动恢复命令,但实际上是要求手动恢复的,所以会报错。现在还原已经成功,接下来,开始恢复数据。
(说明:还原成功后,绝大部份的数据已经OK了,但还有一点点在归档
恢复数据,是要求恢复到备份后的某个时间点,<因为每天晚上数据库RMAN备份后,数据库是还是运行的,还是不停的有数据生成,所以会不断的产生归档
备份控制文件controlfile_20110906_s1154_p1 的时间点是:2011-09-06 00:00:00
再看一看,稍后一点的归档
稍后一点的归档
好了,知道了恢复的时间点,现在开始恢复了,操作命令如下:
$ sqlplus /nolog
Sql> connect /as sysdba
Sql> recover database until time '2011-09-06 00:00:00' using backup controlfile;
注意了,恢复命令要求将归档日志1_3524_736991136.dbf 放入到指定的归档日志目录/ebs10/oracle/prod/archive 内。所以需要再开一个DOS窗口,进入拷贝的操作。
归档日志1_3524_736991136.dbf 拷贝到指定的归档日志目录/ebs10/oracle/prod/archive 内了
回到第一个DOS窗口,输入 auto ,再按回车,如下图:
如上图所示,恢复成功。现在需要打开数据库(数据还原恢复后的打开数据库命令要加一个参数resetlogs, 正常运行的数据库,不能使用此参数)
Sql > alter database open resetlogs;
Sql> shutdown immediate;
再一次打开数据库(注意:只做到mount)
Sql> startup mount;
输入更改数据库SID的命令(因为当前机器是test2环境,而数据还原后的环境是prod的,所以要改SID )
Sql> host nid target=sys/manager dbname=test2
请输入 Y
注意,输入 Y 后,命令将开始更改SID为 test2 ,但好像命令有BUG ,运行完后,不会退出,所以需要手动干预,按Ctrl+C 或都 Ctrl+D 退出。要多退出,直到出现操作系统命令符号 $ ,然后再 sqlplus进入
使用shutdown immediate 关闭数据库。
$ sqlplus /nolog
Sql> connect /as sysdba
Sql> shutdown immediate;
Su到 oradev 或都 export ORACLE_SID=test2 ,恢复到test2机器oradev用户的默认环境变量。
密码:oracle
$ su - oradev
export ORACLE_SID=test2
打开数据库:
$ sqlplus /nolog
Sql> connect /as sysdba
Sql> startup mount
Sql> alter database open resetlogs;
OK ,在test2机器的数据库正常启动了,数据是最新的PROD环境数据,并且已成功更改了SID为test2了。
现在启动监听器
$ lsnrctl start test2
数据库的还原恢复终于搞定了,这是所有过程中最复杂最辛苦的,终于完了。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15187685/viewspace-760082/ ,如需转载,请注明出处,否则将追究法律责任。