sql >> Databasteknik >  >> RDS >> Oracle

Minnestryckanalys Risktillstånd

Jag har en testdatabas som är ett RAC-system med 2 noder. Jag arbetar mot målet att få produktionsdatabasen till Oracle 12.1.0.2 inom ungefär en månads tidsram. Detta innebär givetvis att jag måste uppgradera Grid Infrastructure innan db-uppgraderingen. Jag har uppgraderat GI på mitt standby-kluster och på min testdatabas också. Den primära GI-uppgraderingen är planerad till i kväll.

Ända sedan jag uppgraderade GI i Test för några veckor sedan har jag fått varningar från EM12c som liknar följande:

Värd=värd01
Måltyp=Kluster
Målnamn=test-skanning
Kategorier=Företag
Meddelande=Servern är under högt minnestryck och tjänster på alla instanser på den här servern kommer att stoppas
Allvarlighetsgrad=Varning
Händelserapporterad tid=29 juli 2015 13:05:13 CDT
Operativsystem=Linux
Plattform=x86_64
Händelsetyp=Mätvärdesvarning
Event name=wlm_event:wlm_qosm_mpa_risk_state
Mätvärdesgrupp=QoS-händelser
Metric=Risktillstånd för analys av minnestryck
Mätvärde=RÖTT

En del av varningsinformationen togs bort för korthetens skull.

Så var kommer detta ifrån? Varför betyder det för mig?

Det här felet kommer från Oracles Quality of Service (QoS) i Grid Infrastructure. Den förlitar sig på information om Cluster Health Monitor (CHM). Mer specifikt kommer denna varning från Memory Guard. För lite information om Memory Guard, se denna PDF, särskilt slutet av den andra sidan.

Memory Guard försöker rädda mig från mig själv, och som vi kommer att se gör den ett dåligt jobb. Tanken är att när servern har minnestryck kommer Memory Guard att ta alla tjänster på den noden ur drift. Att tillåta fler anslutningar skulle förbruka ännu mer minne och kan göra situationen värre. Nya anslutningsbegäranden måste gå till en annan nod i klustret som kör den tjänsten. Detta är exakt vad meddelandevärdet i varningen säger till mig.

Enligt detta EM 12c-dokument, avsnitt 4.3.2, Minnestryckanalys risktillstånd, ska varningstexten innehålla servernamnet. Men meddelandetexten ovan berättar inte för mig vilken server som har problemet. Lyckligtvis för mig är det bara ett RAC-kluster med två noder, så jag har inte för många att undersöka.

När jag tittar på CPU-användningen är allt bra. Swap-användningen är praktiskt taget noll på båda noderna. Ledigt minne är mer än 25 % på båda noderna. Nyfiken...varför varningen i första hand?

Varje gång jag får den här varningen får jag ett annat e-postmeddelande som säger att tillståndet är löst inom några minuter. Så frågan är kortlivad. Men varningarna fortsätter att komma.

Det visar sig, efter en del undersökningar, att Oracle gjorde en förändring av Memory Guard i Grid Infrastructure 12.1.0.2. I tidigare versioner tog Memory Guard bara hand om policyhanterade databaser. I GI 12.1.0.2 började Memory Guard också ta hand om adminhanterade databaser. Och mina RAC-databaser är vanligtvis admin-hanterade, vilket är en anledning till att jag ser detta nu.

För att ytterligare lägga till problemet, uppenbarligen, har GI 12.1.0.2 känt till Bug 1582630 där mängden ledigt minne har beräknats felaktigt. Notera 1929994.1 listar en lösning och det finns en patch också. Jag tillämpade lösningen och det löste mitt problem. Jag kommer att få patchen applicerad på Test innan jag fortsätter till produktion inom en inte alltför avlägsen framtid.

Tack och lov upptäckte jag detta innan min produktions-GI-uppgradering senare ikväll. Annars hade jag haft upprörda slutanvändare som kan ha upplevt problem med att ansluta till databasen. Det här är bara ytterligare ett exempel på varför jag har en bra testplattform för att upptäcka och lösa problemen innan förändringen görs i produktionen.


  1. Hur man inaktiverar MySQL strikt läge

  2. Så här fixar du "Endast ett uttryck kan anges i urvalslistan..." i SQL Server

  3. Hur ansluter du till en LDAP-server med node-oracledb?

  4. Psychopg2-bilden hittades inte