Data Dictionary

Ein paar Notizen zu (statischen) data dictionary und dynamic performance views, die mir erinnerungswürdig erscheinen (ohne jeden Anspruch auf Vollständigkeit).

Definition

Zunächst ein wenig Taxonomie aus der Dokumentation:
  • data dictionary
    • "central set of read-only reference tables and views of each Oracle database"
  • dynamic performance views
    • "special views that are continuously updated while a database is open and in use" 
    • "Dynamic performance views are sometimes called fixed views because they cannot be altered or removed by a database administrator"
    • "Dynamic performance views are based on virtual tables built from database memory structures. Thus, they are not conventional tables stored in the database. Read consistency is not guaranteed for the views because the data is updated dynamically."
    • Grundlage der V$-Views sind die X$-Tables (die allerdings auch keine Tabellen, sondern in-memory-Strukturen des Datenbankkernels sind), zu denen die Oracle-Dokumentation weitgehend schweigt. Im Internet gibt es eine ganze Reihe von Aussagen zum Thema, deren Qualität allerdings sehr unterschiedlich ausfällt. Eine plausibel wirkende Liste liefert Yong Huang (inklusive weiterer Links). Der Zugriff auf X$-Objekte ist dabei nicht ungefährlich (und auch nicht vorgesehen), und kann zu massiven Contention Problemen führen - er kommt also nur in Spiel-Umgebungen infrage; oder wenn man genau weiß, was man tut ...
    • Informationen zu den fixed views liefert die View V$FIXED_VIEW_DEFINITION, über die Charles Hooper und Martin Widlake gelegentlich geschrieben haben.

Interne dictionary views
  • BOOTSTRAP$
    • wird beim Systemstart gelesen und enthält DDL-Informationen zu zentralen Tabellen des data dictionary (diese DDL wird allerdings nicht ausgeführt): dient zur Lokalisierung der zentralen Komponenten
    • Erläuterungen dazu von Tanel Poder.
  • SEG$
    • Datengrundlage für DBA_SEGMENTS mit den Positionen aller Segmente

ASH

Active Session History: zieht in jeder Sekunde ein sample und hält die Daten im Memory. Im AWR wird jede zehnte ASH row persistiert.

  • V$ACTIVE_SESSION_HISTORY
    • Doku: "sampled session activity in the database. It contains snapshots of active database sessions taken once a second."
AWR

