Query compilazione OGGETTI INVALIDI

.

Query dinamica per la creazione del comando di compilazione OGGETTI INVALIDI

Con l’articolo Query compilazione OGGETTI INVALIDI, abbiamo la possibilità di individuare gli oggetti invalidi e di eseguire la compilazione.

Nel database Oracle tutte le tabelle, le partizioni, gli indici, le viste, i package, le procedure, i trigger ecc. sono identificati come oggetti.

Tutti gli oggetti del database sono visibili dalla tabella dba_objects e per identificare il tipo di oggetto è presente il campo OBJECT_TYPE.

Per diversi motivi un oggetto può passare dallo stato valido allo stato invalido.
Se una vista o un indice hanno dietro una tabella dove è cambiato il codice di creazione ossia la DDL, se i campi sono presenti nella definizione dell’indice o della vista si potrebbero invalidare.

Stessa cosa per i package, procedure, trigger o magari un db_link non funzionante all’interno della procedura potrebbe rendere l’oggetto con lo stato invalido.

Se questa situazione si verificasse, occorre eseguire la compilazione degli oggetti invalidi.

Questa operazione può essere effettuata con diversi metodi.

In questa pagina presentiamo il metodo con il codice SQL.

Se sono presenti oggetti invalidi, eseguiremo il file di spool nome_sql.sql generato dallo statement.

Query compilazione OGGETTI INVALIDI:

set echo off
set head off
set feed off
set ver off
set pages 99
spool nome_sql.sql
select decode( OBJECT_TYPE, 'PACKAGE BODY','alter package ' || OWNER||'.'||OBJECT_NAME || ' compile body;', 'SYNONYM', (decode (OWNER, 'PUBLIC', 'alter public synonym '||OBJECT_NAME||' compile;',
'alter ' || OBJECT_TYPE || ' ' || OWNER||'.'||OBJECT_NAME || ' compile;')),
'alter ' || OBJECT_TYPE || ' ' || OWNER||'.'||OBJECT_NAME || ' compile;' )
from dba_objects
where STATUS = 'INVALID'
and OBJECT_TYPE in ( 'PACKAGE BODY', 'PACKAGE', 'FUNCTION', 'PROCEDURE', 'TRIGGER',
'VIEW', 'MATERIALIZED VIEW','SYNONYM')
order by OWNER, OBJECT_TYPE, OBJECT_NAME;
spool off

Per visionare le mie guide sui Comandi CRS clicca qui!
A questo LINK, invece, troverai le query SQL

Resta aggiornato sulle nostre attività entrando a far parte della nostra community:
Facebook
Youtube
Linkedin

Query oggetti INVALIDI

.

Query per identificare gli oggetti invalidi

Con l’articolo Query oggetti INVALIDI, abbiamo la possibilità di individuare velocemente gli oggetti che per qualche motivo hanno subito un cambio di stato da VALID a INVALID.

Se viene effettuato un cambio di codice su una DDL, può capitare che l’oggetto si invalida e questo può causare non pochi problemi, tradotti in rallentamenti o nella peggiore delle ipotesi in blocchi.

In questi casi, possiamo individuare con facilità gli oggetti che presentano questo tipo di problema attraverso la query indicata in calce.

I campi selezionati sono l’OWNER ossia l’utente proprietario, il tipo di oggetto (se un INDICE o un PACKAGE o una PROCEDURE ecc.), il nome dell’oggetto e lo stato degli oggetti invalidi.

La query presenta le informazioni attraverso la selezione dei campi:

OWNER - Proprietario dell'oggetto
OBJECT_TYPE - Tipologia di oggetto
OBJECT_NAME - Nome dell'oggetto
STATUS - Stato dell'oggetto se VALID o INVALID

Inoltre le informazioni sono recuperate dalla tabella DBA_OBJECTS
e devono tornare tutti gli oggetti diversi da VALID,
quindi tutti gli oggetti INVALIDI.

Query per identificare gli oggetti invalidi:

set lines 130
col owner for a20
col object_name for a40
col object_type for a25
col status for a20
select owner, object_type, object_name , status
from dba_objects 
where status != 'VALID'
order by
owner, object_type;

Per visionare le mie guide sui Comandi CRS clicca qui!
A questo LINK, invece, troverai le query SQL

Resta aggiornato sulle nostre attività entrando a far parte della nostra community:
Facebook
Youtube
Linkedin

Query oggetti Oracle

.

Query per identificare i 10 oggetti più grandi del database Oracle

Con l’articolo Query oggetti Oracle, possiamo individuare velocemente gli oggetti che occupano più spazio.

Come spiegato nell’articolo Query compilazione OGGETTI INVALIDI, gli OGGETTI del database sono tutte le strutture applicative, ossia TABELLE, INDICI ecc.

Per mantenere alte le performace del database occorre monitorare le dimensioni che raggiungono questo tipo di oggetti con un peso, poichè oggetti di grosse dimensioni potrebbero creare difficoltà nel recupero dei dati.

Quindi quando un oggetto raggiunge una dimensione troppo grande, sarebbe opportuno pensare a una logica diversa dell’oggetto come per esempio il partizionamento.

Nel caso in cui dovessimo individura quali oggetti occupano pià spazio nel database, nel seguente articolo descriviamo nel dettaglio i campi selezionati.

I campi selezionati sono:

TABLESPACE_NAME – Nome del tablespace
OWNER – Proprietario dell’oggetto
SEGMENT_NAME – Nome del segmento
SEGMENT_TYPE – Tipo del segmento
PARTITION_NAME – Nome della partizione
BYTES – Dimesione del segmento trasformato in MB

Le informazioni sono recuperate dalle tabella
DBA_SEGMENTS
e sono filtrate per le prime 10 righe
degli oggetti più grandi.

10 OGGETTI più grandi di uno SCHEMA

set lines 400
col tablespace_name for a20
col partition_name for a16
col owner format a15
col segment_name format a32
col segment_type format a15
select tablespace_name, owner, segment_name, segment_type, partition_name, mb
from (
select tablespace_name, owner
, segment_name
, segment_type
, partition_name 
, bytes / 1024 / 1024 "MB"
from dba_segments
order by bytes desc)
where rownum < 10
/

Per visionare le mie guide sui Comandi CRS clicca qui!
A questo LINK, invece, troverai le query SQL

Resta aggiornato sulle nostre attività entrando a far parte della nostra community:
Facebook
Youtube
Linkedin

Wordpress Social Share Plugin powered by Ultimatelysocial