Ho bisogno di alcuni suggerimenti su come diagnosticare e risolvere questo problema. Non so se si tratta di un semplice problema di configurazione del server o di un problema di progettazione dell'applicazione (o di entrambi).Risoluzione di ORA-4031 "impossibile allocare x byte di memoria condivisa"
Una volta o due volte ogni qualche mese questo database Oracle XE segnala errori ORA-4031. Non punta a nessuna parte particolare della sga in modo coerente. Un esempio recente è:
ORA-04031: unable to allocate 8208 bytes of shared memory ("large pool","unknown object","sort subheap","sort key")
Quando questo errore viene in su, se l'utente continua a rinfrescante, cliccando su diversi collegamenti, faranno in genere ottenere più di questi tipi di errori in tempi diversi, allora presto' Otterremo gli errori di pagina "404 non trovati".
Il riavvio del database in genere risolve il problema per un po ', quindi un mese o giù di lì torna di nuovo, ma raramente nella stessa posizione nel programma (cioè non sembra collegato a una particolare parte di codice) (l'errore di esempio precedente è stato generato da una pagina Apex che stava ordinando 5000+ righe da una tabella).
Ho provato ad aumentare sga_max_size
da 140 M a 256 M e spero che questo possa aiutare le cose. Naturalmente, non saprò se questo ha aiutato dal momento che ho dovuto riavviare il database per modificare l'impostazione :)
Sto eseguendo Oracle XE 10.2.0.1.0 su una scatola Oracle Enterprise Linux 5 con 512 MB di RAM. Il server esegue solo il database, Oracle Apex (v3.1.2) e il server Web Apache. L'ho installato con praticamente tutti i parametri predefiniti ed è stato eseguito abbastanza bene per circa un anno. La maggior parte dei problemi sono riuscito a risolvere me stesso sintonizzando il codice dell'applicazione; non è utilizzato in modo intensivo e non è un sistema aziendale critico.
Queste sono alcune impostazioni correnti penso possa essere rilevante:
pga_aggregate_target 41,943,040
sga_max_size 268,435,456
sga_target 146,800,640
shared_pool_reserved_size 5,452,595
shared_pool_size 104,857,600
Se si tratta di alcun aiuto, ecco le attuali dimensioni SGA:
Total System Global Area 268435456 bytes
Fixed Size 1258392 bytes
Variable Size 251661416 bytes
Database Buffers 12582912 bytes
Redo Buffers 2932736 bytes
ulteriori informazioni: http://download.oracle.com/docs/cd/B19306_01/server. 102/b14231/create.htm # sthref376 –
btw large_pool_size è 0 (ovvero gestito automaticamente da ASMM) –
512M di RAM sembrano bassi per la configurazione del database + altri processi che hai menzionato. Che cosa gli strumenti come top o vmstat ti dicono della memoria a livello di SO? – dpbradley