Automatic Workload Repository: persistiert diverse dynamische Performance-Views. Per default wird ein snapshot pro Stunde erzeugt (7 Tage Retention)
Die DBA_HIST%-Views im AWR stellen immer Snapshots der zugrunde liegenden V$-Views dar.
    • DBA_HIST_ACTIVE_SESS_HISTORY
      • Doku: "DBA_HIST_ACTIVE_SESS_HISTORY displays the history of the contents of the in-memory active session history of recent system activity. This view contains snapshots of V$ACTIVE_SESSION_HISTORY."
      • Graham Wood: liefert weitere Informationen zur View und zu ASH. 
      • verwendet werden offenbar nur samples aus V$ACTIVE_SESSION_HISTORY (laut Doug Burns ermittelt über mod(sample_id, 10))
    • V$SYSMETRIC_SUMMARY
      • Durchschnittswerte der SYSMETRICS für die letzte Stunde :  Doku: "V$SYSMETRIC_SUMMARY displays a summary of all system Metric values for the long-duration system metrics. The average, maximum value, minimum value, and the value of one standard deviation for the last hour are displayed for each metric item."
      • Details dazu bei Kyle Haley
    • DBA_HIST_SYSMETRIC_SUMMARY
      • Snapshots aus V$SYSMETRIC_SUMMARY - Doku
      • Details dazu bei Kyle Haley
    • V$SYSMETRICS
      • Systemmetriken: "V$SYSMETRIC displays the system metric values captured for the most current time interval for both the long duration (60-second) and short duration (15-second) system metrics." Doku
      • Details dazu bei Kyle Haley
    • V$SYSMETRIC_HISTORY
      • Snapshots aus V$SYSMETRICS für die letzte Stunde Doku
      • Details dazu bei Kyle Haley

    Parameter

    Informationen zu den Initialisierungs-Parametern (oft auch als Init.ora-Parameter bezeichnet)
    • V$OBSOLETE_PARAMETER
    • V$PARAMETER
      • Parameter auf Session-Ebene
      • Details dazu bei Tanel Poder.
    • V$PARAMETER2
      • ebenfalls Parameter auf Session-Ebene; Listen-Einträge werden auf mehrere Sätze verteilt
      • Details dazu bei Tanel Poder.
    • V$PARAMETER_VALID_VALUES
      • "displays a list of valid values for list parameters"
      • Details dazu bei Tanel Poder.
    • V$SPPARAMETER
      • die Inhalte des spfiles
      • Details dazu bei Tanel Poder.
    • V$SYSTEM_PARAMETER
      • Parameter auf System-Ebene
      • Details dazu bei Tanel Poder.
    • V$SYSTEM_PARAMETER2
      • ebenfalls Parameter auf System-Ebene; Listen-Einträge werden auf mehrere Sätze verteilt
      • Details dazu bei Tanel Poder.

    Statistiken
    • DBA_TAB_STATS_HISTORY
      • Zeitpunkte der Statistikerfassung für Tabellen
      • Doku: "provides a history of table statistics modifications for all tables in the database."
      • Uwe Hesse zeigt, wie man unterschiedliche Statistik-Zustände mit Hilfe von dbms_stats.diff_table_stats_in_history vergleichen kann.
    • SYS.AUX_STATS$
      • Tabelle mit den system statistics.

    OS
    • V$OSSTAT
      • Doku: "displays system utilization statistics from the operating system. One row is returned for each system statistic."
      • laut Craig Shallahamer basiert die View auf der gleichen Grundlage wie das OS-Tool vmstat und sollte demnach zuverlässige OS-Statistiken liefern.


    Divers

    Sonstige Views, zu denen mir noch keine Kategorie eingefallen ist.
    • DBA_REGISTRY
      • Doku: "DBA_REGISTRY displays information about all components in the database that are loaded into the component registry. The component registry tracks components that can be separately loaded into the Oracle Database. When a SQL script loads the PL/SQL packages and other database objects for a component into the database, the script uses the DBMS_REGISTRY package to record the component name, status, and version. If scripts are used to upgrade/downgrade the dictionary elements for the component, then those scripts also use the DBMS_REGISTRY package to provide status and version information."
      • Julian Dyke: liefert eine etwas ausführlichere Erläuterung der View.
    • V$STATISTICS_LEVEL
      • Doku: "V$STATISTICS_LEVEL displays the status of the statistics/advisories controlled by STATISTICS_LEVEL."
    • V$SYSTEM_FIX_CONTROL
      • Doku: "displays information about Fix Control (enabled/disabled) at the system level."
      • Jonathan Lewis: "lists a number of bug fixes that you can disable with the _fix_control parameter"
    • DBA_USERS_WITH_DEFPWD
      • Doku: "displays all users in the database that are still using their default passwords."
      • Arup Nanda zu den Gefahren solcher Default-pwds.
    • V$SQL_FEATURE, V$SQL_FEATURE_HIERARCHY
      • Tanel Poder: liefert ein Script mit dessen Hilfe man diverse Abkürzungen auflösen kann, die unter anderem in CBO Trace-Dateien auftauchen.
    • V$SQLFN_METADATA, V$SQLFN_ARG_METADATA
      • Metadaten zu Operatoren, Funktionen und ihren Argumenten. Nähere Erläuterungen dazu liefert Carsten Czarski.

    X$-Objekte

    Wie oben bereits angesprochen sind die X$-Objekte mit Vorsicht zu behandeln. Da ich aber doch ganz gerne beginnen würde, mein Verständnis der Objekte zu verbessern, notiere ich an dieser Stelle, was ich zu ihnen lese. Deutlich umfassendere Informationen findet man - wie oben schon erwähnt - bei Yong Huang.

    Eine (inoffizielle) Information zur Semantik der Namensgebung der X$-Objekte findet man hier.