yangtingkun
===========================================================
EXP在9R2上导出时报错ORA-3113和ORA-24324
===========================================================

今天同事在导出的时候碰到了错误,EXP的过程中出现了ORA-3113ORA-24324错误。


导出过程如下:

bash-3.00$ exp shgov file=jg080424.dmp owner=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 OWNER = '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给出的方案进行,自己多测试测试,很可能就可以找到符合你目标的最佳解决方法。

yangtingkun 发表于:2008.04.26 23:54 ::分类: ( ORACLE , Bug ) ::阅读:(146次) :: 评论 (0)

发表评论
标题

在此添加评论
表情符号: smile laughing tongue angry crying sad wassat wink

称呼

邮箱地址(可选)

个人主页(可选)

 authimage


切换风格
新闻聚合
博客日历
文章归档...
最新发表...
最新评论...
最多阅读文章...
最多评论文章...
博客统计...
Blog信息
网站链接...