环境说明 OS:hp unix 11.11 数据库:ORACLE 9.2
迁移方案
1、概述
使用生产库的 rman 备份,在新存储上进行还原,再利用备份后的归档日志、联机日志进行恢复,最终达到数
据的同步。
2、迁移前备份
1)rman备份数据库
rman target /
backup database format '/backup/rman/full_%d_%T_%s' plus archivelog format '/backup/rman/arch_%d_%T_%s' delete all
input;
backup current controlfile format '/backup/rman/controlfile_%d_%T_%s';
backup spfile format '/backup/rman/spfile_%d_%T_%s';
2)拷贝相关文件
在数据库迁移前,需要拷贝
$ORACLE_HOME/dbs/spfile{SID}.ora
$ORACLE_HOME/dbs/orapw{SID}
$ORACLE_HOME/network/admin/tnsnames.ora
$ORACLE_HOME/network/admin/listener.ora
$ORACLE_HOME/network/admin/sqlnet.ora
到新主机的对应目录下 此外还包括归档文件及目录,还有环境变量
3、还原
将备份文件传输到新主机相同的目录后,就可以还原了。
比如备份后的文件如下:
full_NETDB_20101001_6192
full_NETDB_20101001_6193
arch_NETDB_20101002_6194
arch_NETDB_20101002_6195
controlfile_NETDB_20101010_5696
spfile_NETDB_20101002_6195
1)使用临时的参数文件nomount数据库
startup nomount
2)还原密码文件
rman target /
RMAN> restore spfile to ‘/tmp/spfile.ora’ from '/bak/ spfile_NETDB_20101002_6195';
使用新的密码文件加载数据库
3)还原控制文件
rman target /
RMAN> restore controlfile from '/bak/ controlfile_NETDB_20101010_5696';
加载数据库
alter database mount;
4)还原数据文件
RMAN> restore database;
5)还原归档日志
RMAN> RMAN> run{
set archivelog destination to '/backup/rman';
restore archivelog all;
}
4、恢复
因为在数据库 rman 备份后,生产仍然进行,因此在确定恢复后,关闭原生产库,将备份后产生的归档日志连同联
机日志拷贝到新主机上。在新的控制文件上注册归档日志:
Catalog archivelog ‘archivelog filename’;
RMAN> recover database;
注意:在恢复过程中,有时需要指定归档日志与原生产库的联机日志的路径进行恢复。
5、打开数据库
alter database open resetlogs;
6、数据完整性验证
上述恢复方法,已经恢复到数据库clean shutdown时刻。
可以由应用确认数据的准确性。
总结与建议
1、 如果数据库较小(比如50G 以内),可以采用拷贝数据库文件的方式进行迁移。
需要拷贝的文件为如下SQL的返回值:
select name from v$controlfile;
select name from v$datafile;
select name from v$tempfile;
select member from v$logfile;
拷贝后的目标路径需要与原生产库文件路径一致,否则需要在数据库 mount阶段,使用alter database rename file
‘oldfile’ to ‘newfile’命令修改文件的路径。