Oracle: Anzahl Zugriffe auf Tabellen?

Hi!

Weiß jemand, wie man die Anzahl der Zugriffe auf eine Tabelle rauskriegen kann? Gibt es eine View, die dies leistet?

Peter

Was meinst du genau?
Hi Peter,

was meinst du mit „… Anzahl der Zugriffe auf eine Tabelle …“?

  • wieviele SELECT-statements wurden abgesetzt, die diese Tabelle betreffen? (bzgl. USER, Zeitraum oder was?)
  • bei einem statement: wieviele Tupel / Blöcke, etc. sind betroffen?

Ich habe im Moment selbst noch keine Ahnung welche Möglichkeiten da alle existieren, folgendes fällt mir spontan ein:

  • auditing: Oracle-Auditing
  • Bzgl. Performance-Optimierung: explain plan, TKPROF

ciao,
Bernhard

Hi Bernhard,

Ich meine:
Wieviele SELECT-statements wurden abgesetzt, die diese
Tabelle betreffen? (bezogen auf ein Tag / Woche)

Gibt es eine View hierfür?

Peter

Auditing
Hi Peter,

geht mit Auditing, siehe auch Dokumentation hierzu:

  • Oracle 8i Concepts, Kapitel 28
  • Oracle 8i Administrator’s Guide, Kapitel 24

Beispiel:

  1. INIT.ORA-Parameter setzen:

    audit_trail = true

  2. audit-trail-Relation leeren:

    CONN SYSTEM/MANAGER
    TRUNCATE TABLE SYS.aud$;

  3. audit SELECT … BY ACCESS setzen

    AUDIT SELECT ON SCOTT.EMP BY ACCESS;

  4. ein paar SELECTs machen…

    SELECT COUNT (*) FROM SCOTT.EMP WHERE ENAME = ‚XXX‘;
    SELECT COUNT (*) FROM SCOTT.EMP WHERE SAL > 2000;

  5. audit-trail anschauen

    SELECT * FROM SYS.aud$; – das ist die Oracle-interne Relation
    SELECT * FROM DBA_AUDIT_TRAIL; – DBA-view

  6. audit abschalten

    NOAUDIT SELECT ON SCOTT.EMP;

Keine Ahnung, wie sehr die Performance in den Keller gezogen wird …
Ich habe Auditing bis jetzt nur zur Bug-Suche und zum Reverse-Engineering von Fremdprodukten verwendet…

ciao,
Bernhard