Oracle基于RMAN的异构迁移测试
【摘要】 说明:
1.本文仅是闲暇时间,所做的一次迁移尝试,没有理论依据,不做实际项目实施参考,以此记录以备后查;
2.先说结论,此次通过RMAN备份,进行跨OS平台迁的移测试失败~_~;
3.正确的操作方式,参考本人的另一篇实践手记:https://bbs.huaweicloud.com/blogs/242955
-
本文仅是闲暇时间,所做的一次迁移尝试,没有理论依据,不做实际项目实施参考,以此记录以备后查;
-
先说结论,此次通过RMAN备份,进行跨OS平台迁的移测试失败~_~;
-
正确的操作方式,参考本人的另一篇实践手记:https://bbs.huaweicloud.com/blogs/242955
环境说明:
源主机:操作系统:Redhat Enterprise Linux Server 6.5
数据库:Oracle 11G Release 11.2.0.1.0 RAC
存储方式:ASM(Auto Storage Manager)
目标主机:操作系统:Windows Server 2008 R2 SP1
数据库:Oracle 11G Release 11.2.0.3.0
1.Linux平台上的数据库的备份
--备份脚本如下:
run {
allocate channel t1 type disk;
backup incremental level 0
skip inaccessible
format '/oracle/orabak/orcl/data/bak_%s_%p_%T_%d'
database plus archivelog
format '/oracle/orabak/orcl/arch/arc_%s_%p_%t_%d'
delete input;
delete obsolete;
release channel t1;
}
2.复制备份集到目标主机
--可以通过linux的mount去挂载Windows服务器的共享目录,然后复制到Windows平台:
mount -t cifs -o username='admin',password='password' 192.168.10.52:/ftp_share /media/cifs
cd /media/cifs
cp -r /oracle/orabak/orcl ./
3.目标端数据库恢复
3.1.在目标机器上使用dbca创建一个数据库,使用和源数据库相同的SID:
dbca
创建完成后删除该数据库的相应数据文件:
sqlplus "/as sysdba"
SQL> shutdown immediate
del orcl/datafile
del database/spfile
C:\Users\Administrator>net start oracleserviceorcl
请求的服务已经启动。
3.2.恢复参数文件:
--使用RMAN启动数据库到nomount状态下:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ --此处报错,错误信息如下:
+ RMAN> startup nomount;
+
+ --启动失败: ORA-01078: failure in processing system parameters
+ LRM-00109: ???????????????? 'D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\INITORCL.ORA'
+
+ --在没有参数文件的情况下启动 Oracle 实例以检索 spfile
+ RMAN-00571: ===========================================================
+ RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
+ RMAN-00571: ===========================================================
+ RMAN-03002: startup 命令 (在 10/29/2019 16:56:15 上) 失败
+ RMAN-04014: 启动失败: ORA-04031: unable to allocate 1048608 bytes of shared memory ("shared pool","unknown object","sga heap(1,0)","row cache")
+
+ --这个错误,这是因为数据库的BUG,解决方法如下:
+ set ORA_RMAN_SGA_TARGET=350
+
+ --再次在RMAN里启动数据库到nomount状态下成功,然后尝试恢复spfile:
+ RMAN> restore spfile from 'd:\orcl\data\back_8_1_20191027_ORCL';
+ 通道 ORA_DISK_1: 从 AUTOBACKUP 还原 SPFILE 已完成
+ 完成 restore 于 29-10月-19
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3.3.修改参数文件中相应的RAC信息后,用新pfile启动数据库:
--先根据之前恢复出来的spfile创建一个pfile,然后再修改:
SQL> create pfile from spfile;
--这是改完之后的pfile文件:
*.audit_file_dest='D:\app\Administrator\admin\orcl\adump'
*.audit_trail='db'
*.cluster_database=false
*.compatible='11.2.0.0.0'
*.control_files='D:\app\oradata\orcl\control01.ctl','D:\app\Administrator\fast_recovery_area\orcl\control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest_size=8589934592
*.log_archive_format='%t_%s_%r.dbf'
*.memory_target=3300917248
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='exclusive'
--修改pfile后,再用pfile将数据库启动到nomount状态下:
SQL> shutdown immediate
SQL> startup nomount pfile='D:\app\Administrator\product\11.2.0\dbhome_1\database\INITorcl.ORA'
3.4.恢复控制文件
--使用以下命令恢复控制文件:
RMAN> restore controlfile from 'd:\orcl\data\back_8_1_20191027_ORCL';
输出文件名=D:\APP\ORADATA\ORCL\CONTROL01.CTL
输出文件名=D:\APP\ADMINISTRATOR\FAST_RECOVERY_AREA\ORCL\CONTROL02.CTL
完成 restore 于 29-10月-19
--改变数据库的状态到mount状态:
RMAN> alter database mount;
数据库已装载
释放的通道: ORA_DISK_1
3.5.修改原数据库的数据文件、重做日志、临时文件的路径:
--查看原数据库文件路径信息:
SQL> col name format a50;
SQL> col file# format 999999;
SQL> set linesize 120;
SQL> select file#,name from v$datafile;
FILE# NAME
------- --------------------------------------------
1 +DATA/orcl/datafile/system.256.893622071
2 +DATA/orcl/datafile/sysaux.257.893622071
3 +DATA/orcl/datafile/undotbs1.258.893622073
4 +DATA/orcl/datafile/users.259.893622073
5 +DATA/orcl/datafile/undotbs2.264.893622239
SQL> select member from v$logfile;
MEMBER
----------------------------------------------
+DATA/orcl/onlinelog/group_2.262.893622155
+FRA/orcl/onlinelog/group_2.258.893622157
+DATA/orcl/onlinelog/group_1.261.893622153
+FRA/orcl/onlinelog/group_1.257.893622155
+DATA/orcl/onlinelog/group_3.265.893622295
+FRA/orcl/onlinelog/group_3.259.893622295
+DATA/orcl/onlinelog/group_4.266.893622297
+FRA/orcl/onlinelog/group_4.260.893622297
已选择8行。
SQL> select name from v$tempfile;
NAME
----------------------------------------------
+DATA/orcl/tempfile/temp.263.893622161
--以新命名的路径恢复数据文件:
run{
set until sequence 57 thread 1;
set newname for datafile 1 to 'D:\app\oradata\orcl\system01.dbf';
set newname for datafile 2 to 'D:\app\oradata\orcl\sysaux01.dbf';
set newname for datafile 3 to 'D:\app\oradata\orcl\undotbs1.dbf';
set newname for datafile 4 to 'D:\app\oradata\orcl\users01.dbf';
set newname for datafile 5 to 'D:\app\oradata\orcl\undotbs02.dbf';
set newname for tempfile 1 to 'D:\app\oradata\orcl\temp01.dbf';
restore database from 'D:\orcl\data\back_7_1_20191027_ORCL';
switch datafile all;
}
--此处报错,错误信息如下:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
启动 restore 于 30-10月-19
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=96 设备类型=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: restore 命令 (在 10/30/2019 09:34:37 上) 失败
RMAN-06509: 只有 SPFILE 或控制文件才能从 AUTOBACKUP 还原
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Google查了一下,大致确认是数据在不同OS下存储的格式问题,RMAN的备份,是无法直接在异构OS平台下直接使用的;
在做了一些尝试,无法解决这个问题,最后还是放弃了直接使用RMAN备份,进行跨平台恢复的方法了;
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)