Skip to Main Content

Breadcrumb

PERFSTAT - ORA-00904

Viele, die kein Oracle Diagnostic Pack einsetzen können/dürfen, greifen gerne auf Statspack zurück. Dieses sammelt ebenfalls Performance relevante Informationen, die man dann für die Performanceanalyse heranziehen kann.

Mit Oracle 12c hat sich jedoch ein kleines Problem eingeschlichen. Wenn man perfstat.stats$sql_plan als Quelle für DBMS_XPLAIN.DISPLAY nutzen möchte, bekommt man einen ORA-00904 Error.

 

select * from table(dbms_xplan.display(
  table_name  => 'perfstat.stats$sql_plan',
  statement_id => null,
  format      => 'ALL -predicate -note',
  filter_preds => 'plan_hash_value = 1450130062 '
));
-- error message in 12c:
/*
ERROR: an uncaught error in function display has happened; please contact Oracle support
      Please provide also a DMP file of the used plan table perfstat.stats$sql_plan
      ORA-00904: "TIMESTAMP": invalid identifier
*/

Workaround

Man muss an die Tabelle perfstat.stats$sql_plan einfach nur eine Spalte TIMESTAMP unterschieben, ohne dass es stört. Das geht mittels folgendem Statement:

ALTER TABLE perfstat.stats$sql_plan ADD timestamp INVISIBLE AS (cast(NULL AS DATE));