Clonazione di un database Oracle.

Sicuramente tutti coloro che lavorano con Oracle (o SAP e Oracle come database, come faccio io), ho sentito il bisogno di replicare un database di produzione (o di un ambiente di prova), in un altro sistema. Nel mio caso, in collaborazione con SAP, regolarmente fatto una copia del sistema attuale di sviluppo di database (integrazione), che l'evidenza dei cambiamenti, sviluppi o parametrizzazioni sono il più completo possibile (e facile possibile per l'utente se i dati sono la data "reale").

Ho appena finito di installare un nuovo ambiente di sviluppo SAP (per un cambio di hardware), che hanno utilizzato per fare una replica del database di produzione a livello di sistema. Mi spiego la procedura seguita nel caso qualcuno di voi ha lo stesso bisogno, anche se sono sicuro che ci sono altri modi per fare questo (database esportare usando RMAN, ecc.)Nel mio caso, ho iniziato da un backup in linea (anche se è consigliabile farlo con una linea), e ho copiato un database chiamato MG1 in un altro su una macchina diversa chiamato DE1. La procedura che vi spiegherò questo convalidato con Oracle 9i.

1) Effettuare backup del database di casa, come ho detto, ho fatto un backup in linea utilizzando il software di backup Veritas NetBackup, che ha i suoi strumenti specifici per lavorare con SAP e Oracle, ma potremmo anche avere fatto con uno script sql per mettere i tablespace in modalità di backup e copiare i file di dati per la nuova posizione.Una volta che la copia, mettere il tablespace torna alla modalità normale. Si potrebbe anche aver fatto un backup non in linea con la chiusura del database (anche se questo non è sempre possibile, come possiamo essere in un sistema la cui finestra di backup è molto piccolo e non può essere fatto in questo modo).

script SQL per mettere i tablespace in modalità di backup (per iniziare questa), in modo da metterli in modalità normale (al termine del backup), è possibile creare con le istruzioni SQL che dettaglio di seguito:

Settembre 999 pagine 999 righe
Settembre verificare off
Settembre commenti off
di partire a settembre

spool begin_backup.sql

selezionare 'alter tablespace' | | tablespace_name | 'inizio di backup;' | tsbb
da dba_tablespaces
Dove i contenuti! = 'TEMPORANEO'
ordina per tablespace_name
/
spool off

spool end_backup.sql

selezionare 'alter tablespace' | | tablespace_name | | 'backup fine;' TSEB
da dba_tablespaces
Dove i contenuti! = 'TEMPORANEO'
ordina per tablespace_name
/
spool off

Per eseguire la sentenza avrà generato due file: begin_backup.sql e end_backup.sql, ognuno con l'incarico di cui sopra.

2) Preparazione della copia: nel mio caso, sul sistema di destinazione e ho installato Oracle e realizzato l'intera struttura della cartella per la posizione dei file di dati.In caso contrario, sarà necessario installare Oracle e creare cartelle appropriate dove potranno individuare i file di dati. Una volta preparato tutto sul target, si eseguirà un paio di compiti di preparazione più.

  • Impostazione del file di parametro di Oracle: parametri di oracolo file è essenziale al fine di avviare il database sul bersaglio (<SID> file init Ora, dove <SID> è il nome del database.).Noi provvederemo ad adeguare il contenuto di questo file in modo che corrisponda la directory di sistema nuovo (redologs destinazione, i segmenti di rollback in caso che usiamo, ecc), ma sempre in linea con lo stesso sistema di file di origine. Allo stesso modo, possiamo avere per regolare i parametri di questo file con le caratteristiche fisiche della macchina target (memoria, processori, ecc.)
  • Creare l'istruzione SQL per ricreare i file di controllo, eseguire l'istruzione SQL nel sistema di origine: ALTER control, backup del database per rintracciare come '/ tmp / crea_bd.sql'; Con l'attuazione di questa sentenza, abbiamo creato un file di dichiarazione sql, che ci permetterà di ricreare i file di controllo nel sistema di destinazione una volta che abbiamo recuperato il backup.Nel mio esempio, il contenuto del file creato è:
STARTUP nomount
CREATE DATABASE CONTROLFILE RIUSO "MG1" resetlogs ARCHIVELOG
- SET STANDBY per massimizzare le prestazioni
 MAXLOGFILES 16
 MAXLOGMEMBERS 3
 MAXDATAFILES 1022
 50 MaxInstance
 MAXLOGHISTORY 5.445
LOGFILE
 GRUPPO 11 (
 '/ Oracle/MG1/mirrlogA/log_g11m2.dbf'
 '/ Oracle/MG1/origlogA/log_g11m1.dbf'
 ) TAGLIA 20M, Gruppo 12 ('/ oracle/MG1/mirrlogB/log_g12m2.dbf', '/ oracle/MG1/origlogB/log_g12m1.dbf') SIZE 20M, GRUPPO 13 ('/ oracle/MG1/mirrlogA/log_g13m2.dbf' '/ oracle/MG1/origlogA/log_g13m1.dbf') SIZE 20M, GRUPPO 14 ('/ oracle/MG1/mirrlogB/log_g14m2.dbf', '/ oracle/MG1/origlogB/log_g14m1.dbf') SIZE 20M - STANDBY LOGFILE DATAFILE '/ oracle/MG1/sapdata1/system_1/system.data1', '/ oracle/MG1/sapdata5/btabd_1/btabd.data1', '/ oracle/MG1/sapdata2/btabi_1/btabi.data1', '/ oracle / MG1/sapdata6/clud_1/clud.data1 ' 

