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;

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.