Oracle
 sql >> Database >  >> RDS >> Oracle

Stato di rischio dell'analisi della pressione della memoria

Ho un database di test che è un sistema RAC a 2 nodi. Sto lavorando per raggiungere l'obiettivo di portare il database di produzione su Oracle 12.1.0.2 in circa un mese. Questo ovviamente significa che devo aggiornare l'infrastruttura della griglia prima dell'aggiornamento del db. Ho aggiornato GI sul mio cluster di standby e anche sul mio database di test. L'aggiornamento del GI primario è previsto per questa sera.

Da quando ho aggiornato GI in Test alcune settimane fa, ho ricevuto avvisi da EM12c simili ai seguenti:

Host=host01
Tipo di destinazione=Cluster
Target name=test-scan
Categorie=Affari
Message=Il server è sottoposto a un'elevata pressione di memoria e i servizi su tutte le istanze su questo server verranno interrotti
Severity=Avviso
Ora segnalata evento=29 luglio 2015 13:05:13 CDT
Sistema operativo=Linux
Piattaforma=x86_64
Tipo evento=Avviso metrica
Nome evento=wlm_event:wlm_qosm_mpa_risk_state
Gruppo di metriche=Eventi QoS
Metrico=Stato di rischio dell'analisi della pressione della memoria
Valore metrico=ROSSO

Alcuni dettagli dell'avviso sono stati rimossi per brevità.

Allora da dove viene questo? Perché significa per me?

Questo errore proviene dalla qualità del servizio (QoS) di Oracle in Grid Infrastructure. Si basa sulle informazioni di Cluster Health Monitor (CHM). Più specificamente, questo avviso proviene da Memory Guard. Per alcune informazioni su Memory Guard, vedere questo PDF, in particolare la fine della seconda pagina.

Memory Guard sta cercando di salvarmi da me stesso e, come vedremo, sta facendo un pessimo lavoro. L'idea è che quando il server ha un carico di memoria, Memory Guard renderà fuori servizio tutti i servizi su quel nodo. Consentire più connessioni consumerebbe ancora più memoria e potrebbe peggiorare la situazione. Le nuove richieste di connessione devono passare a un altro nodo nel cluster che esegue quel servizio. Questo è esattamente ciò che mi dice il valore del messaggio nell'avviso.

Secondo questo documento EM 12c, sezione 4.3.2, Memory Pressure Analysis Risk State, il testo di avviso dovrebbe contenere il nome del server. Tuttavia, il testo del messaggio sopra non mi dice quale server sta riscontrando il problema. Fortunatamente per me, è solo un cluster RAC a 2 nodi, quindi non ho troppi da esaminare.

Quando guardo l'utilizzo della CPU, tutto va bene. L'utilizzo dello scambio è praticamente zero su entrambi i nodi. La memoria libera è superiore al 25% su entrambi i nodi. Curioso... perché l'avviso in primo luogo?

Ogni volta che ricevo questo avviso, posso inviare un'altra e-mail che dice che la condizione è stata risolta in pochi minuti. Quindi il problema è di breve durata. Eppure gli avvisi continuano ad arrivare.

Si scopre, dopo alcune indagini, che Oracle ha apportato una modifica a Memory Guard in Grid Infrastructure 12.1.0.2. Nelle versioni precedenti, Memory Guard si occupava solo dei database gestiti da criteri. In GI 12.1.0.2, Memory Guard ha iniziato a occuparsi anche dei database gestiti dall'amministratore. E i miei database RAC sono in genere gestiti dall'amministratore, motivo per cui lo vedo ora.

Per aggiungere ulteriormente al problema, a quanto pare, GI 12.1.0.2 ha conosciuto il bug 1582630 in cui la quantità di memoria libera se calcolata in modo errato. Nota 1929994.1 elenca una soluzione alternativa e c'è anche una patch. Ho applicato la soluzione alternativa e ha risolto il mio problema. Farò applicare la patch a Test prima di procedere alla produzione in un futuro non troppo lontano.

Per fortuna, l'ho scoperto prima del mio aggiornamento GI di produzione più tardi stasera. Altrimenti avrei sconvolto gli utenti finali che potrebbero aver riscontrato problemi di connessione al database. Questo è solo un altro esempio del motivo per cui dispongo di una buona piattaforma di test con cui scoprire e risolvere i problemi prima che la modifica venga apportata in produzione.