一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第10天,点击查看活动详情。
📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程😜😜😜
擅长Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
摘要:本次是Oracle Rman数据库迁移,同平台同版本迁移
实验环境:同平台同版本迁移
操作系统:Red Hat Enterprise Linux Server release 6.4 (Santiago)
数据库版本:Linux: Version 11.2.0.4.0 - Production
目标库版本:Linux: Version 11.2.0.4.0 - Production
1.环境检查
1.1 确认是否开归档
SYS@PROD> archive log list
1.2 创建测试表
SYS@PROD> conn scott/tiger
SCOTT@PROD> select * from emp;
SCOTT@PROD> create table emp_test as select * from emp;
2.备份准备
2.1 全库备份
##创建备份所需的目录
[oracle@jeames ~]$ mkdir rmanback
##备份数据文件
[oracle@jeames ~]$ rman target /
##切日志,管理员权限操作
SYS@PROD> alter system switch logfile;
##备份数据文件
RMAN> backup database format '/home/oracle/rmanback/data_%U.dbf';
备份控制文件
RMAN> backup current controlfile format '/home/oracle/rmanback/control_%f.dbf';
2.2 复制参数文件
源库查看参数文件路径
SYS@PROD> show parameter spfile
位置:/u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfilePROD.ora
##确认目标库数据文件
SYS@EMREP> show parameter spfile
/u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfileEMREP.ora
##确认目标库是否有源库参数文件的路径,没有则需创建
[oracle@bk ~]$ cd /u01/app/oracle/product/11.2.0/dbhome_1/dbs
##目标库关库
SYS@EMREP> shut immediate
##删除目标库参数文件
[oracle@bk ~]$ cd $ORACLE_HOME/dbs
[oracle@bk dbs]$ rm init.ora spfileEMREP.ora
源库复制参数文件到目标库
scp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/init.ora
192.168.6.112:/u01/app/oracle/product/11.2.0/dbhome_1/dbs
scp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfilePROD.ora
192.168.6.112:/u01/app/oracle/product/11.2.0/dbhome_1/dbs
目标库确认
源库确认数据文件路径
SYS@PROD> select name from v$datafile;
查看目标库参数中文件目录,创建相应的目录
[oracle@bk dbs]$ cat init.ora
##以下目标库中操作
[oracle@bk ~]$ mkdir -p /u01/app/oracle/admin/orcl/adump
[oracle@bk ~]$ mkdir -p /u01/app/oracle/oradata/PROD
[oracle@bk ~]$ mkdir -p /u01/app/oracle/flash_recovery_area
删除目标库对应的数据文件及目录
[oracle@bk ~]$ rm /u01/app/oracle/admin/EMREP
[oracle@bk ~]$ rm -rf /u01/app/oracle/oradata/EMREP
2.3 环境变量修改
源库环境变量如下:
[oracle@jeames ~]$ more .bash_profile
修改目标库环境变量
[oracle@bk ~]$ vi .bash_profile
[oracle@bk ~]$ source .bash_profile
[oracle@bk ~]$ more .bash_profile
3、复制归档文件
3.1 查看归档文件路径
源库中做如下操作:
[oracle@jeames ~]$ sqlplus / as sysdba
SYS@PROD> select name from v$archived_log order by 1;
3.2 复制归档文件
目标库中删除归档日志:
[oracle@bk dbs]$ rm -rf arch1_6_946762872.dbf
源库做如下操作:
[oracle@jeames ~]$ scp -r /u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch* 192.168.6.112:/u01/app/oracle/product/11.2.0/dbhome_1/dbs
[oracle@bk dbs]$ ll
3.3 复制所有备份文件
[oracle@bk ~]$ mkdir -p /home/oracle/rmanback
[oracle@jeames ~]$ cd /home/oracle/rmanback
[oracle@jeames rmanback]$ scp * 192.168.6.112:/home/oracle/rmanback/
[oracle@bk rmanback]$ ll
4、备份恢复
4.1 恢复控制文件
[oracle@bk ~]$ sqlplus / as sysdba
SYS@PROD> startup nomount
注:启动到nomount状态,先确认参数文件里目录是否都存在,查看参数文件可以使用
strings spfilePROD.ora
[oracle@bk ~]$ rman target /
RMAN> restore controlfile from '/home/oracle/rmanback/control_0.dbf';
4.2 恢复数据文件
RMAN> sql 'alter database mount';
RMAN> restore database;
RMAN> crosscheck archivelog all;
--检查控制文件和实际物理文件的差别
将归档日志catalog
RMAN> catalog archivelog '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_11_946762783.dbf';
RMAN> catalog archivelog '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_12_946762783.dbf';
RMAN> catalog archivelog '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_13_946762783.dbf';
RMAN> crosscheck archivelog all;
RMAN> recover database;
此时发现报错,则通过以下命令执行
RMAN> recover database until sequence 14;
4.3 RESETLOGS启库
RMAN> sql 'alter database open RESETLOGS';
相关推荐阅读: MySQL8.0新特性抢先看,性能又双叒提升了
MySQL武林秘籍,SQL学废必过考试
Linux7.6源码安装Mysql8
Oracle巡检脚本大全,服务器可直接部署
MySQL root密码忘记找回妙招
监控神器Zabbix,从部署到应用
Oracle监听日志清除
大家可以点赞、收藏、关注、评论我啦 、有数据库相关的问题随时联系我或交流哟~!