.............................

CHARACTER SET WE8DEC
; 

Dovremo fare alcuni cambiamenti in scritpt SQL contenute in questo file per utilizzarlo correttamente sul bersaglio:

  • Nome del database: il nuovo nome del database sarà DE1.Per fare questo, cambiamo la parte iniziale dello script, in sostituzione MG1 per DE1. Inoltre, modificare il valore di SET RIUTILIZZO. La sintassi sarà la seguente:
CREATE DATABASE SET CONTROLFILE "DE1" resetlogs ARCHIVELOG .......... 
  • Posizione dei file di log e file di dati: tutti i percorsi dei log e file di dati elencati nel file deve essere modificato per corrispondere le posizioni effettive che avrà sul sistema di destinazione. Nel mio caso, vorrei cambiare la cartella / oracle/MG1 da / oracle/DE1, che è la location per il mio sistema di tutti questi elementi.
  • Altre istruzioni SQL nel file: tutte le istruzioni SQL che si basano sul valore di SET personaggio ...sfocatura, dopo il lancio manualmente una volta ricreato il control (chiaro .... RECOVER DATABASE e ALTER DATABASE OPEN resetlogs).

3) Il ripristino di file di dati sul bersaglio: facciamo un backup di ripristino su posizioni appropriate nel sistema di destinazione. Le posizioni dei file di dati devono coincidere con quelli descritti nella sceneggiatura ci crea_bd.sql (come visto nella sezione precedente) dopo il lancio, si dovrebbe trovare tutti i file al fine di completare con successo il processo. Nel caso in cui abbiamo fatto un backup non in linea, non è necessario essere portati redologs fonte file di sistema, ma nel caso di un backup in linea. Ciò è necessario per lasciare il database a un punto consistente, perché durante il backup, tutti i cambiamenti che si verificano nel tablespace vengono lasciati nel redologs registrati.E 'un modo per garantire la coerenza del database dopo il processo di recupero.

4) Finale di processo: file di controllo di ricreare e avviare il database. Una volta completato il recupero, faremo la parte finale del processo, e più critica. Per fare questo, e si trova nel sistema di destinazione, avrà inizio l'ascoltatore (si può anche fare alcune modifiche per adattare il nome del nuovo database), e la connessione al database con sqlplus. Il database non è avviato, ed eseguire lo script crea_bd.sql abbiamo creato e impostato in precedenza:

TM-des: orade1 1> sqlplus

SQL * Plus: Release 9.2.0.8.0 - Production giugno Mar 22 16:00:10 2010

Copyright (c) 1982, 2002, Oracle Corporation. Tutti i diritti riservati.

Inserisci il nome utente: / come sysdba

Collegato a:
Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production 64bit
Con l'opzione di partizionamento
Jserver Release 9.2.0.8.0 - Production

SQL> @ / tmp / crea_bd.sql 

La frase inizia il database e lo fa nomount ricreare i file di controllo (le posizioni di questi file sono definiti nel <SID> file init. Ora nel parametro control_files).Durante questo processo, ci assicuriamo che tutti i file presenti fisicamente. In caso di un errore e interrompe il processo (non vi è una cartella o file sono in una posizione diversa), correggere gli errori e avviare il processo di nuovo.

Dopo la creazione del file di controllo, avviare il database.La forma può variare a seconda se si parte da una linea o di backup online. Ad esempio, per il backup online, un backup costante in quanto ha smesso di tutta l'attività sul database quando si esegue, eseguire l'istruzione SQL seguente:

Resetlogs ALTER DATABASE OPEN;

Nel caso di aver fatto un backup in linea può variare le condanne per l'esecuzione. Nel mio caso, io voglio fare il database in linea in un dato punto nel tempo. Per fare questo, realizza le seguenti dichiarazioni:

DATABASE RECUPERARE TEMPO FINO '2010-6-10: 01:00:00 'CONTROLFILE UTILIZZO DI BACKUP;
Resetlogs ALTER DATABASE OPEN; 

Ho recuperato il database a un certo momento (01:00 del 10 giugno 2010).Per il processo, è stato necessario per directory redologs registri archiviati richiesto (dal sistema di origine), in modo che i contenuti siano applicati i tablespace e costantemente arrivare al punto di tempo indicato.

A questo punto, il database è già recuperato e aperto. Come ultimo passo, eseguire l'istruzione seguente per cambiare il nome globale del database (è possibile visualizzare la corrente * corrente da selezionare frase global_name;)

ALTER DATABASE Rinomina Per DE1.world global_name

Nel mio caso, anche strappato Sap e di eseguire una serie di azioni per rendere il sistema pronto per lavorare. Nel caso in cui siamo soli con un database di prova con qualsiasi tipo di installazione, avremmo i dati di origine del sistema online e disponibile per eseguire qualsiasi operazione su di essi. Può anche essere un modo utile per replicare un sistema di Business Intelligence al test di sistema o di formazione.

Hai qualche link dove è possibile espandere le informazioni per eseguire tutti i processi descritti, per la mia spiegazione è stata abbastanza breve e in forma di esecuzione del processo, affinché possiate avere molte più cose in mente:

/ QuickGuide / clone_hot.php "href =" http://www.shutdownabort.com/quickguides/clone_hot.php "> Dba Oracle Guida rapida.

SAP sistema di copia: nel caso in cui vivere lavorando con SAP (spiegato ulteriori aspetti nella copia omogenee da un sistema ad un altro).