Oracle, confrontare due database 0
Spesso capita di avere più database che contengono copie delle biasi di dati, immaginiamo ad esempio nell’ambito di una applicazione il database ti sviluppo, test e quello di produzione oppure lo stesso db di clienti differenti.
Potremmo arrivare ad un punto in cui questi database sono disallineati per campi o tabelle presenti su uno e non sugli altri. Se non si è tenuta traccia di tutti i cambiamenti apportati si può avere la necessità di utilizzare una query per estrarre un riassunto di tutte le colonne delle varie tabelle e confrontare il risultato ottenuto sui diversi schemi.
Ecco la query:
select table_name, column_name, data_type, NVL(data_length, 0) data_length, NVL(data_precision, 0) data_precision, NVL(data_scale, 0) data_scale, nullable from sys.all_tab_cols where owner='OWNER_NAME' order by table_name, column_name
Sarà sufficiente sostituire a OWNER_NAME il possessore dello schema per ottenere l’elenco di tutti i campi del database con le informazioni relative.
Analogamente ai campi possiamo visualizzare anche gli indici con:
select index_name, table_name, column_position, column_name from sys.all_ind_columns where table_owner='OWNER_NAME' and order by table_name, column_position, column_name
Infine possiamo avere la lista dei constraint con:
select
table_name,
constraint_type,
constraint_name
from
sys.all_constraints c
where
owner = 'OWNER_NAME' and
constraint_type in ('P', 'R')
order by
table_name,
constraint_name
il campo constraint_type può assumere i valori riportati in tabella:
| Codice | Descizione | Agisce su |
| C | Check on a table | Colonna |
| O | Read Only on a view | Oggetto |
| P | Primary Key | Oggetto |
| R | Referential AKA Foreign Key | Colonna |
| U | Unique Key | Colonna |
| V | Check Option on a view | Oggetto |










