!
!
!
!
!
!
!
!

Algorithme de copie d'une base
Copier une base de données
Nous n’avons pas connu, à part des situations de restauration en catastrophe, des situations plus stressantes que la copie rapide des bases de données. Cette activité, bien menée, donnera plein satisfaction à tous les niveaux : direction, DBAs, utilisateurs. Plusieurs solutions existent : le DBA devra choisir parmi ces possibilités la solution la plus performante, mais qui sera pratiquement toujours dépendante de la situation réelle sur site. Une bonne connaissance de la réalité environnante vous aidera à résoudre ce problème.
Cette procédure est destinée à la création par copie d'une base ORACLE dans un environnement similaire à celui d'origine (machine, OS, version d'Oracle). Typiquement, l'opération consiste en la copie des fichiers. L'algorithme prévu prend en compte un backup à froid de la base originale ou un backup a chaud comme alternative. Comme affirmé précédemment, c’est votre environnement qui vous dictera le choix du type de backup.
Backup de la base
Pour copier une base dans un autre environnement, nous devons faire un backup des fichiers concernés: FULL ou ONLINE. Le backup online nécessite que L'ARCHIVAGE soit utilisé.
Nous devons copier également les fichiers INIT.ORA ainsi que le fichier issu de la commande encadrée. Les fichiers de contrôle ne sont pas nécessaires, ils seront recrées. Les fichiers redo ne sont non plus nécessaires, la base sera créée avec l'option RESETLOGS. La commande qui crée le script de création du fichier de contrôle est la suivante:
SVRMGR> connect internal 
SVRMGR> alter database backup controlfile to trace; 
SVRMGR> exit
Ceci créera un fichier texte (avec suffixe.trc) dans le répertoire USERDUMP. Ce fichier devra être édité pour convenir à l'action envisagée.
Création de l'environnement cible.
Tous les répertoires source seront crées dans l'environnement cible à votre convenance. $ORACLE_HOME devrait correspondre à celui de l'environnement d'origine. Vous pouvez également utiliser les spécifications OFA.
Copie des fichiers dans l'environnement cible
Copiez les fichiers.
Modification du script
En fonction du choix de déploiement des fichiers dans l'environnement cible, modifier en conséquence le fichier ASCII obtenu précédemment.
  • Enlevez les commentaires.
  • Renommer les fichiers redo et les répertoires.
  • Remplacer l'option REUSE_DATABASE avec SET DATABASE , ou est le nom de la base source et est le nouveau nom.
  • Remplacer NORESETLOGS avec RESETLOGS, nécessaire lors de l’option SET DATABASE.
  • Vérifier l'option ARCHIVELOG ou NOARCHIVELOG.
  • Note: ARCHIVELOG est nécessaire avec un backup online.
  • Enlever les autres commentaires et commandes. Ceci inclut RECOVER DATABASE ainsi que ALTER DATABASE OPEN.
  • Sauvegardez ce script sous le nom r.sql
Modifier init.ora
A ce point, soit nous utiliserons l'ancien init.ora, soit nous en recréons un. Dans les deux cas, vérifier ou bien modifier les noms de répertoires, le paramètre "db_name", les paramètres mts.
(NT) créer le service !

set ORACLE_SID=PROD
ORADIM -new -SID PROD -startmode auto -intpwd manager -pfile f:\oracle81\database\PFile\InitPROD.ora
pause
Renommer la base cible
Création du nouveau fichier de contrôle et renommer la base, vérifier $PATH, $ORACLE_HOME et $ORACLE_SID.
cd $ORACLE_HOME/dbs 
svrmgrl 
SVRMGR> connect internal 
SVRMGR> @new_control.sql 
Ouvrir la base
Si full Backup à l’étape initiale:
SVRMGR> ALTER DATABASE OPEN RESETLOGS; 
Si Online Backup:
SVRMGR> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL; 
SVRMGR> recover database using backup controlfile until cancel;
ORA-00279: Change 7239 generated at 05/21/99 10:26:19 needed for thread 1
ORA-00289: Suggestion : /oracle/admin/copy7/arch/arch_9
ORA-00280: Change 7239 for thread 1 is in sequence #9
Specify log: {=suggested | filename | AUTO | CANCEL}
Log applied.
ORA-00279: Change 7244 generated at 05/21/99 10:39:07 needed for thread 1
ORA-00289: Suggestion : /oracle/admin/copy7/arch/arch_10
ORA-00280: Change 7244 for thread 1 is in sequence #10
Specify log: {=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
SVRMGR>
SVRMGR> ALTER DATABASE OPEN RESETLOGS; 
A ce point, la base est fonctionnelle. Veillez à modifier le nom global de la base
ALTER DATABASE RENAME GLOBAL_NAME TO NOM.DOMAIN_NAME
Vérifiez les database links.
Effectuez un backup.
Divers
Mettre à jour oratab.
Mettre à jour les fichiers SQL*Net: sur le serveur listener.ora et tnsnames.ora, sur le client tnsnames.ora
Scripts

Exemple de r.sql

STARTUP NOMOUNT pfile=f:\oracle81\database\initPROD.ora
CREATE CONTROLFILE SET DATABASE "PROD" RESETLOGS NOARCHIVELOG
    MAXLOGFILES 32
    MAXLOGMEMBERS 3
    MAXDATAFILES 254
    MAXINSTANCES 1
    MAXLOGHISTORY 907
LOGFILE
  GROUP 1 'F:\ORACLE81\ORADATA\PROD\REDO01.LOG'  SIZE 1M,
  GROUP 2 'F:\ORACLE81\ORADATA\PROD\REDO02.LOG'  SIZE 1M,
  GROUP 3 'F:\ORACLE81\ORADATA\PROD\REDO03.LOG'  SIZE 1M
DATAFILE
  'g:\ORACLE81\ORADATA\PROD\SYSTEM01.DBF',
  'g:\ORACLE81\ORADATA\PROD\RBS01.DBF',
  'g:\ORACLE81\ORADATA\PROD\USERS01.DBF',
  'g:\ORACLE81\ORADATA\PROD\TEMP01.DBF',
  'g:\ORACLE81\ORADATA\PROD\TOOLS01.DBF',
  'g:\ORACLE81\ORADATA\PROD\INDX01.DBF',
  'g:\ORACLE81\ORADATA\PROD\OEM_REPOSITORY.ORA'
CHARACTER SET WE8ISO8859P1 ;

Voici l’original

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "IRIS" NORESETLOGS NOARCHIVELOG
    MAXLOGFILES 32
    MAXLOGMEMBERS 3
    MAXDATAFILES 254
    MAXINSTANCES 1
    MAXLOGHISTORY 907
LOGFILE
  GROUP 1 'F:\ORACLE81\ORADATA\IRIS\REDO01.LOG'  SIZE 1M,
  GROUP 2 'F:\ORACLE81\ORADATA\IRIS\REDO02.LOG'  SIZE 1M,
  GROUP 3 'F:\ORACLE81\ORADATA\IRIS\REDO03.LOG'  SIZE 1M
DATAFILE
  'F:\ORACLE81\ORADATA\IRIS\SYSTEM01.DBF',
  'F:\ORACLE81\ORADATA\IRIS\RBS01.DBF',
  'F:\ORACLE81\ORADATA\IRIS\USERS01.DBF',
  'F:\ORACLE81\ORADATA\IRIS\TEMP01.DBF',
  'F:\ORACLE81\ORADATA\IRIS\TOOLS01.DBF',
  'F:\ORACLE81\ORADATA\IRIS\INDX01.DBF',
  'F:\ORACLE81\ORADATA\IRIS\OEM_REPOSITORY.ORA'
CHARACTER SET WE8ISO8859P1
;
RECOVER DATABASE
ALTER DATABASE OPEN;
Résultat 
F:\oracle81\ADMIN\PROD\udump>set ORACLE_SID=PROD
F:\oracle81\ADMIN\PROD\udump>svrmgrl
Oracle Server Manager Release 3.1.6.0.0 - Production
Copyright (c) 1997, 1999, Oracle Corporation.  All Rights Reserved.
Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
SVRMGR> @r.sql
ORACLE instance started.
Total System Global Area                         79475980 bytes
Fixed Size                                          70924 bytes
Variable Size                                    38367232 bytes
Database Buffers                                 40960000 bytes
Redo Buffers                                        77824 bytes
Statement processed.
SVRMGR> alter database open resetlogs;
Statement processed.
SVRMGR> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle8i Enterprise Edition Release 8.1.6.0.0 - Production
PL/SQL Release 8.1.6.0.0 - Production
CORE    8.1.6.0.0       Production
TNS for 32-bit Windows: Version 8.1.6.0.0 - Production
NLSRTL Version 3.4.1.0.0 - Production
5 rows selected.
SVRMGR> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

Copyright © 1998-2002 Radu Caulea, TAFORA MAJ 06/11/2006 !
Commentaires et suggestions radu[CHEZ]tafora.fr