4. 4. 2015

Oracle - insufficient memory for PX buffers

Po upgrade oracle verzie DB, sťahovaní na iný server vznikla pri paralelnej rekompilácií invalidov (SYS.UTL_RECOMP) hláška ORA-12853. V popise nedostatok large pool a číslo paralelného procesu ktorému sa nepodarilo alokovať pamäť.

DECLARE
*
ERROR at line 1:
ORA-12801: error signaled in parallel query server P123
ORA-12853: insufficient memory for PX buffers: current 68400K, max needed 487760K
ORA-04031: unable to allocate 65560 bytes of shared memory ("large pool","unknown object","large pool","PX msg pool")
ORA-06512: at "SYS.UTL_RECOMP", line 65
ORA-06512: at line 4



Paralelná rekompilácia invalidných objektov v DB po nasadzovaní nových verzií procedúr a funkcií vývojom ušetrí čas na úkor potrebnej pamäte (large_pool využíva napr aj parallel query a rman).

Pri upgrade oraclu pravdepodobne postačuje zvýšiť SGA pamäť, keďže stúpajú nároky s verziou a pamäť potom nedostačuje na náročnejšie operácie.

Pri migrovaní na iný server môže nastať problém kôli vyššiemu počtu CPU. Okolo toho je celá teória akými vzorcami počíta oracle automaticky podľa počtu procesorov počet paralelných procesov. Popis napr tu:

Riešením v prípade migrácie (upgradu servera) je zvýšenie shared_pool, nastavenie parallel_max_servers na nižšie číslo (štandardne je 0 - automatika), pretože je štandardne počítané cez konštantu z počtu procesorov vypočíta nové hodnoty možno podstatne vyššie ako pôvodné.

PARALLEL_MAX_SERVERS(AUTO) = PARALLEL_THREADS_PER_CPU x CPU_COUNT x concurrent_parallel_users x 5

SQL> ALTER SYSTEM SET parallel_max_servers=30 SCOPE=BOTH;


Žiadne komentáre:

Zverejnenie komentára