测试环境:
源库:Windows 7 64bit+Oracle Database 11.2.0.3 32bit
目标库:Windows 2003 64bit+Oracle Database 11.2.0.3 64bit
1.首先尝试直接将32bit的数据库拷贝到64bit数据库环境下启动,告警日志出现大量如下错误:
Tue Mar 26 13:21:31 2013
Errors in file C:\APP\diag\rdbms\orcl\orcl\trace\orcl_j002_1748.trc:
ORA-12012: error on auto execute of job "SYS"."RSE$CLEAN_RECOVERABLE_SCRIPT"
ORA-06553: PLS-801: internal error [56327]
Errors in file C:\APP\diag\rdbms\orcl\orcl\trace\orcl_cjq0_3000.trc:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-06544: PL/SQL: 内部错误, 参数: [56327], [], [], [], [], [], [], []
ORA-06553: PLS-801: 内部错误 [56327]
Tue Mar 26 13:21:36 2013
Errors in file C:\APP\diag\rdbms\orcl\orcl\trace\orcl_q001_1096.trc:
ORA-06553: PLS-801: 内部错误 [56327]
ORA-06553: PLS-801: 内部错误 [56327]
Tue Mar 26 13:21:41 2013
Errors in file C:\APP\diag\rdbms\orcl\orcl\trace\orcl_cjq0_3000.trc:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-06544: PL/SQL: 内部错误, 参数: [56327], [], [], [], [], [], [], []
ORA-06553: PLS-801: 内部错误 [56327]
Errors in file C:\APP\diag\rdbms\orcl\orcl\trace\orcl_cjq0_3000.trc:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-06544: PL/SQL: 内部错误, 参数: [56327], [], [], [], [], [], [], []
ORA-06553: PLS-801: 内部错误 [56327]
Tue Mar 26 13:21:51 2013
Errors in file C:\APP\diag\rdbms\orcl\orcl\trace\orcl_cjq0_3000.trc:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-06544: PL/SQL: 内部错误, 参数: [56327], [], [], [], [], [], [], []
ORA-06553: PLS-801: 内部错误 [56327]
Tue Mar 26 13:21:53 2013
Errors in file C:\APP\diag\rdbms\orcl\orcl\trace\orcl_mmon_2868.trc:
ORA-06553: PLS-801: 内部错误 [56327]
Errors in file C:\APP\diag\rdbms\orcl\orcl\trace\orcl_mmon_2868.trc:
ORA-06553: PLS-801: 内部错误 [56327]
Errors in file C:\APP\diag\rdbms\orcl\orcl\trace\orcl_cjq0_3000.trc:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-06544: PL/SQL: 内部错误, 参数: [56327], [], [], [], [], [], [], []
ORA-06553: PLS-801: 内部错误 [56327]
Tue Mar 26 13:22:01 2013
Errors in file C:\APP\diag\rdbms\orcl\orcl\trace\orcl_cjq0_3000.trc:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-06544: PL/SQL: 内部错误, 参数: [56327], [], [], [], [], [], [], []
ORA-06553: PLS-801: 内部错误 [56327]
Errors in file C:\APP\diag\rdbms\orcl\orcl\trace\orcl_cjq0_3000.trc:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-06544: PL/SQL: 内部错误, 参数: [56327], [], [], [], [], [], [], []
ORA-06553: PLS-801: 内部错误 [56327]
Oracle并未对在64位的操作系统上安装32bit的数据库软件进行认证;而且从实践的角度来讲,32bit的软件无法有效利用服务器资源,数据库告警日志中也会出现大量错误信息。
2.32bit和64bit数据库的wordsize不同,需要执行以下步骤完成wordsize的转换:
SQL> startup upgrade
SQL> @?/rdbms/admin/utlirp.sql
SQL> shutdown immediate
SQL> startup
SQL> @?/rdbms/admin/utlrp.sql (这步执行时间较长,且可能报错,如下所示。)
当执行到最后一步的时候告警日志收到如下报错:
Tue Mar 26 13:32:47 2013
Exception [type: ACCESS_VIOLATION, UNABLE_TO_READ] [ADDR:0x125DC0327] [PC:0x146839F24, __intel_new_memcpy()+2132]
ERROR: Unable to normalize symbol name for the following short stack (at offset 213):
dbgexProcessError()+200<-dbgeExecuteForError()+65<-dbgePostErrorKGE()+2255<-dbkePostKGE_kgsf()+77<-kgeade()+563<-kgerelv()+151<-kgerev()+45<-kgerec5()+60<-sss_xcpt_EvalFilterEx()+1862<-sss_xcpt_EvalFilter()+174<-.1.4_5+59<-0000000078ED6583<-0000000078ED455D<-0000000078ED6097<-0000000078EE31DD<-_intel_new_memcpy()+2132<-XsPgObjRead()+368<-xsDRowLoad()+50<-xsOBJROWLOAD()+404<-xsOBJBIND()+841<-xsCHKMAKE()+11633<-xsCHKOPEN()+66<-xsInitSession()+1171<-xsawugaConstruct()+3771<-xsEnter()+433<-xsawqTFArgs()+713<-xtypls()+1915<-qctopls()+618<-qctcopn()+469<-qctcopn()+392<-qcsoptf()+1191<-qcsprfro()+1693<-qcsprfro_tree()+292<-qcsprfro_tree()+373<-qcspafq()+677<-qcspqbDescendents()+227<-qcspqb()+202<-kkmdrv()+98<-opiSem()+2614<-opiprs()+362<-PGOSF537_kksParseChildCursor()+793<-rpiswu2()+2711<-kksLoadChild()+6325<-kxsGetRuntimeLock()+2489<-kksfbc()+16965<-kkspsc0()+2345<-kksParseCursor()+148<-opiosq0()+2620<-opiosq()+23<-opiodr()+1644
Errors in file C:\APP\diag\rdbms\orcl\orcl\trace\orcl_j000_1312.trc (incident=2593):
ORA-07445: 出现异常错误: 核心转储 [_intel_new_memcpy()+2132] [ACCESS_VIOLATION] [ADDR:0x125DC0327] [PC:0x146839F24] [UNABLE_TO_READ] []
Incident details in: C:\APP\diag\rdbms\orcl\orcl\incident\incdir_2593\orcl_j000_1312_i2593.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Tue Mar 26 13:32:52 2013
Thread 1 cannot allocate new log, sequence 29
Checkpoint not complete
Current log# 1 seq# 28 mem# 0: C:\APP\ORADATA\ORCL\REDO01.LOG
Tue Mar 26 13:32:54 2013
Dumping diagnostic data in directory=[cdmp_20130326133254], requested by (instance=1, sid=1312 (J000)), summary=[incident=2593].
Thread 1 advanced to log sequence 29 (LGWR switch)
Current log# 2 seq# 29 mem# 0: C:\APP\ORADATA\ORCL\REDO02.LOG
Tue Mar 26 13:32:56 2013
Sweep [inc][2593]: completed
Sweep [inc2][2593]: completed
Tue Mar 26 13:33:56 2013
Exception [type: ACCESS_VIOLATION, UNABLE_TO_READ] [ADDR:0x11C04A257] [PC:0x146839F24, __intel_new_memcpy()+2132]
Errors in file C:\APP\diag\rdbms\orcl\orcl\trace\orcl_ora_312.trc (incident=2561):
ORA-07445: 出现异常错误: 核心转储 [_intel_new_memcpy()+2132] [ACCESS_VIOLATION] [ADDR:0x11C04A257] [PC:0x146839F24] [UNABLE_TO_READ] []
Incident details in: C:\APP\diag\rdbms\orcl\orcl\incident\incdir_2561\orcl_ora_312_i2561.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Tue Mar 26 13:33:58 2013
Dumping diagnostic data in directory=[cdmp_20130326133358], requested by (instance=1, sid=312), summary=[incident=2561].
Tue Mar 26 13:33:59 2013
Sweep [inc][2561]: completed
Sweep [inc2][2561]: completed
有关这个报错的原因及解决方案,数据库从32bit转换为64bit的更多细节请参考文章:
《How to Convert a 32-bit Database to 64-bit Database on Linux? (文档 ID 341880.1)》
Note: 352306.1 Upgrading OLAP from 32 to 64 bits
Note: 332351.1 How To Remove or To Reinstall the OLAP Option
......
Note:If you are changing wordsize for Oracle release10.1.x/10.2.x/11.1/11.2 32-Bit to 64-bit with OLAP enabled for DB then you may likely to see the error
On Console:
<>ORA-06544: PL/SQL: internal error, arguments: [56319], [], [], [], [], [], [], []<>
On alert.log:
ORA-07445: exception encountered: core dump [_intel_fast_memcpy.A()+10] [SIGSEGV] <>
Or
ORA-07445: exception encountered: core dump [__intel_new_memcpy()+2132] [SIGSEGV]
(on 11g)
Or
ORA-07445: exception encountered: core dump [_intel_fast_memcpy.A()+10] [SIGSEGV] < style="font-family: arial unicode ms;"> ( Run the Following query to check OLAP component installed
SELECT COMP_NAME, STATUS FROM DBA_REGISTRY WHERE COMP_NAME LIKE ‘%OLAP%’)
......
3.使用RMAN Convert Database命令完成从32bit到64bit数据库的转换。
1).正常关闭32bit环境下的源数据库,将其以read only的方式打开。
2.执行如下命令转换源数据库:
CONVERT DATABASE NEW DATABASE 'orcl'
transport script. 'c:\convertdb\transportscript.sql'
to platform. 'Microsoft Windows x86 64-bit'
db_file_name_convert 'E:\app\oradata\orcl\' 'c:\convertdb\';
3).将转换后的DBF文件和transportscript.sql脚本传递到64bit的服务器上。
4).执行transportscript.sql中描述的步骤,但在向TEMP临时表空间添加临时文件时收到如下报错:
Tue Mar 26 14:19:00 2013
Errors in file C:\APP\diag\rdbms\orcl\orcl\trace\orcl_cjq0_2088.trc:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-06544: PL/SQL: 内部错误, 参数: [56327], [], [], [], [], [], [], []
ORA-06553: PLS-801: 内部错误 [56327]
Tue Mar 26 14:19:01 2013
5).跳过上一步,继续执行下面的步骤:
SQL> shutdown immediate
SQL> startup upgrade
SQL> @?/rdbms/admin/utlirp.sql
SQL> shutdown immediate
SQL> startup
SQL> @?/rdbms/admin/utlrp.sql
以上步骤完成后,再向TEMP临时表空间添加临时文件,完成后重启,数据库告警日志中无上述的报错信息。
有关RMAN Convert Database命令的详情请参考文章:《使用RMAN Convert Database命令实现跨平台的数据库迁移》:http://space.itpub.net/23135684/viewspace-757086
--end--