本地 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 ,
|
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
orM
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 的事故的更多相关文章
- 把war包放到Tomcat安装文件夹下,不能直接訪问的解决方式
临床表现: Tomcat启动后首页能訪问(http://localhost:8080/). 将自己写的一个webprojectwar包放到Tomcat安装文件夹下的/webapps以下(比方hello ...
- MySQL数据库安装文件夹与配置文件简易说明
1.MySQL安装文件夹 bin:存放着可执行文件 include:存放头文件 lib:存放库文件 share:存放字符集.语言等信息 2.配置文件 my.ini:MySQL软件正在使用的配置文件 m ...
- maven本地仓库.m2文件夹路径讲解
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Depen ...
- 海量IT资料 + 各种平台下的Oracle安装文件 + 公开课录像 + 各种视频教程资料
觉得老师的公开课讲的都挺好的,这里把我录的一些公开课视频分享给大家,都用的是<屏幕录像专家>来录制的,是lxe格式的,大家用这个软件来播放就可以了,后边的公开课录像文件也会慢慢添加进去的, ...
- Oracle Directory文件夹的知识
在上一章介绍expdp/impdp时曾使用过DIRECTORY这个概念,以下再简单说明下DIRECTORY的点点滴滴. MOS上对DIRECTORY的解释(266875.1): (1).基于服务端 v ...
- git 本地重命名文件夹大小写并提交到远程分支
git branch 查看本地分支 git branch -a 查看本地 本地分支可直接切换:git checkout name 进入正题: 1.文件夹备份 2.git config core.ign ...
- git恢复本地删除的文件夹取消增加的文件
git项目中有时候会在本地增加或者删除了一些文件或者文件夹,但是又不想提交,一般情况下,我们取消本地所有修改: git checkout . 取消指定文件修改: git checkout filena ...
- centos7安装nginx(自定义安装文件夹)
一.安装所需要的依赖软件 1.gcc:nginx编译依赖gcc环境 #yum install gcc-c++ 2.pcre:(Perl Compatible Regular Expressions)是 ...
- 【Linux】Linux下配置apache - 安装文件夹具体解释
一,apache安装路径解释 默认安装路径 /var/apache2 # /etc/apache2/ # |-- apache2.conf # | `-- ports.conf # |-- mo ...
随机推荐
- Codeforces 344D Alternating Current 简单使用栈
Description Mad scientist Mike has just finished constructing a new device to search for extraterres ...
- 注解:@SuppressWarning()的用法
@SuppressWarning() 作用:J2SE 提供的一个批注或者注解.该批注的作用是给编译器一条指令,忽略这些警告信息. 常用:unchecked,serial. 1.如果传入多种情况,这几种 ...
- file---探测给定文件的类型
file命令用来探测给定文件的类型.file命令对文件的检查分为文件系统.魔法幻数检查和语言检查3个过程. 语法 file(选项)(参数) 选项 -b:列出辨识结果时,不显示文件名称: -c:详细显示 ...
- 便捷编程-Xcode常用第三方插件 (随时更新)
Xcode工具插件 1.XAlign 让Xcode编辑器中的代码以多种方式瞬间对齐 地址:https://github.com/qfish/XAlign 2.VVDocumenter-Xcode 在X ...
- 从零使用qemu模拟器搭建arm执行环境
为什么会有这篇文章 早在2011年的时候,跟当时同事一起讨论,做Linux系统开发正处于整个Linux开发中间层,没有上层的C/C++业务和数据库的开发经验.也没有底层的内核和驱动开发经验,究竟路该怎 ...
- C++ 不输入回车就不结束输入的实现方法
方法一 char mystr[128]; mystr[0] = '\0'; char c = getchar(); int i=0; while(c!='\n') { mystr[i] = c; c ...
- ethercat主站控制软件TwinCAT的安装
TwinCAT软件系统是基于PC兼容机的自己主动化系统,全称是"The Windows Control and Automation Technology".它把不论什么PC兼容机 ...
- [ Javascript ] JavaScript中的定时器(Timer) 是怎样工作的!
作为入门者来说.了解JavaScript中timer的工作方式是非常重要的.通常它们的表现行为并非那么地直观,而这是由于它们都处在一个单一线程中.让我们先来看一看三个用来创建以及操作timer的函数. ...
- OpenCASCADE Job - 武汉中南
中南设计集团(武汉)工程技术研究院有限公司是中南工程咨询设计集团有限公司(以下简称“中南设计集团”)打造的工程技术研发和科研创新平台,为中南设计集团旗下全资子公司,于2018年2月成立.公司业务范围涵 ...
- Ajax缓存原理
一.什么是Ajax缓存原理? Ajax在发送的数据成功后,会把请求的URL和返回的响应结果保存在缓存内,当下一次调用Ajax发送相同的请求时,它会直接从缓存中把数据取出来,这是为了提高页面的响应速度和 ...