Wozu kann man OraSASH nutzen?
Seit Oracle 10g nutzt Oracle die View v$active_session_history als Basis für die Performanceübersicht - leider benötigt man für die Nutzung sowohl eine Oracle Enterprise Edition als auch noch das Diagnostic Pack.
Da im Grund die v$active_session_history nichts anderes wie eine sekündliche Kopie von Spalten aus v$session ist, haben die Entwickler dieses Projekts einfach genau dies umgesetzt - eine simulierte ASH für alle Oracle Datenbank Editions!
Wo findet man dieses Projekt?
OraSASH - Oracle Simulated Active Session History - findet man unter http://pioro.github.io/orasash/. Von hier wird die Software auch heruntergeladen.
Die Architektur und Installation
OraSASH nutzt eine Datenbank für das eigene Repository - dies kann eine beliebige Oracle Datenbank (vermutlich auch OracleXE) sein und wird hier in dem Artikel als "@REPOS" angesprochen.
Die Datenbanken, für die die ASH (und andere) Daten gesammelt werden sollen, werden als TARGET Datenbanken (RMAN lässt grüßen) bezeichnet und müssen mittels Datenbank Link erreichbar sein.
Installation der benötigten Views auf der TARGET (dort wo die ASH benötigt wird)
Zuerst richtet man auf den TARGET Datenbanken für den Remotezugriff benötigten Benutzer SASH (den darf es in der Datenbank nicht geben!!) ein und legt einige Objekte an.
sqlplus / as sysdba
@target_user_view_.sql
Installation der Strukturen in der Repository Datenbank
Die Daten werden in einer Repository Datenbank gesammelt, auf dieser installiert man wie folgt - Vorsicht auch hier heisst der Benutzer SASH!
sqlplus sys/pwd@REPOS as sysdba
@config
## hier kann man am Ende die erst Target Datenbank hinzufügen - es geht aber auch später.
Target Datenbank im Repository hinzufügen
sqlplus sash/sash@REPOS
@adddb
## kleine Falle: bei PDBs muss man den CDB Instanznamen angeben...
Daten sammeln starten
sqlplus sash/sash@REPOS
exec sash_repo.start_collecting_jobs;
Job-Status überprüfen
sqlplus sash/sash@REPOS
@job_stat
Datenbank auswählen
sqlplus sash/sash@REPOS
@currentdb
Zusammenfassung
Die Daten landen jetzt im Repository Datenbank Schema in bekannten Tabellen wie v$active_session_history, aber auch einigen SASH% Tabellen (als Ersatz für DBA_HIST) wie SASH_STATS, SASH_SYS_TIME_MODEL, SASH_OSSTAT, usw. werden befüllt.
Diese kann man nun mittels SQL auswerten. Aktuell gibt es auch schon einige Ansätze für eine GUI für OraSASH - unter anderem das Projekt visash.
Natürlich kann man auch direkt auf die Objekte im SASH Schema der Repository Datenbank zugreifen - einige Ideen dazu kann man sich aus der Script Sammlung ashmasters holen. Dort findet man einige interessante Scripts (allerdings auf die original Oracle Struturen und nicht auf die SASH Strukturen, diese kann man in viele Fällen sehr leicht anpassen. Mit den SQL Scripts erhält man im SQLplus eine CharacterGui!