Dans cet article, nous allons voir comment renommer une base de données en standalone (10g et 11g)
Commençons par les présentations :
C:Users>set ORACLE_SID=XE C:Users>sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on Ven. Juil. 19 17:24:53 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production SQL> select instance_name from v$instance; INSTANCE_NAME ---------------- xe
Base XE en 11.2 sur un serveur Windows (Cette méthode s’applique également pour un serveur linux et pour une base en standard ou enterprise edition), nous allons la renommer en EASY, mais nous allons aussi devoir déplacer les fichiers de données dans une autre arborescence.
1. Première étape déplacer les fichiers vers leurs nouveaux répertoires.
Si vous souhaitez simplement renommer la base, sans changer l’arborescence de vos fichiers, vous pouvez passer directement à la deuxième étape.
Pour ça, récupérer la liste des datafiles et autres fichiers de la base :
SQL> SELECT name FROM v$controlfile UNION SELECT member FROM v$logfile UNION SELECT name FROM v$datafile UNION SELECT name FROM v$tempfile;
Voici le résultat sur la base XE
C:ORACLEXEAPPORACLEFAST_RECOVERY_AREAXEONLINELOGO1_MF_1_7V24ZXKD_.LOG C:ORACLEXEAPPORACLEFAST_RECOVERY_AREAXEONLINELOGO1_MF_2_7V24ZYFY_.LOG C:ORACLEXEAPPORACLEORADATAXECONTROL.DBF C:ORACLEXEAPPORACLEORADATAXESYSAUX.DBF C:ORACLEXEAPPORACLEORADATAXESYSTEM.DBF C:ORACLEXEAPPORACLEORADATAXETEMP.DBF C:ORACLEXEAPPORACLEORADATAXEUNDOTBS1.DBF C:ORACLEXEAPPORACLEORADATAXEUSERS.DBF
Ne pas oublier de créer la futur arborescence :
C:ORACLEXEAPPORACLEORADATAEASY C:ORACLEXEAPPORACLEFAST_RECOVERY_AREAEASYONLINELOG C:ORACLEXEAPPORACLEADMINEASYadump
Ensuite, il faut modifier le chemin des controlfiles dans le spfile :
SQL> ALTER SYSTEM SET control_files='C:ORACLEXEAPPORACLEORADATAEASYCONTROL.DBF' SCOPE=SPFILE; System altered.
Maintenant, on arrête la base et on déplace tous les fichiers listés ci dessus :
SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> exit Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production C:Users>move C:ORACLEXEAPPORACLEORADATAXECONTROL.DBF C:ORACLEXEAPPORACLEORADATAEASY 1 fichier(s) déplacé(s). C:Users>move C:ORACLEXEAPPORACLEORADATAXECONTROL.DBF C:ORACLEXEAPPORACLEORADATAEASY Le fichier spécifié est introuvable. C:Users>move C:ORACLEXEAPPORACLEORADATAXESYSAUX.DBF C:ORACLEXEAPPORACLEORADATAEASY 1 fichier(s) déplacé(s). C:Users>move C:ORACLEXEAPPORACLEORADATAXESYSTEM.DBF C:ORACLEXEAPPORACLEORADATAEASY 1 fichier(s) déplacé(s). C:Users>move C:ORACLEXEAPPORACLEORADATAXETEMP.DBF C:ORACLEXEAPPORACLEORADATAEASY 1 fichier(s) déplacé(s). C:Users>move C:ORACLEXEAPPORACLEORADATAXEUNDOTBS1.DBF C:ORACLEXEAPPORACLEORADATAEASY 1 fichier(s) déplacé(s). C:Users>move C:ORACLEXEAPPORACLEORADATAXEUSERS.DBF C:ORACLEXEAPPORACLEORADATAEASY 1 fichier(s) déplacé(s). C:Users>move C:ORACLEXEAPPORACLEFAST_RECOVERY_AREAXEONLINELOGO1_MF_1_7V24ZXKD_.LOG C:ORACLEXEAPPORACLEFAST_RECOVERY_AREAEASYONLINELOG 1 fichier(s) déplacé(s). C:Users>move C:ORACLEXEAPPORACLEFAST_RECOVERY_AREAXEONLINELOGO1_MF_2_7V24ZYFY_.LOG C:ORACLEXEAPPORACLEFAST_RECOVERY_AREAEASYONLINELOG 1 fichier(s) déplacé(s).
On peut monter la base et comme nous avons déplacé le controlfile, elle devrait se monter sans problème :
SQL> startup mount ORACLE instance started. Total System Global Area 1071333376 bytes Fixed Size 1388352 bytes Variable Size 671088832 bytes Database Buffers 394264576 bytes Redo Buffers 4591616 bytes Database mounted.
Maintenant, on va s’attaquer aux fichiers de données. Pour déplacer un fichier de données, il faut utiliser la commande :
ALTER DATABASE RENAME FILE 'OLD_PATH' TO 'NEW_PATH';
Nous allons faire cette opération pour les data files et les redos logs :
SQL> ALTER DATABASE RENAME FILE 'C:ORACLEXEAPPORACLEORADATAXESYSAUX.DBF' TO 'C:ORACLEXEAPPORACLEORADATAEASYSYSAUX.DBF'; Database altered. SQL> ALTER DATABASE RENAME FILE 'C:ORACLEXEAPPORACLEORADATAXESYSTEM.DBF' TO 'C:ORACLEXEAPPORACLEORADATAEASYSYSTEM.DBF'; Database altered. SQL> ALTER DATABASE RENAME FILE 'C:ORACLEXEAPPORACLEORADATAXETEMP.DBF' TO 'C:ORACLEXEAPPORACLEORADATAEASYTEMP.DBF'; Database altered. SQL> ALTER DATABASE RENAME FILE 'C:ORACLEXEAPPORACLEORADATAXEUNDOTBS1.DBF' TO 'C:ORACLEXEAPPORACLEORADATAEASYUNDOTBS1.DBF'; Database altered. SQL> ALTER DATABASE RENAME FILE 'C:ORACLEXEAPPORACLEORADATAXEUSERS.DBF' TO 'C:ORACLEXEAPPORACLEORADATAEASYUSERS.DBF'; Database altered. SQL> ALTER DATABASE RENAME FILE 'C:ORACLEXEAPPORACLEFAST_RECOVERY_AREAXEONLINELOGO1_MF_1_7V24ZXKD_.LOG' TO 'C:ORACLEXEAPPORACLEFAST_RECOVERY_AREAEASYONLINELOGO1_MF_1_7V24ZXKD_.LOG'; Database altered. SQL> ALTER DATABASE RENAME FILE 'C:ORACLEXEAPPORACLEFAST_RECOVERY_AREAXEONLINELOGO1_MF_2_7V24ZYFY_.LOG' TO 'C:ORACLEXEAPPORACLEFAST_RECOVERY_AREAEASYONLINELOGO1_MF_2_7V24ZYFY_.LOG'; Database altered.
On peut ouvrir la base pour s’assurer que tout a correctement été déplacé, mais il faudra de nouveau la passer en mode mount pour la suite des opérations :
SQL> alter database open; Database opened. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 1071333376 bytes Fixed Size 1388352 bytes Variable Size 671088832 bytes Database Buffers 394264576 bytes Redo Buffers 4591616 bytes Database mounted.
2. Deuxième étape, renommer la base :
La base doit être en mode MOUNT et nous allons utiliser l’utilitaire NID d’ORACLE pour modifier le DBID et le DBNAME :
C:Users>set ORACLE_SID=XE C:Users>nid TARGET=sys/oracle DBNAME=EASY DBNEWID: Release 11.2.0.2.0 - Production on Ven. Juil. 19 18:13:25 2013 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. Connected to database XE (DBID=2664395354) Connected to server version 11.2.0 Control Files in database: C:ORACLEXEAPPORACLEORADATAEASYCONTROL.DBF Change database ID and database name XE to EASY? (Y/[N]) => Y Proceeding with operation Changing database ID from 2664395354 to 2845801349 Changing database name from XE to EASY Control File C:ORACLEXEAPPORACLEORADATAEASYCONTROL.DBF - modified Datafile C:ORACLEXEAPPORACLEORADATAEASYSYSTEM.DB - dbid changed, wrote new name Datafile C:ORACLEXEAPPORACLEORADATAEASYUNDOTBS1.DB - dbid changed, wrote new name Datafile C:ORACLEXEAPPORACLEORADATAEASYSYSAUX.DB - dbid changed, wrote new name Datafile C:ORACLEXEAPPORACLEORADATAEASYUSERS.DB - dbid changed, wrote new name Datafile C:ORACLEXEAPPORACLEORADATAEASYTEMP.DB - dbid changed, wrote new name Control File C:ORACLEXEAPPORACLEORADATAEASYCONTROL.DBF - dbid changed, wrote new name Instance shut down Database name changed to EASY. Modify parameter file and generate a new password file before restarting. Database ID for database EASY changed to 2845801349. All previous backups and archived redo logs for this database are unusable. Database is not aware of previous backups and archived logs in Recovery Area. Database has been shutdown, open database with RESETLOGS option. Succesfully changed database name and ID. DBNEWID - Completed succesfully.
La base est renommée, mais il reste quelques étapes (à réaliser dans l’ordre) :
– Modifier le db_name dans le spfile :
SQL> startup nomount ORACLE instance started. Total System Global Area 1071333376 bytes Fixed Size 1388352 bytes Variable Size 671088832 bytes Database Buffers 394264576 bytes Redo Buffers 4591616 bytes SQL> alter system set DB_NAME=EASY scope=SPFILE; SQL> shutdown immediate
– Renommer le SPFILE :
C:Users>move C:oraclexeapporacleproduct11.2.0serverdatabaseSPFILEXE.ORA C:oraclexeapporacleproduct11.2.0serverdata baseSPFILEEASY.ORA 1 fichier(s) déplacé(s).
– WINDOWS Seulement : Modifier le service Windows
C:Users>oradim -delete -sid XE Instance deleted. C:Users>oradim -new -sid EASY -syspwd mot_de_passe_system -startmode a OPW-00005: File with same name exists - please delete or rename ==> Vous pouvez ignorer cette erreur Instance created.
– UNIX Seulement : modifier le fichier /etc/oratab
– Générer un nouveau password file (voir doc Oracle pour les options) :
ORAPWD FILE=C:oraclexeapporacleproduct11.2.0serverdatabasePWDEASY.ORA [ENTRIES=numusers] [FORCE={Y|N}] [IGNORECASE={Y|N}] [NOSYSDBA={Y|N}]
Nous pouvons ouvrir la base :
C:Users>sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on Ven. Juil. 19 18:34:05 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to an idle instance. SQL> startup mount; ORACLE instance started. Total System Global Area 1071333376 bytes Fixed Size 1388352 bytes Variable Size 620757184 bytes Database Buffers 444596224 bytes Redo Buffers 4591616 bytes Database mounted. SQL> alter database open resetlogs; Database altered.
La base est enfin ouverte. Cependant, comme on a pu le voir lors de l’utilisation de « NID », le DBID a changé, toute les backups et autres archives ne sont donc plus utilisable. Il ne faut pas oublier de faire du nettoyage côté RMAN :
RMAN> delete noprompt archivelog all; RMAN> delete noprompt backup
Vous souhaitez renommer une base de données en RAC ? Vous n’êtes pas sur le bon article : http://blog.easyteam.fr/2013/07/02/comment-renommer-une-base-de-donnees-rac/
4 réflexions sur “Renommer une base de données Oracle”
La grande classe !!!
Merci pour ce retour, je vais effectuer une correction.
D’après la doc, l’utilisation suivante fonctionne :
oradim -new -sid EASY -syspwd mot_de_passe_system -startmode a -spfile
Bonjour,
vous pouvez passer la commande sans spécifier l’argument -spfile,
la commande devient :
oradim -new -sid EASY -syspwd mot_de_passe_system -startmode auto
Cordialement,
Bonjour,
votre tuto est parfait sauf une erreur a la fin avec cette commande :
oradim -new -sid EASY -syspwd mot_de_passe_system -startmode a -pfile C:oraclexeapporacleproduct11.2.0serverdatabaseSPFILEEASY.ORA
si on utilise cette commande la base ne démarre pas automatiquement car on demande le pfile comme paramètre et on spécifie le spfile par la suite.
Cordialement,
Les commentaires sont fermés.