ORA-30009 故障处理一例
2012-04-23 01:21
351 查看
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 buffer
NAME 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 sga
NAME 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、再次执行,故障解决。
还有一种原因是由于Bug 11805372导致,详细请查看如下文章:
http://space.itpub.net/?uid-20674423-action-viewspace-itemid-722002
/article/2627900.html
背景:
刚才一网友问到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 buffer
NAME 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 sga
NAME 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、再次执行,故障解决。
还有一种原因是由于Bug 11805372导致,详细请查看如下文章:
http://space.itpub.net/?uid-20674423-action-viewspace-itemid-722002
/article/2627900.html
相关文章推荐
- ORA-28547 故障处理一例
- 远程通过监听连接报ORA-01034故障处理一例
- ORA-27102:out of memeory 故障处理一例
- ORA-00054 故障处理一例
- ORA-00054 故障处理一例
- ORA-00054 故障处理一例
- ORA-00054 故障处理一例
- ORA-07445/ORA-00108故障处理
- Oracle之故障处理:解决“ora-01652无法扩展temp段”问题
- Oracle内部错误:ORA-00600[13013][5001]故障诊断一例
- ORA-00704,ORA-1092处理一例
- webcdn故障处理一例
- 【故障处理】ORA-12162: TNS:net service name is incorrectly specified
- 【Oracle 故障处理一则】 ORA-600 - 13013处理过程
- 处理无效索引ORA-20000的故障
- Oracle数据库 ORA-600 [13013]故障处理
- ClearCase故障处理一例:解决eclipsed状态的私有文件不能被删除
- ORA-07445/ORA-00108故障处理
- DNS故障处理一例(转)
- ORA-02050故障诊断一例