Notes.md 2.93 KB

Notes

PDB logic

Bytt approuch och tagit bort allt som tidigare fanns i PDB branchen och har mergat den med master (då den innehöll TNS koden).

Gamla tanken var att via en PDB klura ut vad CDB databasens conn sträng är, ansluta till den, och hämta data för alla PDBer istället och cacha detta i CDB objektet. Hade funkat fint, förutom att det förutsätter att CDB och PDB har samma lyssnare, vilket de inte nödvändigtvist har. Jag kan inte klura ut vad lyssnaren ska vara till CDB.

Istället får det bli en lösning där användaren alltid anger CDB databasens conn sträng, men kan med en flagga välja att få ut en PDB's info istället.

Idag ser tex ett anrop ut så här:

GET /OraMonREST/getData?age=14&connectionString=jdbc%3Aoracle%3Athin%3A%40%2F%2Fu03634.kap.rsv.se%3A1526%2FDB1K12

I detta kan vi lägga till en parameter, forPDB=DA1K001 tex och då returneras endast värden för den PDB'n. På så sätt kommer anrop till flera olika PDB att hämtas från samma CDB data cache. Anropet till CDB'n skulle kunna returnera en lista på alla PDBer också. Ännu snyggare vore om en CDB kunde bryta ner graferna per PDB också ;)

SQL satser

select cdb from v$database; Returnerar YES om databasen är en CDB (dvs Oracle 12 med CDB påslaget). Returnerar YES även på en PDB.

Views for PDB's

V_$CON_SYSSTAT V_$CON_SYSTEM_WAIT_CLASS V_$CON_SYSTEM_EVENT V_$CON_SYS_TIME_MODEL

Can be checked with a select like select view_name from all_views where view_name like 'V_$CON_%';

Slå samman con_id med statname select systimestamp, name || con_id, value from V$CON_SYSSTAT;

2018-03-28 Första versionen med PDB stöd. Behövs mer tester.

PDB CPU: 11.056953715796771 CDB CPU: 11.204673034978592 DA1K001: 11.084891829252536 DA1K002: 55.75905904774211 TOTAL : 66.84395087699465

Exemplet ovan är med ett delta på 60 sekunder, PDB går direkt mot PDB con string, CDB direkt mot CDB och DA räknarna är från denna CDB. DA1K002 är på samma CDB, och getCPUPercent() ovan returnerar av någon anledning att den tar 55% cpu när hela CDB bara tar 11.2 vilket känns fel. Det är bara DA1K001 som jobbar. Nedan från samma mätning fast Logical IO per Second istället:

PDB LIO: 433961.7046663872 CDB LIO: 433532.02901594585 DA1K001: 435343.22211814864 DA1K002: 9.075934239850135 TOTAL : 435352.2980523885

Här känns alla värden rätt. Får göra klart GUI bitarna och se hur monitorerna beteer sig under längre tid.

När jag kört ett tag i graph läget nu på en PDB via CDB, ser jag även konstiga värden på mycket annat. Cache Hit Ratio på 1200%, negativa värden på flera räknare, mm. GUI delarna lirar inte riktigt heller, getMetrics ger en 500 och en NullPointer (beror på att pdbName skickas alltid, null om den inte ska användas, och det funkar inte i alla metoder i OraMon.java klassen). Anger man en PDB i OraMon.jsp så blir det HTTP 0 status?? på getData och getMetrics knapparna.