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

Hukommelsestrykanalyse Risikotilstand

Jeg har en testdatabase, der er et 2-node RAC-system. Jeg arbejder hen imod målet om at få produktionsdatabasen til Oracle 12.1.0.2 inden for cirka en måneds tidsramme. Det betyder selvfølgelig, at jeg skal have Grid Infrastructure opgraderet forud for db-opgraderingen. Jeg har også opgraderet GI på min standby-klynge og på min testdatabase. Den primære GI-opgradering er planlagt til i aften.

Lige siden jeg opgraderede GI i Test for et par uger siden, har jeg modtaget advarsler fra EM12c, der ligner følgende:

Vært=vært01
Måltype=Klynge
Målnavn=test-scanning
Kategorier=Forretning
Besked=Serveren er under forhøjet hukommelsestryk, og tjenester på alle forekomster på denne server vil blive stoppet
Sværhedsgrad=Advarsel
Begivenhedsrapporteret tid=29. juli 2015 13:05:13 CDT
Operativsystem=Linux
Platform=x86_64
Hændelsestype=Metric Alert
Begivenhedsnavn=wlm_event:wlm_qosm_mpa_risk_state
Metric Group=QoS-begivenheder
Metric=Hukommelsestrykanalyse risikotilstand
Metrisk værdi=RØD

Nogle af underretningsoplysningerne blev fjernet for kortheds skyld.

Så hvor kommer dette fra? Hvorfor betyder det for mig?

Denne fejl kommer fra Oracles Quality of Service (QoS) i Grid Infrastructure. Den er afhængig af Cluster Health Monitor (CHM) oplysninger. Mere specifikt kommer denne advarsel fra Memory Guard. For nogle oplysninger om Memory Guard, se denne PDF, specifikt slutningen af ​​anden side.

Memory Guard forsøger at redde mig fra mig selv, og som vi vil se, gør den et dårligt stykke arbejde. Ideen er, at når serveren har hukommelsestryk, vil Memory Guard tage alle tjenester på den node ude af drift. At tillade flere forbindelser ville forbruge endnu mere hukommelse og kunne gøre situationen værre. Nye forbindelsesanmodninger skal gå til en anden node i klyngen, der kører den pågældende tjeneste. Det er præcis, hvad meddelelsesværdien i advarslen fortæller mig.

Ifølge dette EM 12c-dokument, afsnit 4.3.2, Hukommelsestrykanalyserisikotilstand, skal advarselsteksten indeholde servernavnet. Alligevel fortæller meddelelsesteksten ovenfor mig ikke, hvilken server der har problemet. Heldigvis for mig er det kun en 2-node RAC-klynge, så jeg har ikke for mange at undersøge.

Når jeg ser på CPU-udnyttelsen, er alt fint. Swap-brug er praktisk talt nul på begge noder. Fri hukommelse er mere end 25% på begge noder. Nysgerrig ... hvorfor alarmen i første omgang?

Hver gang jeg får denne advarsel, kan jeg sende en anden e-mail, der siger, at tilstanden er ryddet op inden for et par minutter. Så problemet er kortvarigt. Alligevel bliver advarslerne ved med at komme.

Det viser sig efter nogen undersøgelser, at Oracle lavede en ændring til Memory Guard i Grid Infrastructure 12.1.0.2. I tidligere versioner passede Memory Guard kun efter policy-administrerede databaser. I GI 12.1.0.2 begyndte Memory Guard også at passe på admin-administrerede databaser. Og mine RAC-databaser er typisk admin-administreret, hvilket er en af ​​grundene til, at jeg ser dette nu.

For yderligere at tilføje til problemet har GI 12.1.0.2 tilsyneladende kendt fejl 1582630, hvor mængden af ​​ledig hukommelse er beregnet forkert. Bemærk 1929994.1 viser en løsning, og der er også en patch. Jeg anvendte løsningen, og det løste mit problem. Jeg får installeret patchen til Test, før jeg fortsætter til produktion i en ikke alt for fjern fremtid.

Heldigvis opdagede jeg dette før min produktions-GI-opgradering senere i aften. Ellers ville jeg have haft kede af slutbrugere, der kan have oplevet problemer med at oprette forbindelse til databasen. Dette er blot endnu et eksempel på, hvorfor jeg har en god testplatform, hvormed jeg kan opdage og løse problemerne, før ændringen foretages i produktionen.


  1. Sådan fungerer tidszone()-funktionen i PostgreSQL

  2. Tuples er ikke indsat sekventielt i databasetabellen?

  3. Hent rækken, som har Max-værdien for en kolonne

  4. SQL Server Database Backup Encryption