ORA-00604 ORA-04031 ORA-06512

  • Post author:
  • Post category:其他


数据库创建好长时间了,应用倒是没有多大的问题,这一段时间运行还是比较稳定的,
但检查日志时发现里面一直在报:
unixware 7.1.3

oracle 8.1.7

*** 2004-12-18 01:46:10.137

*** SESSION ID
皱眉
11.46) 2004-12-18 01:46:10.135

Error in executing triggers on instance shutdown

*** 2004-12-18 01:46:10.137

ksedmp: internal or fatal error

ORA-00604: error occurred at recursive SQL level 1

ORA-04031: unable to allocate 4032 bytes of shared memory (“shared pool”,”java/lang/StringSYS”,”joxlod: in ehe”,”ioc_allocate_pal”)

ORA-06512: at “SYS.DBMS_JAVA”, line 0

ORA-06512: at line 2

这样的错误,经itpub上的朋友帮助,估计问题的根本原因已经找到,现将帖子上的内容摘录下来:

sunchao
兄弟们帮忙看看

在我的数据库的日志中一直报有这样的错误

请各位分析一下原因

unixware 7.1.3

oracle 8.1.7
*** 2004-12-18 01:46:10.137

*** SESSION ID11.46) 2004-12-18 01:46:10.135

Error in executing triggers on instance shutdown

*** 2004-12-18 01:46:10.137

ksedmp: internal or fatal error

ORA-00604: error occurred at recursive SQL level 1

ORA-04031: unable to allocate 4032 bytes of shared memory (“shared pool”,”java/lang/StringSYS”,”joxlod: in ehe”,”ioc_allocate_pal”)

ORA-06512: at “SYS.DBMS_JAVA”, line 0

ORA-06512: at line 2

blue_prince10

永远的巴乔

ORA-04031 unable to allocate string bytes of shared memory (“string”,”string”,”string”,”string”)
Cause: More shared memory is needed than was allocated in the shared pool.
Action: If the shared pool is out of memory, either use the DBMS_SHARED_ POOL package to pin large packages, reduce your use of shared memory, or increase the amount of available shared memory by increasing the value of the initialization parameters SHARED_POOL_RESERVED_SIZE and SHARED_ POOL_SIZE. If the large pool is out of memory, increase the initialization parameter LARGE_POOL_SIZE.
你的SGA是怎么分配的,共享池多大?

sunchao

老会员

#

# Copyright (c) 1991, 2000 by Oracle Corporation

#

##############################################################################

# Example INIT.ORA file

#

# This file is provided by Oracle Corporation to help you customize

# your RDBMS installation for your site. Important system parameters

# are discussed, and example settings given.

#

# Some parameter settings are generic to any size installation.

# For parameters that require different values in different size

# installations, three scenarios have been provided: SMALL, MEDIUM

# and LARGE. Any parameter that needs to be tuned according to

# installation size will have three settings, each one commented

# according to installation size.

#

# Use the following table to approximate the SGA size needed for the

# three scenarious provided in this file:

#

# ——-Installation/Database Size——

# SMALL MEDIUM LARGE

# Block 2K 4500K 6800K 17000K

# Size 4K 5500K 8800K 21000K

#

# To set up a database that multiple instances will be using, place

# all instance-specific parameters in one file, and then have all

# of these files point to a master file using the IFILE command.

# This way, when you change a public

# parameter, it will automatically change on all instances. This is

# necessary, since all instances must run with the same value for many

# parameters. For example, if you choose to use private rollback’ segments,

# these must be specified in different files, but since all gc_*

# parameters must be the same on all instances, they should be in one file.

#

# INSTRUCTIONS: Edit this file and the other INIT files it calls for

# your site, either by using the values provided here or by providing

# your own. Then place an IFILE= line into each instance-specific

# INIT file that points at this file.

#

# NOTE: Parameter values suggested in this file are based on conservative

# estimates for computer memory availability. You should adjust values upward

# for modern machines.

#

###############################################################################
db_name = “test”

instance_name = test
service_names = test

control_files = (“/oracledata/oradata/test/control01.ctl”, “/oracledata/oradata/test/control02.ctl”, “/oracledata/oradata/test/control03.ctl”)
open_cursors = 300

