客户新买了oda x6-2,想替换原来的旧数据库服务器。原来的环境安装的是oracle11.2.0.4的单机版本dataguard,新的一体机安装的是oracle11.2.0.4。对于客户来说,想通过最短的时间来实现切换。最好的办法就是通过rman来实现,追加归档,现在我们把具体的操作过程记录下来。
1、安装oda环境
oracle的一体机的安装相当简单,完全可以通过一键方式来实现。上传专门为oda设计编译的db.zip和grid.zip,通过自带的工具便可安装,这项工作主要由oda的工程师完成
配置ip这些都不用操心,只要给出网段,在安装过程中,可以自动配置!
在安装的oda机器上,进行以下
public ip : 10.10.10.131 erptest1-pub
10.10.10.141 erptest2-pub
私网ip是由oda安装过程中自动生成的,这个我们不用管了
vip ip: 10.10.10.132 erptest1-vip
10.10.10.142 erptest2-vip
scan ip: 10.10.10.200 nctest-scan
一键安装的oda,建了三个dg:data,redo,reco,其中redo是建在固态硬盘上的!
2、配置备份目录
oda上安装的ACFS系统,共享存储可以直接当普通文件系统用
创建备份目录
[root@oldtest1 ~]# mkdir -p /backup
[root@oldtest1 ~]# chown -R oracle:oinstall /backup
3、备份数据库到目录
备份建议在晚上业务少的时候做,备份前要记录开始时间,还要多切换几次归档
脚本如下:erpbackup.sh
run {
allocate channel c1 type disk maxpiecesize = 20G;
allocate channel c2 type disk maxpiecesize = 20G;
backup incremental level 0 database format '/backup/%d_DF_%T_%s_%p.bak'
plus archivelog
format '/backup/%d_AF_%T_%s_%p.log' delete all input;
backup current controlfile format '/backup/%d_CTL_%T_%s_%p.bak';
release channel c1;
release channel c2;
}
[oracle@oldtest1 ~]# chmod +x erpbackup.sh
[oracle@oldtest1 ~]# nohup ./erpbackup.sh > erpbackup.sh.out &
备份时间大约一个小时。
4、新的oda机器上进行还原
--准备工作
通过SCP命令将rman备份传输到oda上
这里注意:我们可以按部就班一步步恢复spfile,controlfile,datafile等,然后将数据库加入集群,创建监听。
但是我用的是比较取巧的方法,就是先在oda上创建一个和原数据库名称一样的数据库,然后再手工删除里面的控制文件,日志文件和数据文件,再进行恢复,这样就避免了将迁移数据库加入集群和创建监听的麻烦。
=============================================
SQL> create pfile = '/u01/backup/oldspfile.ora' from spfile;
or create spfile='+DATA/dg1/spfiledg1.ora' from pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initdg11.ora';
注意:
修改参数:*.remote_listener,把里面的host部份,修改成当前的host部份。实例名保持与原机相同!
创建审计目录,这个在参数文件中有,如果没创建,无法启动(两个节点都要创建)
--还原控制文件
整个恢复过程,在一台机器上做就行了
[oracle@erptest1 ~]# export ORACLE_SID=orcl1
[oracle@erptest1 ~]# rman target /
RMAN> startup nomount pfile='/u01/backup/oldspfile.ora';
把数据库启动到nomount状态
==============================================
RMAN>
4.1--恢复数据库文件
restore controlfile from '/backup/DG1_CTL_20180314_40_1.bak';
还原控制文件后,可以把数据库启动mount
SQL> alter database mount;
脚本如下:restoredf.sh
rman target / <run {
set newname for datafile 1 to '+data';
set newname for datafile 2 to '+data';
set newname for datafile 3 to '+data';
set newname for datafile 4 to '+data';
set newname for tempfile 1 to '+data';
restore database ;
switch datafile all;
switch tempfile all;
}
exit
EOF
[oracle@erptest1 ~]# chmod +x restoredf.sh
[oracle@erptest1 ~]# nohup ./restoredf.sh > restoredf.sh.out &
还原时间,大概使用了3个小时.
注意等到停机切换窗口后:
4.2--恢复归档日志
检查需要恢复的归档
SQL> select THREAD#,min(SEQUENCE#) minseq,max(SEQUENCE#) maxseq from v$archived_log where COMPLETION_TIME > to_date('2014-05-24 11:00:00','yyyy-mm-dd hh24:mi:ss') group by THREAD#;
THREAD# MINSEQ MAXSEQ
---------- ---------- ----------
1 777 778
2 605 607
方法一:直接把那些归档拷贝到和原库(spfile里记录的归档目录)一样的目录,然后执行如下的操作:
rman>alter database mount
rman>run{
restore database;
recover database;
}
rman>alter database open resetlogs;
rman>shutdown immediate;
rman>startup;
最后要检查下ps –ef |grep ora_实例进程数,如果进程过多,不用过于关注,只是数据库没有完全恢复的原因
&#