Domanda

Abbiamo un ampio (2000+) set di script utilizzati per distribuire il codice del database.Qualcuno sa se esiste uno strumento che può essere utilizzato per creare un singolo script di distribuzione conforme all'ordine di dipendenza corretto?

Capisco che questo possa essere fatto usando SQL Compare di Redgate, tuttavia è fantastico se hai SQL Server.Dalle informazioni limitate sullo strumento Schema Compare per Oracle non sembra avere questa funzionalità.

È stato utile?

Soluzione

Preferirei il seguente ordine (ampiamente basato sull'ordine in cui gli oggetti vengono estratti con un EXPDP):

  • SINONIMO
  • TIPO (la colonna della tabella può dipendere dal tipo definito dall'utente)
  • DB_LINK
  • SEQUENZA
  • TABELLA-TABELLA
  • TABLE-GRANT
  • TABELLA-INDICE
  • TABLE-CONSTRAINT (potresti volere che il vincolo PK venga applicato da un indice esistente)
  • TABELLA-COMMENTI
  • PACCHETTO
  • FUNZIONE
  • PROCEDURA
  • VISUALIZZA
  • VINCOLI DI RIFERIMENTO TABELLA
  • TABLE-TRIGGER
  • INDICE-TABELLA (FUNZIONALE)
  • VISTA MATERIALIZZATA
  • LOG VISUALIZZAZIONE MATERIALIZZATA
  • LAVORO

Altri suggerimenti

Creerei uno script per avviare i tuoi script nell'ordine corretto, a seconda di come sono implementati.

  • Tabelle / sequenze
  • Visualizzazioni / Tipi
    • (generalmente con l'opzione force in modo che vengano creati se esiste un ordine di generazione problema o dipendenza da tipi di "codice" o altre visualizzazioni e tipi)
  • Pacchetti / procedure / funzioni / trigger
    • (se vengono creati fuori dall'ordine di dipendenza, verranno comunque creati, ma non saranno validi)
  • Vincoli di chiave esterna

Avvia rdbms / admin / utlrp per ricompilare gli oggetti non validi quando hai finito di ricompilare gli oggetti non validi.

Non sono sicuro di aver compreso appieno il tuo problema, ma potresti provare quanto segue:

  1. Esegui i tuoi script correnti per creare un database
  2. Crea uno schema vuoto
  3. Utilizza lo schema Compare di Red Gate per confrontare il tuo database con lo schema vuoto
  4. Salva lo script (che dovrebbe essere in ordine di dipendenza)

Quanto segue è una linea guida generale per l'ordine in cui eseguire gli script di installazione per diversi tipi di oggetti di database:

Package specifications

Tables (with constraints and indexes) in proper order

Sequences (because they are most often used by triggers)

Triggers

Synonyms

Views (because they may reference functions, procedures, or synonyms)

Package bodies

Data (optionally disabling all constraints before loading the data and re-enabling them afterwards)

Le specifiche del pacchetto sono elencate per prime perché saranno sempre valide e altri oggetti potrebbero farvi riferimento.I corpi dei pacchetti dovrebbero essere l'ultimo tipo di oggetto creato perché probabilmente faranno riferimento ad altri tipi di oggetto.A causa di problemi di dipendenza, sei incoraggiato a inserire funzioni e procedure nei pacchetti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top