oracle问题ORA-00600[729][space leak]

2023-05-16,,

故障现象

ORA-00600: 内部错误代码, 参数: [729], [33600], [space leak], [], [], [], [], [], [], [], [], []

故障分析

根据oracle官方文档说明:

Doc ID 403584.1

What is a space (memory) leak?

Memory leak problems generally occur when Oracle is trying to free memory allocated to a process.
The memory leak dump is generally discovered during session logoff, when Oracle frees the heaps that are allocated for the user process. When a user connects to Oracle, a user process is created and at that time the heap is allocated. Every process will have its own memory heap. The memory is organized in to heaps and every heap consists of one or more extents.
Each extent contains a series of contiguous memory chunks, and these chunks can be either FREE or ALLOCATED.
The Generic Heap Manager takes care of allocating and deallocating the memory chunks, with the help of FREE LISTS and LRU LISTS. Chunk types are as follows: 1. FREE
2. FREEABLE
3. RECREATABLE
4. PERMANENT
5. FREEABLE WITH MARK It is not mandatory that each extent only contains one type of chunk. Extents can contain various types of chunks. When processes require memory chunks, they are allocated as needed. Oracle keeps track of the amount of memory allocated for the process internally. When the process terminates, all of the memory that has been allocated for the process is automatically released. When the memory is released the allocated heaps are freed. Generally, when the heap is freed the only chunks that the process should identify as allocated are the PERMANENT chunks and FREE chunks on the freelist. If the process finds there are still FREEABLE or RECREATABLE chunks remaining, then the process has not properly deallocated the memory. This situation is considered a space leak. Oracle generally performs space leak checks for the SGA Heap, UGA Heap, Large Pool Heap and PGA Heap. A space leak error will result in a trace file in the BACKGROUND_DUMP_DESTINATION or USER_DUMP_DESTINATION. A space leak problem will generally capture the trace information and the heap dump.

大概总结是:

当oracle尝试释放分配给进程的内存时,会发生memroy leak问题,这个问题一般是在用户注销会话期间出现。

解决

oracle认为小于90,000字节的内存泄漏并不会引起大问题,一般可以忽略,oracle也提供了规避办法:

开启如下事件:

a. Set the following event in init.ora parameter file. This example disables reporting for space leaks less than 90000 bytes:

event = "10262 trace name context forever, level 90000"

b. Stop and restart the database.

就是设置10262 event事件,重启数据库实例。

alter session set events '10262 trace name context forever, level 90000'; 会话级

alter system set events '10262 trace name context forever, level 90000'; 系统级

另,关闭事件的方式如下:

对于当前会话:alter session set events '10262 trace name context off';

对于系统:alter system set events '10262 trace name context off';

oracle问题ORA-00600[729][space leak]的相关教程结束。

《oracle问题ORA-00600[729][space leak].doc》

下载本文的Word格式文档,以方便收藏与打印。