作者:IT邦德 中国DBA联盟(ACDU)成员,目前从事DBA及程序编程(Web\java\Python)工作,主要服务于生产制造 现拥有 Oracle 11g OCP/OCM、Mysql、Oceanbase(OBCA)认证 分布式TBase\TDSQL数据库、国产达梦数据库以及红帽子认证 从业8年DBA工作,在数据库领域有丰富的经验 B站主播Oracle、Mysql、PG实战课程,请搜索:jeames007 微信:jem_db QQ交流群:168797397
复制
说明:
实验环境:同平台同版本迁移 操作系统: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 整理的迁移文档,分享给大家
复制
详细操作过程请到B站观看(搜索jeames007)
https://www.bilibili.com/video/BV1eX4y1F73J/
1、 环境检查
1.1 确认是否开归档
SYS@PROD> archive log list ##两个库都要看,如果是归档模式则跳过以下步骤(开归档的方法) SYS@PROD> shutdown immediate; SYS@PROD> startup mount; SYS@PROD> alter database archivelog; SYS@PROD> archive log list SYS@PROD> alter database open; SYS@PROD> select status from v$instance;
复制
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';
复制
5、恢复后确认
本文如有错误或不完善的地方请大家多多指正,请关注公众号:IT邦德
留言微信:jem_db 或 QQ:2243967774 皆可,您的批评指正是我写作的最大动力!
大家多多点赞,转发,谢谢
最后修改时间:2021-08-20 12:18:03
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
应该叫异机rman恢复。这样恢复出来的库dbid一样,不可以同时注册rman catalog
3年前

评论
很实用。
3年前

评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1310次阅读
2025-03-13 11:40:53
Oracle RAC ASM 磁盘组满了,无法扩容怎么在线处理?
Lucifer三思而后行
788次阅读
2025-03-17 11:33:53
Oracle+Deepseek+Dify 实现数据库数据实时分析
bicewow
716次阅读
2025-03-06 09:41:49
【ORACLE】ORACLE19C在19.13版本前的一个严重BUG-24761824
DarkAthena
573次阅读
2025-03-04 14:33:31
Oracle避坑指南|同名表导出难题:如何精准排除指定用户下的表?
szrsu
538次阅读
2025-03-05 00:42:34
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
462次阅读
2025-03-13 14:38:19
Ogg23ai高手必看-MySQL Innodb Cluster跟oracle的亲密接触
曹海峰
459次阅读
2025-03-04 21:56:13
【ORACLE】char类型和sql优化器发生的“错误”反应
DarkAthena
408次阅读
2025-03-04 23:05:01
Oracle 如何修改 db_unique_name?强迫症福音!
Lucifer三思而后行
350次阅读
2025-03-12 21:27:56
Oracle DataGuard高可用性解决方案详解
孙莹
312次阅读
2025-03-26 23:27:33