您的位置:首页 > 数据库 > Oracle

oracle 12c RAC ORA29876,ORA-2000,ORA-30576,ORA-04031

2017-09-07 09:14 731 查看
环境双节点RAC

编号

名称

用户

版本

备注

1

Oracle linux

TEST

7.3

 

2

Grid Infrastructure

Grid

12.2.0.1.0

 

3

Oracle database

Oracle

12.2.0.1.0

 

导入业务数据正常,但是在业务运行是收到用户报障

[17-9-5 10:00:07:200 CST] 00000159 SystemOut     O 05 9月 2017 10:00:07:200 [ERROR] [MAXIMO] [] ORA-29876: 无法执行 ODCIINDEXDELETE 例行程序
ORA-20000: Oracle Text error:
DRG-10607: 索引元数据尚未准备好对 DML 进行排队
ORA-30576: ConText 选项字典加载错误
ORA-04031: 无法分配 22800 字节的共享内存 ("shared pool","INVRESERVDES_TIDX","KGLH0^b334ed30","drdmlpo:new policy")

java.sql.SQLException: ORA-29876: 无法执行 ODCIINDEXDELETE 例行程序
ORA-20000: Oracle Text error:
DRG-10607: 索引元数据尚未准备好对 DML 进行排队
ORA-30576: ConText 选项字典加载错误
ORA-04031: 无法分配 22800 字节的共享内存 ("shared pool","INVRESERVDES_TIDX","KGLH0^b334ed30","drdmlpo:new policy")
对应的解释如下

[oracle@12cr2 ~]$ oerr ora 29876
29876, 00000, "failed in the execution of the ODCIINDEXDELETE routine"
// *Cause: Failed to successfully execute the ODCIIndexDelete routine.
// *Action: Check to see if the routine has been coded correctly.
[oracle@12cr2 ~]$ oerr ora 4031
04031, 00000, "unable to allocate %s bytes of shared memory (\"%s\",\"%s\",\"%s\",\"%s\")"
// *Cause:  More shared memory is needed than was allocated in the shared
//          pool or Streams 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.
//          If the error is issued from an Oracle Streams or XStream process,
//          increase the initialization parameter STREAMS_POOL_SIZE or increase
//          the capture or apply parameter MAX_SGA_SIZE.
确认了我的内存肯定是够的,不知道为何会报这个错误查看了大牛的解释如下
http://www.laoxiong.net/an-ora-04031-case.html

进行了操作禁用oracle的隐含参数_enable_shared_pool_durations

ALTER system SET "_enable_shared_pool_durations"=FALSE scope=spfile;

--启用---alter system reset "_enable_shared_pool_durations" scope=spfile sid='*';恢复的方法

--查看当前的参数值
col name for a30;
col value for a10;
select
x.ksppinm  name,
y.ksppstvl  value,
y.ksppstdf  isdefault,
decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE')  ismod,
decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE')  isadj
from
sys.x$ksppi x,
sys.x$ksppcv y
where
x.inst_id = userenv('Instance') and
y.inst_id = userenv('Instance') and
x.indx = y.indx and
x.ksppinm like '%_enable_shared_pool%'
order by
translate(x.ksppinm, ' _', ' ');
由于需要重启实例生效,双节点在不影响业务的情况下执行如下重启命令

srvctl stop instance -n node1 -db orcl -force -failure
节点一执行完毕后,在节点二上执行一遍即可。

重启完毕后业务运行不再报错,错误解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