- 浏览: 4410870 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (634)
- Oracle日常管理 (142)
- Oracle体系架构 (45)
- Oracle Tuning (52)
- Oracle故障诊断 (35)
- RAC/DG/OGG (64)
- Oracle11g New Features (48)
- DataWarehouse (15)
- SQL, PL/SQL (14)
- DB2日常管理 (9)
- Weblogic (11)
- Shell (19)
- AIX (12)
- Linux/Unix高可用性 (11)
- Linux/Unix日常管理 (66)
- Linux桌面应用 (37)
- Windows (2)
- 生活和工作 (13)
- 私人记事 (0)
- Python (9)
- CBO (15)
- Cognos (2)
- ORACLE 12c New Feature (2)
- PL/SQL (2)
- SQL (1)
- C++ (2)
- Hadoop大数据 (5)
- 机器学习 (3)
- 非技术 (1)
最新评论
-
di1984HIT:
xuexilee!!!
Oracle 11g R2 RAC高可用连接特性 – SCAN详解 -
aneyes123:
谢谢非常有用那
PL/SQL的存储过程和函数(原创) -
jcjcjc:
写的很详细
Oracle中Hint深入理解(原创) -
di1984HIT:
学习了,学习了
Linux NTP配置详解 (Network Time Protocol) -
avalonzst:
大写的赞..
AIX内存概述(原创)
本文档主要介绍ora-07445 错误相关内容,并给出了对这个错误的进一步诊断建议,文档主要基于unix 系统编写,但原理通用。
ora-07445 错误概述
错误的定义:当oracle 服务器进程从操作系统收到一个致命的错误信息时会抛出ora-07445 错误,这个错误可以被oracle 后台进程或者用户进程激发。当错误被抛出时,系统会首先写一个错误日志到alert.log 文件中,然后会写跟踪文件到user_dump_dest 或background_dump_dest 中;最后会将主存信息转储到core_dump_dest 中。
操作系统有很多的非法操作设计,一个经常会碰到的情况就是,当一个进程访问一个非法
地址(比如系统预留地址)时致命错误将会产生。ora-07445 错误是一个非常普通的错误,可能在oracle 的任何代码中产生,该错误代码更详细的描述需要进一步跟踪其跟踪文件。
ora-07445 的表现方式
在不同的平台上,ora-07445 可能出现的情况有所不同,两种比较经常出现的方式如下
所示:
实例1
ORA-07445: exception encountered: core dump [run_some_SQL()+268] [SIGBUS] [Invalid address alignment] [] [] []
实例2
ORA-07445: exception encountered: core dump [10] [2122262800] [261978112] [] [] []
实例1 说明:
错误发生在函数run_some_sql() 中
进程收到的信号是SIGBUS
一些其他相关信息。
实例2 给定的信息相对较少:
没有给出导致错误的函数名称
进程收到的信息是signal 10
一些在本次错误中无用的信息 错误发生时需要搜集哪些信息
错误发生时需要搜集哪些信息错误发生时需要搜集哪些信息
错误发生时需要搜集哪些信息
1 、alert.log 文件,这个文件至少可以查出ora-07445 错误发生前后的其他相关错误,确认init.ora 文件信息也包含在里边。
2、 自实例上次启动以来所有的ora-07445 和ora-00600 错误及其跟踪文件。Trace file 文件中信息的相关说明文件中信息的相关说明文件中信息的相关说明
*** SESSION ID:(194.14075) 2002-05-08 23:35:18.202 <--- timestamp
Exception signal: 10 (SIGBUS), code: 1 (Invalid address alignment), addr:
0x41e7, PC: kjrfnd()+44 *** 2002-05-08 23:35:19.404 ksedmp: internal or fatal error ORA-07445: exception encountered: core dump [kjrfnd()+44] [SIGBUS] [Invalid address alignment] [16871] [] []
<----
the errror
the errror Current SQL statement for this session:
<---
the current SQL
statement
DELETE FROM MY_TABLE WHERE COL1 < :b1
----- PL/SQL Call Stack -----
object line object
handle number name
e560c680 35 anonymous block
e560c680 290 anonymous block
----- Call Stack Trace ----- <
----
Stack trace starts here
calling call entry argument values
in hex
location type point (? means dubious value) -------------------- -------- -------------------- ----------------------------
ksedst+001c bl ksedst1 000000001 ? 000000000 ?
ksedmp+0290 bl ksedst 104C20490 ?
ssexhd+03e0 bl ksedmp 300001D15 ?
000047DC ? 00000000
pfrinstr_DEFINE+004 bl pevm_DEFINE 1000000000028 ? 0FFFF6F80 ?
0 110AB4328 ? 7000007198E2C28 ?
110FEE460 ? 000000000 ?
pfrrun_no_tool+005c bl _ptrgl
pfrrun+1064 bl pfrrun_no_tool FFFFFFFFFFF7548 ? 110CAC9A0 ?
FFFFFFFFFFF6FA0 ?
plsql_run+06e8 bl pfrrun 110B15F60 ?
peicnt+0244 bl plsql_run 110B15F60 ? 10001004640A4 ?
000000000 ?
kkxexe+0250 bl peicnt FFFFFFFFFFF82D8 ? 110B15F60 ?
opiexe+3024 bl kkxexe 110CAC9A0 ?
kpoal8+0ef0 bl opiexe FFFFFFFFFFFB954 ?
FFFFFFFFFFFB6C0 ?
FFFFFFFFFFF9AF0 ?
opiodr+0b2c bl _ptrgl
ttcpip+1020 bl _ptrgl
opitsk+117c bl 01FC70C8
opiino+09d0 bl opitsk 0FFFFD920 ? 000000000 ?
opiodr+0b2c bl _ptrgl
opidrv+04a4 bl opiodr 3C102A2E38 ? 404C734B0 ?
FFFFFFFFFFFF8E0 ? 0102A2E30 ?
sou2o+0090 bl opidrv 3C02A2911C ? 4A15F6CE0 ?
FFFFFFFFFFFF8E0 ?
opimai_real+01bc bl 01FC3934
main+0098 bl opimai_real 000000000 ? 000000000 ?
__start+0070 bl main 000000000 ? 000000000 ?
--------------------- Binary Stack Dump ---------------------
========== FRAME [1] (ksedst+001c -> ksedst1) ==========
Dump of memory from 0x00000001103A43F0 to 0x00000001103A4460
1103A43F0 00000001 103A4460 42222240 00000000 [.....:D`B""@....]
1103A4400 00000001 0000AC20 42222248 00000000 [....... B""H....]
1103A4410 09000000 00004940 00000000 00000000 [......I@........]
1103A4420 00000000 00000001 00000000 00000000 [................]
1103A4430 00000000 00000000 00000000 00000003 [................]
1103A4440 00000000 00000001 00000001 10009480 [................]
1103A4450 00000000 00000000 00000001 103A4460 [.............:D`]
========== FRAME [2] (ksedmp+0290 -> ksedst) ==========
Dump of memory from 0x00000001103A4460 to 0x00000001103A4860
1103A4460 00000001 103A4890 42222481 00000020 [.....:H.B"$.... ]
1103A4470 00000001 0000B454 00000001 103A45D4 [.......T.....:E.]
1103A4480 00000000 88226828 00000000 00000000 [....."h(........]
1103A4490 00000001 04C20490 00000000 00000000 [................]
..................................省略若干行..............................
========== FRAME [14] (ttcpip+1020 -> _ptrgl) ==========
Dump of memory from 0x0FFFFFFFFFFFB260 to 0x0FFFFFFFFFFFB360
FFFFFFFFFFFB260 0FFFFFFF FFFFB830 44A42B80 00000027 [.......0D.+....']
FFFFFFFFFFFB270 00000001 00C085C4 00000001 102325E0 [.............#%.]
FFFFFFFFFFFB280 0FFFFFFF FFFFB440 00000001 102325E0 [.......@.....#%.]
FFFFFFFFFFFB290 0000005E 100D4360 00000017 00000760 [...^..C`.......`]
FFFFFFFFFFFB2A0 0FFFFFFF FFFFB950 00000000 108FD070 [.......P.......p]
FFFFFFFFFFFB2B0 0001FFFF FFFFB3A0 004D0020 0054005A [.........M. .T.Z]
FFFFFFFFFFFB2C0 00520000 00000000 00000000 00000000 [.R..............]
FFFFFFFFFFFB2D0 0000FFFF FFFFFFAA 00010000 00000000 [................]
FFFFFFFFFFFB2E0 00000000 00010000 00170001 108DCE10 [................]
FFFFFFFFFFFB2F0 0FFFFFFF FFFFB3C0 00000000 00000000 [................]
FFFFFFFFFFFB300 00000000 00000000 00000000 00000000 [................]
FFFFFFFFFFFB310 00000000 00000000 00000002 D37C77C0 [.............|w.]
FFFFFFFFFFFB320 00000000 0000000F 00000001 100D8C90 [................]
FFFFFFFFFFFB330 0033CE65 6AFD326F 00000000 0000000A [.3.ej.2o........]
FFFFFFFFFFFB340 0FFFFFFF FFFFB3C0 00000001 100D44B0 [..............D.]
FFFFFFFFFFFB350 00000001 10009480 0FFFFFFF FFFFB528 [...............(]
<----Stack trace ends here
----- Argument/Register Address Dump -----
重现错误
重现错误如果客户可以随意的重现ora-07445错误,那么诊断并解决问题的时间将会被缩短。重现错误的第一步当然是找出造成错误的current sql。
文档Note 154170.1中主要描述了怎么查找当前错误的执行语句。但我们需要注意的是,
当前问题可能是由于前面几个相关的其他语句执行时的上下文环境决定是否能出问题,所以
有可能找到当前语句但无法重现问题。在找到系统出错时执行的语句后我们需要确认下面的问题:
是不是只有在当前参数时系统才会报错
是否在每天的固定时间点出错
出错跟哪些系统操作有主要关联,比如数据库的备份或者其他高消耗操作
是在特定的应用程序和用户下出错还是所有的程序和用户都出错
第一次报错是什么时间,当时对系统做了什么改变
系统出错时有没有伴随其他的错误产生
如何找出
ora-07445发生时系统执行的语句
Step 1Find the SQL
在跟踪文件中查找字符串“Current cursor”(一般在cursor dump段的起始部分),使用current cursor后面的数字定位出错时系统的执行语句。
如果找到的这个数字为0说明没有dump出有效的执行语句。
如果找到的这个数字n不为0,接着往下查找,定位到字符串“cursor n”其中n为刚
找到的数字。从10.2版本后,你可能需要定位到字符串“cursor#n”,这里cursor name后面跟随的语句就是我们需要的sql。
另外我们也可以通过查找字符串“Current SQL statement for this session”来定位我
们需要查找的sql语句,通常情况下,这个语句出现在trace file文件的开始部分。
如果定位到的sql语句中引用了变量(:a1…)那么我们需要通过下面步骤2找出绑定的变量值。
Step 2 find values of the bind variables
如果定位得到的sql语句中出现了绑定变量,那么我们将会在cursor name后面发现”bind
*”之类的字符串,其中×为0到n-1的值,n为sql语句中绑定变量的个数。
对每个绑定变量都有一系列的属性说明列表,下面简单描述列表后面的属性。
Dty : databype 1 varchar2 or nvarchar2
2 number
8 long
11 rowid
12 date
23 raw
24 long raw
96 char
112 clob or nclob
113 blob
114 bfile
Mxl: the maximum lenth
Scl: the scale(for number columns)
Pre: the precision(for number columns)
Value: 绑定变量的值通过解析上面的内容,你可以得到绑定变量的类型及其数据值,也有一些情况(非常少)你在bind *后面找不到values字节,那么我们就不能通过这种方式得到绑定变量的值。
IMPORTANT: Replacing bind variables with literals can result in the optimizer choosing a different query path and thus the problem may not reproduce!
Example 1:
You should now be able to find the datatype of the bind variable (including length, scale, and precision if applicable) and the value.
The cursor dump starts with:
******************** Cursor Dump ************************
Current cursor: 2, pgadep: 1
Cursor Dump:
----------------------------------------
so we are looking for cursor 2:
----------------------------------------
Cursor 2 (20139ad0): CURFETCH curiob: 2013bca4
curflg: 7 curpar: 20139ab0 curusr: 0 curses 587a250c
cursor name: select text from view$ where rowid=:1
child pin: 50a5b650, child lock: 50a5a628, parent lock: 50a5a844
xscflg: 20141466, parent handle: 4f348490, xscfl2: 400
nxt: 2.0x0000006c nxt: 1.0x000001d8
Cursor frame allocation dump:
frm: -------- Comment -------- Size Seg Off
bhp size: 52/560
bind 0: dty=11 mxl=16(16) mal=00 scl=00 pre=00 oacflg=18 oacfl2=1 size=16
offset=0
bfp=2013e9f4 bln=16 avl=16 flg=05
value=0000138C.0046.0004
The current SQL is:
select text from view$ where rowid=:1
and the bind variable translates into:
:1 ~ bind 0 - ROWID (dty=11), value = 0000138C.0046.0004
so we can eg. reconstruct the original SQL statement as:
SQL> variable a1 varchar2(20)
SQL> exec :a1 := '0000138C.0046.0004';
SQL> select text from view$ where rowid=:a1;
Note that we construct the statement using a SQL*Plus bind variable in order to prevent the optimizer from choosing a different plan (not that it would make any difference for this particular example).
Example 2:
The cursor dump starts with:
******************** Cursor Dump ************************
Current cursor: 11, pgadep: 1
Cursor Dump:
----------------------------------------
ie. we should look for cursor 11:
----------------------------------------
Cursor 11 (202cb9f0): CURBOUND curiob: 202f8b04
curflg: dd curpar: 0 curusr: 0 curses 30047c7c
cursor name: SELECT LOCKID FROM DBMS_LOCK_ALLOCATED WHERE NAME =
:b1 FOR UPDATE
child pin: 0, child lock: 300dc9b4, parent lock: 301730b8
xscflg: 1151421, parent handle: 3025b4dc
bind 0: dty=1 mxl=32(00) mal=00 scl=00 pre=00 oacflg=01
No bind buffers allocated
----------------------------------------
The current SQL statement is then:
SELECT LOCKID FROM DBMS_LOCK_ALLOCATED WHERE NAME = :b1 FOR UPDATE
The bind variable :b1 is of type VARCHAR2(32) (dty=1, mxl=32), but no value has been assigned to it at the time of the dump ("No bind buffers allocated").
Example 3:
******************** Cursor Dump ************************
Current cursor: 2, pgadep: 0
Cursor Dump:
----------------------------------------
...
----------------------------------------
Cursor 2 (20140444): CURNULL curiob: 0
curflg: 44 curpar: 0 curusr: 0 curses 701dc94c
----------------------------------------
In this case there is no SQL being executed at the time of the dump.
Example 4:
******************** Cursor Dump ************************
Current cursor: 1, pgadep: 0
pgactx: ccf361c0 ctxcbk: 0 ctxqbc: 0 ctxrws: 0
Cursor Dump:
----------------------------------------
Cursor 1 (400d9478): CURBOUND curiob: 400e43d8
curflg: 4c curpar: 0 curusr: 0 curses d5348f80
cursor name: BEGIN myparser.convert('/tmp','workflow000_2.log',2); END;
child pin: d14a4d70, child lock: d1589968, parent lock: d14c64a0
xscflg: 100064, parent handle: d083f1c0, xscfl2: 4040408
nxt: 1.0x000000a8
Cursor frame allocation dump:
frm: -------- Comment -------- Size Seg Off
----------------------------------------
No binds included, so the SQL statement is the PL/SQL block:
BEGIN myparser.convert('/tmp','workflow000_2.log',2); END;
参考至:http://wenku.baidu.com/view/e64ee51ba8114431b90dd841.html
如有错误,欢迎指正
邮箱:czmcj@163.com
发表评论
-
AIX平台下磁盘的PVID对ASM磁盘的破坏
2014-03-19 20:53 2738这篇文章将通过两篇MOS文章来讨论AIX平台下为磁盘分配 ... -
Bug 9020054,ORA-8103 BEING HIT DURING GATHERING OF STATISTICS ON TABLE PARTITION
2013-12-01 09:22 1881Bug 9020054 : ORA-8103 ... -
oracle数据库hanganalyze(原创)
2013-06-23 14:11 8329为什么要使用hanganalyzeOracle 数据库“真 ... -
Oracle:并行操作为什么无法执行(老白)
2013-06-23 10:30 5739在一次系统割接的时候,我们碰到一个十分奇怪的现象。由于进行 ... -
补写的2小节DBA日记
2013-06-05 21:52 13886月8日 ITL等待引发的RAC性能问题 从这几天的情况 ... -
ORA-27054故障排除
2013-03-08 17:57 12961在数据备份过程中,由于目标是使用NFS文件系统,因此在导入 ... -
长时间latch free等待——记一次系统异常的诊断过程
2013-01-09 19:17 3736今天发现一个报表数据库中SQL运行异常,简单记录一下问题的诊断 ... -
ORA-15063: ASM discovered an insufficient number of disks for diskgroup(原创)
2012-11-25 16:59 13087ORA-15063: ASM discovered an in ... -
libpthread.so.0: cannot open shared object file解决方法(原创)
2012-11-24 17:33 17760在linux 5上装10G RAC时,常常会碰到“libpth ... -
ora-02020故障诊断详解(原创)
2012-07-16 12:54 3206ORA-2020错发生在一个分布式事务使用的dblink数超过 ... -
Oracle数据库CPU 100%故障诊断实例(原创)
2012-07-05 13:55 16916前言 这两天一只对外提供查询的数据库CPU使用率 ... -
DBA手记:System State转储分析之问题定位
2012-04-19 22:20 2110在 Oracle 数据库的运行过程中,可能会因为一些异常遇 ... -
ORA-02050故障诊断一例
2012-04-05 17:20 8577昨天客户反映说在下午某时间段有几个事务失败了,让我查下当时数据 ... -
ORA-00308: cannot open archived log(原创)
2012-03-23 09:36 16258笔者在为客户配置DG时发现主备库日志无法正常传输,经仔细检查后 ... -
ORA-00600: internal error code, arguments: [kcblasm_1], [103]原创
2012-03-23 09:36 3111故障报错 Mon Mar 19 11:30:03 GMT ... -
ORA-00600: internal error code, arguments: [kglhdda-bad-free](原创)
2012-03-22 09:16 2963故障报错如下 Thu Mar 15 09:51:29 G ... -
ORA-27300,ORA-27301,ORA-27302: failure occurred at: skgpalive1(原创)
2012-03-22 08:58 3347故障报错如下 Wed Mar 07 16:4 ... -
记一次Oracle 生产库还原归档日志经历(原创)
2012-02-17 10:12 4382中午刚去吃饭,就接到同事电话说急着要恢复生产库上的归档日志。系 ... -
SMON: Parallel transaction recovery tried 引发的问题
2012-01-04 11:26 2399SMON: Parallel transaction rec ... -
ORA-00444,ORA-07446故障排查
2011-12-14 16:58 4650phenomenon startup ORA-00 ...
相关推荐
ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法 ora-00604 错误 解决 方法ora-00604 错误 解决 方法
在使用Oracle Data Pump工具IMPDP(Import Data Pump)进行数据导入的过程中,可能会遇到ORA-39002和ORA-39070等错误。本文将针对这些错误的排查方法进行详细介绍,帮助用户理解问题的原因及解决策略。 ### 错误...
Oracle数据库发生ORA-04031错误原因浅析及处理 Oracle数据库是甲骨文公司提供的一种分布式数据库管理系统,以分布式数据库为核心的软件产品。它具有完整的数据管理功能,作为一个关系数据库,它是一个非常实用的...
Oracle数据库在运行过程中可能会遇到各种错误,其中,ORA-07445错误是一个与内核相关的严重异常,通常表示数据库遇到了未预期的内部错误,可能导致数据库实例的崩溃。在这个特定的问题中,XX网的Oracle 9.2.0.6版本...
在启动Oracle 10g数据库时遇到ORA-16038错误,该错误通常与归档日志操作有关。具体错误信息为: ``` ORA-16038: log 1 sequence #230 cannot be archived ORA-19809: limit exceeded for recovery files ORA-00312: ...
### ORA-01460 错误原因分析 #### 概述 在Oracle数据库操作过程中,可能会遇到ORA-01460错误,该错误全称为“ORA-01460: 转换请求无法实现或不合理”。这一错误通常发生在数据类型转换或者与操作系统之间的数据...
### 创建物化视图ORA-12014错误解决方法 #### 背景介绍 在Oracle数据库中,物化视图(Materialized View)是一种用于优化查询性能的重要工具。它预先计算并存储了复杂的查询结果,从而在实际查询时能够快速地返回...
### Oracle 错误 ORA-00132 和 ORA-00214 解析及处理 #### 一、错误概述 在Oracle数据库管理过程中,遇到ORA-00132和ORA-00214这类错误时,往往意味着数据库配置或启动过程中出现了问题。下面将对这两个错误进行...
### 如何处理错误ORA-29275:部分多字节字符 #### 问题背景与描述 在Oracle数据库操作过程中,用户可能会遇到一个特定的错误提示——ORA-29275:部分多字节字符。这一错误通常出现在执行查询`SELECT * FROM V$...
Oracle数据库不同版本间的客户端与服务端的连接问题通常涉及到安全和兼容性配置,这篇文章主要讲述了在Oracle 11g R2客户端尝试连接Oracle 19c服务端时,遇到了两个特定的错误:ORA-28040和ORA-01017,以及如何解决...
在IT领域,尤其是在数据库管理与维护中,遇到ORA-01460错误是常见的问题之一,这通常意味着系统在尝试执行数据转换时遇到了未实现或不合理的请求。本文将深入探讨ORA-01460错误的成因、影响以及提供一系列有效的解决...
### Oracle ORA-03113 错误解析及解决方法 #### 一、ORA-03113 错误概述 ORA-03113 是一个较为常见的Oracle错误,通常出现在网络通信出现问题时,具体表现为“end-of-file on communication channel”(通信通道上...
在Oracle数据库管理与维护的过程中,遇到各种错误代码是家常便饭,其中“ORA-227101”错误虽然在题目...通过以上分析和解决方案,可以有效地应对和解决Oracle数据库中ORA-27101及相关错误,确保数据库服务的稳定运行。
根据给出的部分内容,可以看到用户尝试将数据文件8(F:\DATAMIS\MIS.DBF)置于离线状态,但由于表空间未启用介质恢复,因此出现了ORA-01145错误。为了解决这个问题,可以按照以下步骤操作: 1. **登录到SQL*Plus**...
关于WIN10系统使用oracle instant client 时候提示ORA-01019错误的解决方案,本方案是配置好环境变量后依然提示ORA-01019错误的解决方案,内附本人制作测试的全过程说明
ORA-00604: 递归SQL层1出现错误 ORA-03106: 致命的双工通信协议错误 ORA-02063: 紧接着line(源于dblink) 以及 ORA-04052: 在查找远程对象时出错 ORA-00604: 递归SQL层1出现错误 ORA-03120: 双工转换例行程序:整数...
ORA-12514 错误的原因和解决方法 ORA-12514 错误是 Oracle 数据库中常见的一种错误,它的出现可能是由于多种原因引起的。下面我们将从根本上探究 ORA-12514 错误的原因,并提供相应的解决方法。 原因 1:监听器没有...
在创建Oracle数据库连接时遇到的错误ORA-01017和ORA-02063涉及到用户认证问题以及Oracle数据库版本之间的差异处理。ORA-01017错误表示用户名或密码无效,登录被拒绝,而ORA-02063则通常表示在Oracle数据库之间进行...
用oracle数据库新建连接时遇到ora-12505,此问题解决后又出现ora-12519错误,郁闷的半天,经过一番折腾问题解决,下面小编把我的两种解决方案分享给大家,仅供参考。 解决方案一: 今天工作时在新建连接的时候遇到...