请教:关于ORA-04030

[复制链接]
查看11 | 回复9 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
现象:
insert /*+ append */ into TABLE_NAME select * from TABLE_NAME_2;
出错:ORA-04030: out of process memory when trying to allocate 8192 bytes (sort subheap,sort key)
注:TABLE_NAME 为 nologging,数据量在50万条。
解决:不用append
insert into TABLE_NAME select * from TABLE_NAME_2;
错误消除。
其他一些小表(数据量小),使用insert /*+ append */ into 没有问题。
想请教这是什么原因?
谢谢!
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
Cause: Operating system process private memory has been exhausted.
Action: See the database administrator or operating system administrator to increase process memory quota. There may be a bug in the application that causes excessive allocations of process memory space.

可能與你的PGA太小了吧.增加PGA看看.
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
PGA足够。
但append为什么和PGA有关?
另外,请问,一个session能用PGA的多少是否有限制?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
最初由 berbang 发布
[B]PGA足够。
但append为什么和PGA有关?
另外,请问,一个session能用PGA的多少是否有限制? [/B]

session_pga_size= min(100M,pga_aggregate*5%)
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
补充:此为64bit的,操作系统平台为AIX
在AIX中,已经对oracle用户的内存使用放开的限制(修改limits文件,把oracle用户的rss和stack都修改为-1),错误依旧。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
你给的信息太少了。
数据库的版本,pga的设置或sort_area的大小
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
1.数据库版本?平台?
2.是否使用了pga自动管理?
3.是在执行insert /*+ append */ into TABLE_NAME select * from TABLE_NAME_2;的时候出错吗?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
加大sga_max_size!几天前我遇到过。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
最初由 husthxd 发布
[B]1.数据库版本?平台?
2.是否使用了pga自动管理?
3.是在执行insert /*+ append */ into TABLE_NAME select * from TABLE_NAME_2;的时候出错吗? [/B]


1、
平台:AIX 5.2
数据库版本:
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - 64bit Production
PL/SQL Release 9.2.0.1.0 - Production
CORE
9.2.0.1.0
Production
TNS for IBM/AIX RISC System/6000: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production
2、
SQL> show parameter policy
NAME
TYPE
VALUE
------------------------------------ -------------------------------- ----------
--------------------
workarea_size_policy
string
AUTO
SQL> show parameter pga
NAME
TYPE
VALUE
------------------------------------ -------------------------------- ----------
--------------------
pga_aggregate_target
unknown
1048576000
SQL> show parameter sort
NAME
TYPE
VALUE
------------------------------------ -------------------------------- ----------
--------------------
nls_sort
string
sort_area_retained_size
integer
0
sort_area_size
integer
1024000
3、是的。去掉/*+append */就没事了。数据量也就在40、50万条,目标表上有不少索引。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
pga开的太大了,减小一半试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行