Dba invalid objects

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus de diagnostic
Domaine Administration (dictionnaire de données)
Voir aussi Dba invalid objects summary

Dba invalid objects liste, objet par objet, tous les objets en statut invalide dans la base (vue dba_objects, colonne status). Pour une vue agrégée par propriétaire et par type plutôt que le détail exhaustif, voir Dba invalid objects summary.

Script

SET TERMOUT OFF
COLUMN current_instance NEW_VALUE current_instance NOPRINT
SELECT RPAD(instance_name, 17) current_instance FROM v$instance;
SET TERMOUT ON

PROMPT
PROMPT +------------------------------------------------------------------------+
PROMPT | Report   : Invalid Objects                                             |
PROMPT | Instance : &current_instance                                          |
PROMPT +------------------------------------------------------------------------+

SET ECHO      OFF
SET FEEDBACK  6
SET HEADING   ON
SET LINESIZE  180
SET PAGESIZE  50000
SET VERIFY    OFF

COLUMN owner       FORMAT a25 HEADING 'Owner'
COLUMN object_name FORMAT a30 HEADING 'Object Name'
COLUMN object_type FORMAT a20 HEADING 'Object Type'
COLUMN status      FORMAT a10 HEADING 'Status'

BREAK ON owner SKIP 2 ON report

COMPUTE count LABEL ""              OF object_name ON owner
COMPUTE count LABEL "Grand Total: " OF object_name ON report

SELECT
    owner
  , object_name
  , object_type
  , status
FROM dba_objects
WHERE status <> 'VALID'
ORDER BY owner, object_name
/

Colonnes / sortie

  • Owner / Object Name / Object Type — identification complète de l'objet invalide.
  • Status — le plus souvent INVALID (objet PL/SQL, vue ou synonyme dont la compilation a échoué suite à un changement de dépendance).
  • Un sous-total par propriétaire et un total général sont calculés via BREAK/COMPUTE.

Une invalidation n'est pas nécessairement grave : elle est souvent transitoire (Oracle recompile automatiquement à la première utilisation) et fréquente juste après un DDL sur une table référencée par des vues/procédures. Un objet qui reste invalide après un EXEC DBMS_UTILITY.COMPILE_SCHEMA (ou utlrp.sql après un patch) signale en revanche une vraie erreur de compilation à corriger.

Voir aussi