今天同事在导出的时候碰到了错误,EXP的过程中出现了ORA-3113和ORA-24324错误。
导出过程如下:
bash-3.00$ exp shgov file=jg080424.dmp wner=shgov buffer=300000000
Export: Release 9.2.0.1.0 - Production on 星期四 4月 24 14:27:27 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
口令:
连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即将导出指定的用户...
. 正在导出 pre-schema 过程对象和操作
. 正在导出用户 SHGOV 的外部函数库名称
. 导出 PUBLIC 类型同义词
. 导出私有类型同义词
. 正在导出用户 SHGOV 的对象类型定义
即将导出 SHGOV 的对象 ...
. 正在导出数据库链接
. 正在导出序号
. 正在导出群集定义
. 即将导出 SHGOV 的表通过常规路径 ...
. . 正在导出表 A 0 行被导出
. . 正在导出表 BYSS_FPAGE_DATA 12 行被导出
. . 正在导出表 CAT_BUYER 7447 行被导出
. . 正在导出表 CAT_DEALER 14331 行被导出
. . 正在导出表 CAT_ENTERPRISE 23472 行被导出
. . 正在导出表 CAT_GOVERNMENT 452 行被导出
. . 正在导出表 CAT_ORG 31350 行被导出
. . 正在导出表 CAT_PLAT_PRODUCT 1369020 行被导出
.
.
.
. . 正在导出表 SHGOV_HOS_CHARGE 0 行被导出
. . 正在导出表 SHGOV_MED_RETAILPRICE_DIFF 134 行被导出
. . 正在导出表 SHGOV_ORDER
EXP-00056: 遇到 ORACLE 错误 600
ORA-00600: 内部错误代码,参数: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]
EXP-00056: 遇到 ORACLE 错误 24324
ORA-24324: 未初始化服务句柄
EXP-00056: 遇到 ORACLE 错误 24324
ORA-24324: 未初始化服务句柄
EXP-00056: 遇到 ORACLE 错误 24324
ORA-24324: 未初始化服务句柄
EXP-00056: 遇到 ORACLE 错误 24324
ORA-24324: 未初始化服务句柄
EXP-00000: 导出终止失败
需要说明的是,第一次导出的时候出现的是ORA-3113错误和ORA-24324错误,而随后出现的都是ORA-600错误。
第一次出现错误时的错误日志为:
EXP-00056: 遇到 ORACLE 错误 3113
ORA-03113: 通信通道的文件结束
EXP-00056: 遇到 ORACLE 错误 24324
ORA-24324: 未初始化服务句柄
EXP-00056: 遇到 ORACLE 错误 24324
ORA-24324: 未初始化服务句柄
EXP-00056: 遇到 ORACLE 错误 24324
ORA-24324: 未初始化服务句柄
EXP-00056: 遇到 ORACLE 错误 24324
ORA-24324: 未初始化服务句柄
EXP-00000: 导出终止失败
在后台的alert文件中可以看到ORA-600错误:
第一次出现的错误信息为:
Thu Apr 24 13:46:17 2008
Errors in file /oracle/admin/orcl/udump/orcl_ora_18129.trc:
ORA-07445: 出现异常: 核心转储 [kghidmp()+908] [SIGBUS] [Invalid address alignment] [0xD2BDD2A9] [] []
随后的错误信息为:
Thu Apr 24 14:02:22 2008
Errors in file /oracle/admin/orcl/udump/orcl_ora_18489.trc:
ORA-00600: 内部错误代码,参数: [17182], [0xFC8BA080], [], [], [], [], [], []
Thu Apr 24 14:02:23 2008
Errors in file /oracle/admin/orcl/udump/orcl_ora_18489.trc:
ORA-07445: 出现异常: 核心转储 [kgidmp()+828] [SIGBUS] [Invalid address alignment] [0x18454D51] [] []
ORA-00600: 内部错误代码,参数: [17182], [0xFC8BA080], [], [], [], [], [], []
Thu Apr 24 14:02:24 2008
Errors in file /oracle/admin/orcl/udump/orcl_ora_18489.trc:
ORA-07445: 出现异常: 核心转储 [kgidmp()+828] [SIGBUS] [Invalid address alignment] [0x18454D51] [] []
ORA-07445: 出现异常: 核心转储 [kgidmp()+828] [SIGBUS] [Invalid address alignment] [0x18454D51] [] []
ORA-00600: 内部错误代码,参数: [17182], [0xFC8BA080], [], [], [], [], [], []
Thu Apr 24 14:02:25 2008
Errors in file /oracle/admin/orcl/udump/orcl_ora_18489.trc:
ORA-07445: 出现异常: 核心转储 [kgidmp()+828] [SIGBUS] [Invalid address alignment] [0x18454D51] [] []
ORA-07445: 出现异常: 核心转储 [kgidmp()+828] [SIGBUS] [Invalid address alignment] [0x18454D51] [] []
ORA-07445: 出现异常: 核心转储 [kgidmp()+828] [SIGBUS] [Invalid address alignment] [0x18454D51] [] []
ORA-00600: 内部错误代码,参数: [17182], [0xFC8BA080], [], [], [], [], [], []
进一步检查详细的错误信息:
*** 2008-04-24 13:46:17.051
ksedmp: internal or fatal error
ORA-07445: 出现异常: 核心转储 [kghidmp()+908] [SIGBUS] [Invalid address alignment] [0xD2BDD2A9] [] []
Current SQL statement for this session:
SELECT /*+NESTED_TABLE_GET_REFS+*/ "SHGOV"."SHGOV_ORDER".* FROM "SHGOV"."SHGOV_ORDER"
查询了一下METALINK,发现和Doc ID: Note:413345.1中的描述极为类似,无论是导出时碰到的错误信息,还是导致问题出现的SQL语句,都完全一样,不过也有不同点,就是当前表只是一个普通表,而不是一个分区表。
SQL> SELECT TABLE_NAME, OWNER, PARTITIONED FROM DBA_TABLES
2 WHERE TABLE_NAME = 'SHGOV_ORDER'
3 AND WNER = 'SHGOV';
TABLE_NAME OWNER PAR
------------------------------ ------------------------------ ---
SHGOV_ORDER SHGOV NO
而且可能正是由于上面的不同,导致后台报错的7445错误号并不相同。
Oracle给出的解决方法是设置初始化参数"_optim_adjust_for_part_skews"=false,然后重启数据库,或者升级数据库版本到9205以上。
可是无论哪种方式代价都比较大,尝试使用DIRECT方式导出,并不导出统计,发现居然将问题绕过去了:
bash-3.00$ exp shgov file=jg080424.dmp buffer=20480000 direct=y recordlength=65534 statistics=none
Export: Release 9.2.0.1.0 - Production on 星期四 4月 24 15:03:44 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
口令:
连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即将导出指定的用户...
. 正在导出 pre-schema 过程对象和操作
. 正在导出用户 SHGOV 的外部函数库名称
. 导出 PUBLIC 类型同义词
. 导出私有类型同义词
. 正在导出用户 SHGOV 的对象类型定义
即将导出 SHGOV 的对象 ...
. 正在导出数据库链接
. 正在导出序号
. 正在导出群集定义
. 即将导出 SHGOV 的表通过直接路径 ...
. . 正在导出表 A 0 行被导出
. . 正在导出表 BYSS_FPAGE_DATA 12 行被导出
. . 正在导出表 CAT_BUYER 7447 行被导出
. . 正在导出表 CAT_DEALER 14331 行被导出
. . 正在导出表 CAT_ENTERPRISE 23472 行被导出
. . 正在导出表 CAT_GOVERNMENT 452 行被导出
. . 正在导出表 CAT_ORG 31350 行被导出
. . 正在导出表 CAT_PLAT_PRODUCT 1369020 行被导出
.
.
.
. . 正在导出表 SHGOV_HOS_CHARGE 0 行被导出
. . 正在导出表 SHGOV_MED_RETAILPRICE_DIFF 134 行被导出
. . 正在导出表 SHGOV_ORDER 420836 行被导出
. . 正在导出表 SHGOV_ORDER_ADD 26476 行被导出
. . 正在导出表 SHGOV_ORD_ORDER_RECEIVE 0 行被导出
.
.
.
. . 正在导出表 USR_USERBAK 0 行被导出
. . 正在导出表 USR_USER_ROLE 7 行被导出
. . 正在导出表 USR_USER_ROLE_BK 1407 行被导出
. . 正在导出表 USR_USR_PLAT 22 行被导出
. . 正在导出表 USR_USR_PLAT_BK 527 行被导出
. 正在导出同义词
. 正在导出视图
. 正在导出存储的过程
. 正在导出运算符
. 正在导出引用完整性约束条件
. 正在导出触发器
. 正在导出索引类型
. 正在导出位图, 功能性索引和可扩展索引
. 正在导出后期表活动
. 正在导出实体化视图
. 正在导出快照日志
. 正在导出作业队列
. 正在导出刷新组和子组
. 正在导出维
. 正在导出 post-schema 过程对象和操作
. 正在导出统计
在没有警告的情况下成功终止导出。
其实很多时候,Oracle给出的解决方法并不是唯一的方法,以当前的情况为例,很可能Oracle给出的方法最解决这个问题的唯一方法。但是这是对常规导出而言,而对于大多数人来说,其实存在很多变通的方法来避过这个问题,比如采用直接路径导出,比如跳过问题表,甚至重建问题表等等。
大多数情况不要着急按照Oracle给出的方案进行,自己多测试测试,很可能就可以找到符合你目标的最佳解决方法。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-254780/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/4227/viewspace-254780/