背景 : wz大学的服务器从a服务器迁徙到b服务器,a服务器环境是tomcat +
Oracle的环境。
Oracle数据大约80G,如果使用exp和imp的方式太过麻烦,并且由于服务器久远,没人交接,Oracle的数据又很杂乱,所以使用rman 比较保险些。
Rman优点 :略 (网上很多)
要求 两服务器版本必须一致,且安装路径最好一样。备份的时候要注意,只有在归档模式下的备份才是有效备份,非归档模式下,冷备份是有效备份,热备份是无效的,所以要打开归档模式。
查看是否处于归档模式
select log_mode from v$database;
archive log list;
如果没有的话
启用归档模式
shutdown immediate
startup mount;
alter database archivelog;
alter database open;
archive log list;(验证有么有成功)
一 原服务器备份数据库
1,查看数据库的实例名和DBID
Rman target / 可以看到dbid 原数据库dbid(记录下来,后面要用)
2,进行全备份
backup AS COMPRESSED BACKUPSET database
include current controlfile format'D:/oracle/backup/db_%d_%T_%s'
plus archivelog format'D:/oracle/backup/arch_%d_%T_%s';
另外使用rman的时候最好 打开日志 方便记录有无错误
3,将备份文件复制异机上 备份文件夹 最好和原库一样的路径
二 目标服务器上创建数据库
1,创建实例名相同,数据库文件的位置相同的数据库。
2,关闭实例,启动到nomount状态。Sql>startup nomount;
3,设置dbid和原数据库dbid相同
rman target/
RMAN> set dbid 2060124769
4,恢复控制文件
RMAN> restore controlfile from 'D:\oracle\db_DB3_20190310_7';
日志如下 说明成功:
5,mount数据库
RMAN> alter database mount;
6,恢复归档日志
RMAN> restore archivelog all;
查看日志成功:
7,恢复数据库文件(因为目标数据库和原数据库的数据文件位置相同,所以简单些)如果不同的话根据报错提示修改到相同
RMAN> restore database;
查看日志成功:
8,恢复数据库
RMAN> recover database;
如果报错:
RMAN-03002: recover 命令 (在 03/11/2019 14:55:27 上) 失败
ORA-19698:
E:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG 来自不同数据库:id=15301
61843, db_name=ORCL
删除了原库相应的redolog重做日志。然后执行recover database
还会报错
RMAN-03002: recover 命令 (在 03/11/2019 15:19:19 上) 失败
RMAN-06054: 介质恢复正在请求未知的线程 1 序列 13084 的归档日志以及起始SCN 20117
那是正确的,因为我们创建的热备并不是一致性备份,所以是不完全恢复,不想看到这个错误可以setuntil scn recover database;,如果想要一模一样的恢复,则原数据库需要shutdown,再全备。
9,启动数据库
alter database open resetlogs;
启动成功,说明没有问题,如果还有报错,根据提示进行排查。