本地 oracle 安装目录满触发 ORA-7445 [_memmove()+64] 导致Instance Crashed 的事故

最近处理了一个问题,原因是由于命中ORA-600 [kole_t2u], [34] - description, bugs 导致 在udump 目录下大量转储 出cdmp 文件,

然后这些 cdmp 撑爆本地磁盘空间, 在oracle 发现本地无空间可写一些日志时,又触发ORA-7445 [_memmove()+64]

而触发ORA-600 [kole_t2u], [34] 的 根本原因是因为业务程序的非法操作,在db 中某张含有 clob 字段的表中插入了一些oracle现有字符集(zh16gbk)无法处理的字符

故障模拟如下:

SQL> select * from v$version;

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production

PL/SQL Release 11.2.0.2.0 - Production

CORE    11.2.0.2.0      Production

TNS for Linux: Version 11.2.0.2.0 - Production

NLSRTL Version 11.2.0.2.0 - Production

SQL> create table t3(a clob);

Table created.

SQL> insert into t3 values(utl_raw.cast_to_varchar2(‘EC‘));

insert into t3 values(utl_raw.cast_to_varchar2(‘EC‘))

*

ERROR at line 1:

ORA-00600: internal error code, arguments: [kole_t2u], [34], [], [], [], [],[], [], [], [], [], []

SQL> select * from nls_database_parameters

PARAMETER                      VALUE

------------------------------ --------------------------------------------------------------------------------

NLS_LANGUAGE                   AMERICAN

NLS_TERRITORY                  AMERICA

NLS_CURRENCY                   $

NLS_ISO_CURRENCY               AMERICA

NLS_NUMERIC_CHARACTERS         .,

NLS_CHARACTERSET               ZHS16GBK

NLS_CALENDAR                   GREGORIAN

NLS_DATE_FORMAT                DD-MON-RR

NLS_DATE_LANGUAGE              AMERICAN

NLS_SORT                       BINARY

NLS_TIME_FORMAT                HH.MI.SSXFF AM

PARAMETER                      VALUE

------------------------------ --------------------------------------------------------------------------------

NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM

NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR

NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR

NLS_DUAL_CURRENCY              $

NLS_COMP                       BINARY

NLS_LENGTH_SEMANTICS           BYTE

NLS_NCHAR_CONV_EXCP            FALSE

NLS_NCHAR_CHARACTERSET         AL16UTF16

NLS_RDBMS_VERSION              11.2.0.2.0

20 rows selected.

 ORA-600 [kole_t2u], [34] 影响的版本范围:

Oracle Database - Enterprise Edition - Version 9.2.0.1 to 11.2.0.4 [Release 9.2 to 11.2]

Information in this document applies to any platform.

Oracle Server Enterprise Edition - Version: 9.2.0.1 to 11.1.0.6

***Checked for relevance on 20-Jan-2014***

ORA-600 [kole_t2u], [34] 触发的情景:

As stated, this error can come up in multibyte environments. Secondly it is clear that whenever this error comes up, there must be at least 1 incomplete codepoint used in the data.

In general we can split these occurrences in 3 categories:

Invalid multibyte data is being inserted by an application into a CLOB

Invalid multibyte data has been inserted in a VARCHAR2 (without initially being detected), and the stored data is moved to a CLOB at a later stage (either through application code, or by a Oracle process like Auditing).

Existing correctly stored CLOB data is incorrectly "split" into chunks. This could leave a codepoint "split" in the middle of the byte stream, leaving a incorrect number of bytes for the last codepoint before the split. This could either happen in application
code, or could be due to bug in the database.

We will look at all these 3 categories in depth in the following paragraphs.

最后的处理方法:

1. 要求应用根据报错记录去审查业务程序

2. 为了避免 cdmp 过大撑爆本地空间, 设置 max_dump_file_size

MAX_DUMP_FILE_SIZE

Property Description
Parameter type String
Syntax MAX_DUMP_FILE_SIZE = {integer
[K | M] | UNLIMITED }
Default value UNLIMITED
Modifiable ALTER SESSION,
ALTER SYSTEM
Range of values 0 to unlimited, or UNLIMITED
Basic No

MAX_DUMP_FILE_SIZE specifies the maximum size of trace files (excluding the alert file). Change this
limit if you are concerned that trace files may use too much space.

  • A numerical value for MAX_DUMP_FILE_SIZE specifies the maximum size in operating system blocks.
  • A number followed by a K or M suffix specifies the file size in kilobytes or megabytes.
  • The special value string UNLIMITED means that there is no upper limit on trace file size. Thus, dump files can be as large as the operating system permits.

odm fund:

ORA-600 [kole_t2u], [34] - description, bugs, and reasons (文档 ID 734474.1)

ORA-600 [kole_t2u] With Multibyte Character Sets While Appending To LOB In a Loop (文档 ID 739282.1)

AL32UTF8 / UTF8 (Unicode) Database Character Set Implications (文档 ID 788156.1)

Character set conversion when using UTL_FILE (文档 ID 227531.1)

Getting ORA-7445 [_memmove()+64] and Instance Crashed (文档 ID 1294148.1) 转到底部转到底部

In this Document

Symptoms

Cause

Solution

This document is being delivered to you via Oracle Support‘s Rapid Visibility (RaV) process and therefore has not been subject to an independent technical review.

APPLIES TO:

Oracle Database - Enterprise Edition - Version 10.2.0.4 to 11.2.0.2 [Release 10.2 to 11.2]

Information in this document applies to any platform.

SYMPTOMS