max_enabled_roles = 30

db_block_buffers = 40000
shared_pool_size = 131072000
large_pool_size = 614400

java_pool_size = 0
log_checkpoint_interval = 10000

log_checkpoint_timeout = 0
processes = 200
log_buffer = 540672
# audit_trail = false # if you want auditing

# timed_statistics = false # if you want timed statistics

# max_dump_file_size = 10000 # limit trace file size to 5M each
# Uncommenting the lines below will cause automatic archiving if archiving has

# been enabled using ALTER DATABASE ARCHIVELOG.

# log_archive_start = true

# log_archive_dest_1 = “location=/home/oracle/admin/test/arch”

# log_archive_format = arch_%t_%s.arc

#DBCA uses the default database value (30) for max_rollback_segments

#100 rollback segments (or more) may be required in the future

#Uncomment the following entry when additional rollback segments are created and made online

#max_rollback_segments = 38

# If using private rollback segments, place lines of the following

# form in each of your instance-specific init.ora files:

#rollback_segments = ( RBS0, RBS1, RBS2, RBS3, RBS4, RBS5, RBS6, RBS7, RBS8, RBS9, RBS10, RBS11, RBS12, RBS13, RBS14, RBS15, RBS16, RBS17, RBS18, RBS19, RBS20, RBS21, RBS22, RBS23, RBS24, RBS25, RBS26, RBS27, RBS28 )
# Global Naming — enforce that a dblink has same name as the db it connects to

# global_names = false
# Uncomment the following line if you wish to enable the Oracle Trace product

# to trace server activity. This enables scheduling of server collections

# from the Oracle Enterprise Manager Console.

# Also, if the oracle_trace_collection_name parameter is non-null,

# every session will write to the named collection, as well as enabling you

# to schedule future collections from the console.

# oracle_trace_enable = true
# define directories to store trace and alert files

background_dump_dest = /oracledata/admin/test/bdump

core_dump_dest = /oracledata/admin/test/cdump

#Uncomment this parameter to enable resource management for your database.

#The SYSTEM_PLAN is provided by default with the database.

#Change the plan name if you have created your own resource plan.# resource_manager_plan = system_plan

user_dump_dest = /oracledata/admin/test/udump
db_block_size = 8192
remote_login_passwordfile = exclusive
os_authent_prefix = “”
# The following parameters are needed for the Advanced Replication Option

job_queue_processes = 4

job_queue_interval = 60

distributed_transactions = 10

open_links = 4
compatible = “8.1.0”

sort_area_size = 65536

sort_area_retained_size = 65536
内存是512M的
xjg

老会员
是不是跟这两个有关系?

SYS.DBMS_JAVA
java_pool_size=0
128M的Share pool没有那么快就用完吧? 除非你是生产数据库, 当然还要看实际情况
embed_rabbit

一般会员
shared_pool_reserved_size 看看你这个是多大

512m 内存 128share pool 太大了点巴

sunchao

老会员

我们没有用到java程序

这样的错误从数据库刚建立起来到现在一直都有
shared_pool_reserved_size

应该是默认的

现在没有在系统跟前没办法查

我想是不是因为:

编译Java代码时出现的ORA-4031

在你编译Java代码的时候如果内存溢出,你会看到错误:
A SQL exception occurred while compiling: :

ORA-04031: unable to allocate bytes of shared memory

(“shared pool”,”unknown object”,”joxlod: init h”, “JOX: ioc_allocate_pal”)

解决办法是关闭数据库然后把参数 JAVA_POOL_SIZE 设定为一个较大的值。这里错误信息中提到的 “shared pool” 其实共享全局区(SGA)溢出的误导,并不表示你需要增加SHARED_POOL_SIZE,相反,你必须加大 JAVA_POOL_SIZE 参数的值,然后重启动系统,再试一下。参考: 。
这种情况引起的问题
应用倒是没有啥问题,就是一直有这样的错误提示

jlandzpa

版主


设定

java_pool_size=20m

husthxd

版主

增大java pool

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/39335/viewspace-351719/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/39335/viewspace-351719/