最近测试一个数据迁移的方法,其中主要涉及ENDIAN_FORMAT的问题。
使用CONVERT DATAFILE(只能在target平台上操作)对不同os平台下的dbf文件进行转换。
之所以使用CONVERT DATAFILE,是考虑到如果os异常但可启动、oracle无法正常使用,此时使用ftp将dbf传输到另一个os下,进行直接数据库迁移,暂时将数据库挂起使用。
有以下两种情况
一、两个os平台都为ENDIAN_FORMAT都为little
source:windows,ENDIAN_FORMAT=little,oracle=10.2.0.1.0
target:linux,ENDIAN_FORMAT=little,oracle=10.2.0.1.0
或
source:linux,ENDIAN_FORMAT=little,oracle=10.2.0.1.0
target:windows,ENDIAN_FORMAT=little,oracle=10.2.0.1.0
实际测试过,将windows上的dbf文件拷贝至linux下,可以直接挂载使用
或CONVERT DATAFILE每个dbf文件包括system01.dbf和undotbs01.dbf,没有任何报错,可实际转换dbf文件
二、两个os平台ENDIAN_FORMAT不同
source:aix,ENDIAN_FORMAT=big,oracle=10.2.0.1.0
target:linux,ENDIAN_FORMAT=little,oracle=10.2.0.1.0
按操作资料所说,CONVERT DATAFILE可进行不同ENDIAN_FORMAT的转换
但却出现奇怪的问题:
1、CONVERT DATAFILE对非系统数据文件进行操作时,正常,未出现错误记录如下:RMAN> CONVERT DATAFILE
2> '/home/oracle/SRP_DATA090118/1/users01.dbf'
3> FROM PLATFORM="AIX-Based Systems (64-bit)"
4> TO PLATFORM="Linux IA (32-bit)"
5> DB_FILE_NAME_CONVERT=
6> "/home/oracle/SRP_DATA090118/1/"
7> "/home/oracle/SRP_DATA090118/convert/";
Starting backup at 06-FEB-09
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile conversion
input filename=/home/oracle/SRP_DATA090118/1/users01.dbf
converted datafile=/home/oracle/SRP_DATA090118/convert/users01.dbf
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:08
Finished backup at 06-FEB-09
2、CONVERT DATAFILE对系统数据文件(system01.dbf和undotbs01.dbf)进行操作时,出现错误
记录如下:
RMAN> CONVERT DATAFILE
2> '/home/oracle/SRP_DATA090118/1/system01.dbf'
3> FROM PLATFORM="AIX-Based Systems (64-bit)"
4> TO PLATFORM="Linux IA (32-bit)"
5> DB_FILE_NAME_CONVERT=
6> "/home/oracle/SRP_DATA090118/1
7> "/home/oracle/SRP_DATA090118/convert/";
Starting backup at 03-FEB-09
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile conversion
input filename=/home/oracle/SRP_DATA090118/1/system01.dbf
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 02/03/2009 17:07:30ORA-00600: internal error code, arguments: [ktu_format_nr-1], [0], [], [], [], [], [], []
RMAN> CONVERT DATAFILE
2> '/home/oracle/SRP_DATA090118/1/undotbs01.dbf'
3> FROM PLATFORM="AIX-Based Systems (64-bit)"
4> TO PLATFORM="Linux IA (32-bit)"
5> DB_FILE_NAME_CONVERT=
6> "/home/oracle/SRP_DATA090118/1/"
7> "/home/oracle/SRP_DATA090118/convert/";
Starting backup at 03-FEB-09
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile conversion
input filename=/home/oracle/SRP_DATA090118/1/undotbs01.dbf
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 02/03/2009 17:09:23
ORA-00600: internal error code, arguments: [ktu_format_nr-2], [0], [], [], [], [], [], []
目前的分析如下:
1)google arguments
由于买oracle时metalink使用时间只有一年,早过期,只好上google
通过对其中的arguments,[ktu_format_nr-1]和[ktu_format_nr-2]查询,在google上很少有相关记录,只有一个老外也出现类似情况,但没有人解答
http://www.unix.com/unix-linux-applications/66128-migrating-oracle-big-endian-little-endian-platorm.html
2)考虑是oracle bug的原因
下载最新oracle 11g进行CONVERT DATAFILE测试
source:aix,ENDIAN_FORMAT=big,oracle=10.2.0.1.0
target:linux,ENDIAN_FORMAT=little,oracle=11.1.0.6.0
测试结果令人失望,同样报错,arguments一样
目前一直无法确认是何种原因,arguments也无法查阅相关信息,只是大概了解到ktu可能是Kernel Transaction Undo意思,请教各位高人这到底是啥原因导致此问题???
[本帖最后由 harpym123 于 2009-2-6 15:29 编辑]