Tag Archives: ORA-04031

ORA-12801,ORA-12853,ORA-04031

Error details:
————-
ORA-12801: error signaled in parallel query server P026, instance my_server:mydb (2)
ORA-12853: insufficient memory for PX buffers: current 323904K, max needed 2673360K
ORA-04031: unable to allocate 65560 bytes of shared memory (“large pool”,”unknown object”,”large pool”,”PX msg pool”)

The problem was that default parallel_max_servers was 470!
This number would be acceptable if database had enough free memory (specially pga)
to accommodate all of them, but database MEMORY_TARGET was the minimal.

SQL> show parameter parallel

NAME TYPE VALUE
———————————— ———– ——————————
fast_start_parallel_rollback string LOW
parallel_adaptive_multi_user boolean TRUE
parallel_automatic_tuning boolean FALSE
parallel_degree_limit string CPU
parallel_degree_policy string MANUAL
parallel_execution_message_size integer 16384
parallel_force_local boolean FALSE
parallel_instance_group string
parallel_io_cap_enabled boolean FALSE
parallel_max_servers integer 470
parallel_min_percent integer 0
parallel_min_servers integer 0
parallel_min_time_threshold string AUTO
parallel_server boolean TRUE
parallel_server_instances integer 2
parallel_servers_target integer 512
parallel_threads_per_cpu integer 2
recovery_parallelism integer 0

So to resolve it, I had to change parallel_max_servers parameter to a lower value:

ALTER SYSTEM SET parallel_max_servers=40 SCOPE=BOTH;

ORA-04031,ORA-06508,RMAN-00554,RMAN-06429

ORA-04031_ORA-06508_RMAN-00554_RMAN-06429

ORACLE error from target database:
ORA-04031: unable to allocate 41152 bytes of shared memory (“shared pool”,”DBMS_RCVMAN”,”PL/SQL MPCODE”,”BAMIMA: Bam Buffer”)
ORA-06508: PL/SQL: could not find program unit being called: “SYS.DBMS_RCVMAN”

error executing package DBMS_RCVMAN in TARGET database
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-06429: TARGET database is not compatible with this version of RMAN

SQL> show parameter share pool;

SQL> show parameter SGA

SQL> select dbms_rcvman.getpackageversion from dual;
If getting an error

I tried flushing my shared_pool and then checked to see how large my shared_pool was:

SQL> alter system flush shared_pool;

System altered.

SQL> select dbms_rcvman.getpackageversion from dual;
select dbms_rcvman.getpackageversion from dual
*
ERROR at line 1:
ORA-04031: unable to allocate 41152 bytes of shared memory (“shared
pool”,”DBMS_RCVMAN”,”PL/SQL MPCODE”,”BAMIMA: Bam Buffer”)

SQL> show parameter shared_pool

NAME TYPE VALUE
———————————— ———– ——————————
shared_pool_reserved_size big integer 10M
shared_pool_size big integer 200M

Shared_pool size was small .. so i increased it and that fixed the problem:

SQL> alter system set shared_pool_size=300m;

System altered.

SQL> select dbms_rcvman.getpackageversion from dual;

GETPACKAGEVERSION
——————————————————————————–
08.00.04.00

backup is now running ok.