In the alert log file there are reported errors like:

ORA-07445: exception encountered: core dump [_memmove()+64] [SIGBUS]

[Invalid address alignment] [0x0.........] [] []

and instance crashed.

The trace files generated by these errors are truncated (not relevant) or have no information (0 bytes).

CAUSE

In this case the issue is caused by a resource problem outside Oracle.

By checking the OS system log, you can see that the Oracle mount point has ran out of space just before the errors and until the instance crash.

For example in an HP-UX system, the messages can be as the following:

vmunix: vxfs: NOTICE: msgcnt 1 mesg 001: V-2-1: vx_nospace - /dev/vg01/lvora file system full (1 block extent)

SOLUTION

Monitor your system in order to avoid running out of space in Oracle mount points.

本地 oracle 安装目录满触发 ORA-7445 [_memmove()+64] 导致Instance Crashed 的事故

时间: 2024-10-20 14:29:15

本地 oracle 安装目录满触发 ORA-7445 [_memmove()+64] 导致Instance Crashed 的事故的相关文章

【Linux】将Oracle安装目录从根目录下迁移到逻辑卷

[Linux]将Oracle安装目录从根目录下迁移到逻辑卷 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① Linux逻辑卷的创建和管理(重点) 1.2.2  相关文章链接 linux逻辑卷管理:http://blog.itpub.net/26736162/viewspace-2124620/,这篇文章非常不错. 1.2.3  本文简介 由于Oracle

清理Oracle安装目录里的一些日志信息

最近测试环境服务器上磁盘空间紧张,表空间里面的数据也不知道开发哪些需要哪些不需要,而且因为此测试库运行时间比较久远,起码有三年了.于是就从清理Oracle安装目录下的日志下手. 发现在一般这几个日志,如果没有做定期清理的话,就比较占空间. 1.<user_dump_dest>/alert_<sid>.log 2.$ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_<hostname>_<SID>/log/http-web-access

重装系统后,oracle11g数据库恢复(原oracle安装目录还在)

安装与之前同版本的数据库,安装目录选择与之前一样. 关闭oracle的所有服务. 拷贝原oracle_home目录下的database文件夹到现在的目录(最好先将现在的database文件夹进行备份). 拷贝原oracle_base下的oradata.admin.fgtoollogs.flash_recovery_area文件夹,覆盖现在的目录(请先进行备份). 打开服务. 运行命令sqlplus / as sysdba; 运行命令shutdown 运行命令startup 恢复成功.

Oracle安装问题总结

注意:关于Oracle的操作尽量都以管理员身份执行操作.   安装Oracle,首先明确一点:安装Oracle分为安装Oracle服务和创建Oracle数据库! 不同的计算机安装同一个Oracle10G程序,安装的效果可能有所不同,这里是我电脑安装过程中遇到的问题! 环境: 计算机系统:win10 计算机名称:lydong 本机Oracle安装目录:C:\oracle\product\10.2.0 问题: 按照Oracle10G安装文档进行安装时正常情况下应该有数据库创建的界面: 虽然选择了创建

linux 系统oracle 安装

系统环境:linux redhat 6.3 server 64位 数据库版本:oracle11g     V11.2 安装方式:静默安装 安装步骤: 一.准备工作: 1.1.在oracle 官网下载oracle 11g,将下载的 linux.x64_11gR2_database_1of2.zip,linux.x64_11gR2_database_2of2.zip文件通过SSH 工具从windows 上传到linux 操作系统.解压压缩文件: unzip  linux.x64_11gR2_data

oracle安装后新建数据库实例及配置

ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法 (2011-01-20 13:50:37) 转载▼http://blog.sina.com.cn/s/blog_5007d1b10100oqo8.html 标签: it 分类: 技术 早上同事用PL/SQL连接虚拟机中的Oracle数据库,发现又报了“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误,帮其解决后,发现很多人遇到过这样的问题,因此写着这里. 也许你没有遇到过,原因如下: 你o

ORACLE安装心得,大家一起分享,如果不对的地方,大家请指出来

1. 安装\Oracle\10201_database_win32.zip: a) 安装图解: http://jingyan.baidu.com/article/5d6edee228308899eadeec3f.html b) 注意:要对setup.exe执行文件的兼容性设置如下: 2. 安装plsqldev8.0.zip工具. a) 注意:该安装目录不能有中文或者括号,如: (x86) 等 注册码: product code:jtlhlj6flzrwd4dnwwpju2y8za89vb8r8y

数据库oracle安装与卸载

安装的版本是oracle12-OraDb10g_home1服务端,先来卸载,如果电脑安装了oracle,在计算机-->管理-->服务里面可以看见下面三个oracle服务 首先我们要把它这里服务全停掉 在开始菜单找到oracle自带卸载程序 进入后 删除产品-->勾选oracle10-->删除-->是-->等待删除 找到安装oracle的安装目录删掉残余,还有C盘里的残余 然后再去服务里面右击服务刷新一下,还存在残余,为了以防万一手动删掉 选中右击属性,进入复制服务名称

本地不安装Oracle,plsql远程连接数据库

由于Oracle的庞大,有时候我们需要在只安装Oracle客户端如plsql.toad等的情况下去连接远程数据库,可是没有安装Oracle就没有一切的配置文件去支持.最后终于发现一个很有效的方法,Oracle的Instantclient工具包可以很好地解决这个问题,而且小而方便.1.首先到Oracle网站下载Instant Client : http://www.oracle.com/us/solutions/index-097480.html 解压之后的文件夹叫:instantclient_1