Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

81

积分

0

好友

4

主题
1#
发表于 2012-7-12 10:54:16 | 查看: 6515| 回复: 4
OS: AIX 6
DB: RAC 2节点
10205

症状:
普通的索引创建
CREATE INDEX justin.aaa_index ON justin.aaa_table(X_PERSON_ID);
通过os authentication进入数据库能够执行成功,但是通过listener连接的session却总是报告ora-4030;
Listener是由oracle用户启动的;
justin_$ ps -ef | grep tns
  oracle 35127444        1   0   Jul 10      -  0:11 /u001/app/oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER_1_justin –inherit
更为离奇的是,通过listener进入数据库,倘若把workarea_size_policy 设置为manual,也能创建成功;

SQL> alter session set workarea_size_policy=manual;
Session altered.
SQL> CREATE INDEX justin.aaa_index ON justin.aaa_table(X_PERSON_ID);
Index created.
SQL>  drop index justin.aaa_index;
Index dropped.
SQL> alter session set workarea_size_policy=auto;
Session altered.
SQL> CREATE INDEX justin.aaa_index ON justin.aaa_table(X_PERSON_ID);
CREATE INDEX justin.aaa_index ON justin.aaa_table(X_PERSON_ID)
                                            *
ERROR at line 1:
ORA-04030: out of process memory when trying to allocate 64544 bytes (sort
subheap,sort key)

[ 本帖最后由 myownstars 于 2012-7-12 11:01 编辑 ]

justin_ora_19923072.zip

502.78 KB, 下载次数: 1517

5#
发表于 2012-7-12 23:03:35
这个问题我曾经也碰到过,是在较大的两张表上做连接操作时触发的,后来也是修改workarea_size_policy=manual 暂时解决,不久后再次出现。
请oracle工程师上门诊断,认为是触发bug,打了相关补丁,但并没有解决。
我的数据库是aix5 p590 oracle10.2.0.4

回复 只看该作者 道具 举报

4#
发表于 2012-7-12 15:58:21
多谢回复
但是有一点疑问  listener重启前 为何设置workarea_size_policy=manual索引可以成功创建?而为auto的时候一直报ora-4030?
如果是/etc/security/limits.conf 的限制,具体是哪个参数会导致这样的错误?

[ 本帖最后由 myownstars 于 2012-7-12 16:00 编辑 ]

回复 只看该作者 道具 举报

3#
发表于 2012-7-12 14:47:19
我遇到过这个问题

通过监听器报错,但是登陆到操作系统上直接执行时可以的。

这个是由于 下面的修改是在监听器启动后修改的
oracle:
        stack_hard = -1
        data = -1
        stack = -1
        core = -1
        rss = -1

监听器还是继承了老的配置,spawrn进程的时候也是用了老的配置参数。

重新启动监听器就行了。

[ 本帖最后由 yanshoupeng 于 2012-7-12 14:48 编辑 ]

回复 只看该作者 道具 举报

2#
发表于 2012-7-12 14:10:38
/etc/security/limits.conf内容如下
default:
        fsize = -1
        core = 2097151
        cpu = -1
        data = 262144
        rss = 65536
        stack = 65536
        nofiles = 2000
root:
        rss = -1
daemon:
bin:
sys:
adm:
uucp:
nobody:
esaadmin:
        stack = 393216
        stack_hard = 393216
oracle:
        stack_hard = -1
        data = -1
        stack = -1
        core = -1
        rss = -1

ulimit -a
time(seconds)        unlimited
file(blocks)         unlimited
data(kbytes)         unlimited
stack(kbytes)        unlimited
memory(kbytes)       unlimited
coredump(blocks)     unlimited
nofiles(descriptors) 2000
threads(per process) unlimited
processes(per user)  unlimited

刚开始reload过listener,但是错误依旧;
尝试重启listener,远程登录后发现index可以正常创建;
错误目前解决了,,为何reload不能解决问题而必须要restart监听器?

回复 只看该作者 道具 举报

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

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-16 00:25 , Processed in 0.055043 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569