Welcome 微信登录

首页 / 数据库 / MySQL / ORA-30009 故障处理一例

背景:
刚才一网友问到ORA-30009的错误,数据库版本为10.2.0.5,操作系统版本为RedHat 4;随即我考虑了到了硬件和buffer的限制这一块,对其做了验证,详细如下:错误信息:
SQL> CREATE TABLE t AS SELECT rownum AS n, lpad("*",1000,"*") AS pad FROM dual CONNECT BY level <= 100000;
CREATE TABLE t AS SELECT rownum AS n, lpad("*",1000,"*") AS pad FROM dual CONNECT BY level <= 100000
                                                                     *
ERROR at line 1:
ORA-30009: Not enough memory for CONNECT BY operation处理步骤:查看限制,结论是没有问题。
[Oracle@yangbo bdump]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
pending signals                 (-i) 1024
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 8192
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited查看数据库的buffer为自动设置,问题也不大。
SQL> show parameter bufferNAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
buffer_pool_keep                     string
buffer_pool_recycle                  string
db_block_buffers                     integer     0
log_buffer                           integer     2875392
use_indirect_data_buffers            boolean     FALSE同时查看了下sga的配置,通过经验来看,发现好像小了。19:46:31 SQL> show parameter sgaNAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     FALSE
sga_max_size                         big integer 312M
sga_target                           big integer 312M
分析:    通过如上的情况分析得出,他将要插入的数据是在100000行,但是他的sga配置只有312M,主机内存只有512M,数据库是跑在虚拟机上的,并且之前已经将该100000行数据的表进行了一次插入操作,并且没有提交
在进行第二次插入的时候报ORA-30009这个错误,由此可判断是由于SGA太小导致。处理过程:1、添加内存到1G
2、扩大SGA
SQL>alter system set sga_max_size=512M scope=spfile;
SQL>alter system set sga_target=512M scope=spfile;
3、重启数据库。
4、再次执行,故障解决。更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12Oracle中Decode()函数一些非常有用的 PostgreSQL 扩展相关资讯      Oracle数据库基础教程 
  • 在Oracle数据库中插入含有&符号的  (03/06/2013 09:20:14)
  • Oracle 执行计划更改导致数据加工  (02/13/2013 14:45:04)
  • 判断Oracle Sequence是否存在  (02/13/2013 14:32:26)
  • Oracle数据库中无法对数据表进行  (02/26/2013 14:24:58)
  • Oracle 在同一台主机上建立用户管  (02/13/2013 14:40:58)
  • Oracle em 无法启动,报not found错  (02/13/2013 14:29:48)
本文评论 查看全部评论 (0)
表情: 姓名: 字数