Modification d’un nom de base de données À l’aide de NEWID
Consultant senior de House of Brick
L’une des nombreuses tâches qu’une DBA effectuera consiste à cloner une base de données. Habituellement, cela se fait d’une base de données de production à une base de données d’assurance qualité ou de test pour fournir des données de volume de production. Si la base de données se trouve sur une machine virtuelle, le clonage peut se produire au niveau de la machine virtuelle.
Le clonage fait exactement ce que cela signifie, en créant un duplicata exact d’une base de données. Malheureusement, cela finit par vous avoir deux bases de données avec le même nom et DBID dans votre réseau. Parfois, vous pouvez le résoudre suffisamment avec un alias au niveau TNSNAMES.
D’autres fois, vous devrez changer le nom de la base de données et le DBID en interne. Oracle a un utilitaire pour cela, l’application NEWID.
Ce document détaille les étapes requises pour effectuer le changement de nom de base de données à l’aide de NEWID.
Terminologie et définitions
La terminologie et les définitions suivantes seront utilisées dans ce document.
SID – Identifiant de site Oracle. C’est le nom de la base de données qui est en cours de modification.
PFILE – Fichier de paramètres Oracle. Situé dans le dossierORORACLE_HOME/dbs.
FICHIER SP – Fichier de paramètres du serveur Oracle. Également situé dans le dossierORORACLE_HOME/dbs.
ORATAB – Fichier de configuration Oracle qui associe les SID Oracle aux maisons Oracle. Situé à /etc/oratab.
TNSNAMES – Fichier de configuration réseau Oracle qui associe les connexions entrantes aux SID Oracle. Situé dans le dossierORORACLE_HOME/network/admin.
Nom de la base de données
Le nom de la base de données, ou SID, passe de prd à qa. Cela sera référencé le cas échéant dans le document.
Aperçu du processus
Il y a quatre étapes à effectuer pour modifier un nom de base de données Oracle (SID).
- Travail de préparation préliminaire
- Utiliser l’application NID
- Modifier les références SID
- Démarrer la base de données et finaliser les modifications
1. Travail de préparation préliminaire
Après le changement de nom de la base de données, des modifications devront être apportées au fichier de paramètres Oracle. Si la base de données utilise un fichier de paramètres de serveur (fichier SP) au lieu d’un fichier de paramètres (fichier PFILE), vous devrez convertir un fichier SP en fichier PFILE avant que le changement de nom de la base de données ne se produise.
1.1 Déterminer si le FICHIER SP est utilisé
Exécutez la requête suivante pour voir si votre base de données a été démarrée avec un fichier PFILE ou un FICHIER SP :
Figure 1.1 Requête pour voir si le fichier SPFILE est utilisé
» À PARTIR de sys.v_parameterparameter WHERE name=’spfile’;
Exécutez cette requête pour déterminer si la base de données commence par un fichier PFILE ou un FICHIER SPFILE.
Si la base de données commence par un fichier PFILE, aucun travail de préparation supplémentaire n’est nécessaire et vous pouvez passer à l’étape 2 – Utiliser l’application NID. Sinon, continuez avec l’étape suivante.
1.2 Création d’un FICHIER PFILE à partir d’un FICHIER SP
Exécutez le code sql suivant pour créer un FICHIER PFILE à partir d’un FICHIER SP :
Figure 1.2 Création d’un FICHIER PFILE à partir d’un FICHIER SP.
Exécutez cette commande pour créer un FICHIER PFILE à partir d’un FICHIER SP.
Cela créera un fichier PFILE dans le répertoireORORACLE_HOME/dbs. Il utilisera le SID actuel dans le nom. Puisque le SID actuel de la base de données est prd, le nom sera initprd.ora. Copiez le fichier pour avoir le nouveau SID dans son nom. Pour cet exemple, le nouveau nom serait initqa.ora. Voir la figure 1.3 pour un exemple de copie du fichier.
Figure 1.3 Copie de l’ancien fichier PFILE sous son nouveau nom
…
$ cd $ORACLE_HOME/dbs
pwpwd
/u01/app/oracle/product/11.2.0/db_1/dbs
is est-ls initialisé.ora
9-rw-r 1 1 oracle oinstall 1106 Oct 11 20:17 initprd.ora
in cp initprd.ora initqa.ora
$
…
Exemple de copie de l’ancien fichier PFILE, initdwprd.ora au nouveau fichier PFILE, initdwqa.ora.
Utilisez l’application NID
Pour utiliser l’application NID, vous devez vous connecter au serveur de base de données en tant qu’utilisateur oracle et effectuer les étapes suivantes.
- Arrêter la base de données
- Démarrer la base de données en mode de montage
- Exécuter la commande NID
- Arrêter la base de données
2.1 Arrêt de la base de données
Démarrez une session SQLPlus et entrez la commande arrêt immédiat. La figure 2.1 illustre cette étape.
Figure 2.1 Fermeture de la base de données
$ sqlplus/as sysdba
SQL *Plus: Production de la version 11.2.0.3.0 le Sam Oct 11 20:02:24 2014
Copyright © 1982, 2011, Oracle, Tous droits réservés.
Connecté à :
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – Production
Avec les options de partitionnement, OLAP, Data Mining et Real Application Testing
SQL > arrêt immédiat
Base de données fermée.
Base de données démontée.
Arrêt de l’instance ORACLE.
SQL>
…
Exemple de sortie lors de l’arrêt de la base de données.
2.2 Démarrage de la base de données en mode Montage
Démarrez une session SQLPlus et entrez la commande démarrage du montage. La figure 2.2 montre que cela est fait.
Figure 2.2 Démarrage de la base de données en mode montage
$ sqlplus /as sysdbaSQL * Plus : Version 11.2.0.3.0 Production le Sam Oct 11 20:02:24 2014Copyright © 1982, 2011, Oracle, Tous droits réservés.
Connecté à une instance inactive.
SQL > montage de démarrage
L’instance ORACLE a démarré.
Surface globale totale du système 535662593 octets
Taille fixe 1346140 octets
Taille variable 260048292 octets
Tampons de base de données 268435456 octets
Rétablir les tampons 5832704 octets
Base de données montée.
SQL>
…
Exemple de sortie lors du démarrage de la base de données en mode montage.
Entrez exit pour revenir à l’invite shell.
2.3 Exécutez la commande NID
La commande NID est le programme Oracle qui modifie le SID de la base de données. Pour l’utiliser, vous aurez besoin du mot de passe du compte SYS et du nouveau SID pour la base de données. Le nouveau SID étant qa, la ligne de commande sera nid target=SYS dbname=qa. Après avoir appuyé sur Entrée, vous serez invité à saisir le mot de passe du compte SYS. Entrez le mot de passe. Vous serez invité à confirmer que vous souhaitez modifier le SID. Voir la figure 2.3.1 pour l’affichage à l’écran.
Figure 2.3.1 Affichage de l’écran de la commande NID en cours d’exécution
$ nid target=SYS dbname=qa
DBNEWID: Version 11.2.0.3.0 – Production le Sam Oct 11 20:05:54 2014
Copyright © 1982, 2011, Oracle et/ou ses sociétés affiliées. Tous droits réservés.
Mot de passe:
Connecté à la base de données PRD (DBID=3949194393)
Connexion au serveur version 11.2.0
Fichiers de contrôle dans la base de données:
/u01/app/oracle/oradata/prd/control01.ctl
/u01/app/oracle/oradata/prd/control02.ctl
Changer l’ID de la base de données et le nom de la base de données PRD en QA ? (D/) => _
…
Sortie du démarrage de la commande NID.
Entrez Y pour valider la modification du nom de la base de données comme indiqué dans la figure 2.3.2
Figure 2.3.2 Confirmant le changement de nom de la base de données
$ nid target = SYS dbname= qa
DBNEWID: Version 11.2.0.3.0 – Production le Sam Oct 11 20:05:54 2014
Copyright © 1982, 2011, Oracle et/ou ses sociétés affiliées. Tous droits réservés.
Mot de passe:
Connecté à la base de données PRD (DBID=3949194393)
Se connecter au serveur version 11.2.0
Fichiers de contrôle dans la base de données:
/u01/app/oracle/oradata/prd/control01.ctl
/u02/app/oracle/oradata/prd/control02.ctl
Changer l’ID de la base de données et le nom de la base de données PRD en QA? (Y/) = > Y
…
Répondre Y à la confimation.
Le programme apportera les modifications internes et affichera sa progression. Une fois terminé, vous serez renvoyé à l’invite du shell, comme indiqué dans la figure 2.3.3.
Figure 2.3.3 Sortie du programme NID
Fichier de données/u02/app/oracle/oradata/prd/dw03.db-dbid a changé, a écrit un nouveau nom
Fichier de données/u02/app/oracle/oradata/prd/dw04.db-dbid a changé, a écrit un nouveau nom
Fichier de données/u02/app/oracle/oradata/prd/dw05.db-dbid a changé, a écrit un nouveau nom
Fichier de données/u01/app/oracle/oradata/prd/temp01.db-dbid a changé, a écrit un nouveau nom
Fichier de contrôle /u01/app/oracle/oradata/prd/control01.ctl-dbid a changé, a écrit un nouveau nom
Fichier de contrôle /u02/app/oracle/oradata/prd/control02.ctl-dbid a changé, a écrit un nouveau nom
Arrêt de l’instance
Le nom de la base de données a été changé en QA.
Modifiez le fichier de paramètres et générez un nouveau fichier de mot de passe avant de redémarrer.
ID de base de données pour l’assurance qualité de base de données modifié en 1714809981
Toutes les sauvegardes précédentes et les journaux de restauration archivés de cette base de données sont inutilisables.
La base de données ne connaît pas les sauvegardes de prévisualisation et les journaux archivés dans la zone de récupération.
La base de données a été arrêtée, ouvrez la base de données avec l’option RESETLOGS.
Changement réussi du nom et de l’ID de la base de données.
DBNEWID – Terminé avec succès.
$
…
Sortie du programme NID montrant une réussite.
2.4 Fermer la base de données
La base de données devra être fermée de nouveau. Répétez le démarrage d’une session SQLPlus et entrez la commande arrêt immédiat comme indiqué à l’étape 2.1.
3. Modifier les références SID
Des modifications devront être apportées aux fichiers paramètre de base de données, tnsnames, oratab et environnement pour refléter la modification du SID de base de données.
- Le fichier de paramètres Oracle doit être renommé et modifié.
- Oratab doit renommer le SID.
- le fichier ora doit être renommé SID
- Si l’ORACLE_SID est défini dans le profil, il devra être modifié.
3.1 Le fichier de paramètres Oracle doit être renommé et modifié
Le fichier de paramètres Oracle doit être modifié et deux lignes modifiées. Passez à l’endroit où le fichier de paramètres est stocké, le dossierORORACLE_HOME/dbs. Voir la figure 3.1.1 pour un exemple.
Figure 3.1.1 Passage au dossier fichier de paramètres
…
$ il est possible d’utiliser le code source de la base de données de la base de données.ora
9-rw-r 1 1 oracle oinstall 1106 Oct 11 20:17 initqa.ora
$
…
Exemple de passage au dossier fichier de paramètres pour préparer l’édition du fichier de paramètres.
Modifiez le fichier et localisez les deux lignes à modifier. Les lignes commencent par dbname et instance_name. Voir la figure 3.1.2 pour un exemple de l’apparence du fichier de paramètres avant les modifications.
Figure 3.1.2 Requête pour voir si le FICHIER SPF est utilisé.
dbname= »prd »
db_recovery_file_dest_size=64424509440
db_recovery_file_dest= »/u01/app/oracle/flash_recovery_area »
fast_start_mttr_target=120
instance_name=prd
…
Les lignes qui sont mises en surbrillance doivent être remplacées par un nouveau nom SID.
Vous devrez changer la valeur SID pour les deux lignes de l’ancien SID, prd, au nouveau SID, qa. Voir la figure 3.1.3 pour savoir comment les lignes s’occuperaient des changements.
Figure 3.1.3 Requête pour voir si le FICHIER SPF est utilisé
dbname= »qa »
db_recovery_file_dest_size=64424509440
db_recovery_file_dest= »/u01/app/oracle/flash_recovery_area »
fast_start_mttr_target=120
instance_name=qa
…
Fichier de paramètres indiquant les changements de nom de SID après l’édition.
Enregistrez le fichier et quittez l’éditeur.
3.2 Oratab doit renommer le SID
Le fichier ORATAB Oracle, /etc/oratab, aura besoin que la référence SID soit modifiée par rapport à l’ancien SID. prd au nouveau SID. aq. Modifiez le fichier et remplacez l’ancienne entrée SID par la nouvelle SID. Voir la figure 3.2.1 pour un exemple.
Figure 3.2.1 Exemple de fichier ORATAB modifié /etc/oratab
#
#
#1120:/u01/app/oracle/product/11.2.0:N
orcl:/u01/app/oracle/product/11.2.0/db_1:Y
#prd:/u01/app/oracle/product/11.2.0/db_1:Y
qa:/u01/app/oracle/product/11.2.0/db_1:Y;
Exemple de fichier ORATAB montrant la référence SID modifiée de dwprd à dwqa. La valeur modifiée est en gras.
3.3 TNSNAMES doit avoir le SID renommé
Le fichier Oracle TNSNANES, tnsnames.ora, il faudra que la référence SID soit modifiée par rapport à l’ancien SID. dwprd au nouveau SID. QWQ. Il faudra également modifier l’adresse de l’HÔTE pour qu’elle corresponde au nouveau système. TNSNAMES se trouve dans le dossierORORACLE_HOME/network/admin. Modifiez le fichier et remplacez l’ancienne entrée SID par la nouvelle SID, puis modifiez l’adresse de l’HÔTE pour qu’elle corresponde au nouveau système. Voir la figure 3.3.1 pour un exemple.
Figure 3.3.1 Exemple de fichier TNSNAMES modifiéORORACLE_HOME/network/admin/tnsnames.ora
(SID=PLSExtProc)
(PRÉSENTATION=RO)
)
) QA=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP) (HOST=192.188.1.86) (PORT = 1521))
)
( CONNECT_DATA=
(NOM_SERVICE=qa)
(UR=A)
)
)
Exemple de fichier TNSNAMES montrant la référence SID modifiée de dwprd à dwqa et l’adresse de l’HÔTE définie sur une nouvelle adresse. La valeur modifiée est en gras.
3.4 Si l’ORACLE_SID est défini dans le profil, il devra être modifié.
Habituellement, la variable d’environnementORORACLE_SID est définie sur la valeur SID dans le script de profil de connexion,HOMEHOME/.profil ouHOMEACCUEIL /.bash_profile. Localisez et modifiez le paramètre SID sur la nouvelle valeur. La figure 3.4.1 montre un exemple d’affichage de la valeurORORACLE_SID à partir de la ligne de commande.
Figure 3.4.1 Affichant la valeurORORACLE_SID
$ echo $ORACLE_SID
prd
$
…
Utilisation de la commande echo pour afficher la valeurORORACLE_SID.
Vous devrez vous déconnecter et vous reconnecter après avoir modifié la valeur ORACLE_SID dans le script de profil pour la définir dans votre environnement.
4. Démarrer la base de données et finaliser les modifications
La dernière étape à effectuer consiste à démarrer la base de données jusqu’au niveau de montage et à l’ouvrir avec l’option resetlogs. Démarrez une session SQLPlus, démarrez la base de données jusqu’au mode de montage en entrant le montage de démarrage. Si vous deviez créer un fichier PFILE à l’étape 1, la commande start est startup pfile=initSID.monture ora. Donc, pour notre exemple, ce serait startup pfile=initqa.monture ora. Ouvrez ensuite la base de données avec la commande alter database open resetlogs;. Voir la figure 4.1 pour un exemple d’affichage à l’écran.
Figure 4.1 Démarrage de la base de données et réinitialisation des journaux
$ sqlplus/as sysdba
SQL *Plus: Production de la version 11.2.0.3.0 le Sam Oct 11 20:02:24 2014
Copyright © 1982, 2011, Oracle, Tous droits réservés.
Connecté à une instance inactive.
SQL > montage de démarrage
L’instance ORACLE a démarré.
Surface globale totale du système 535662593 octets
Taille fixe 1346140 octets
Taille variable 260048292 octets
Tampons de base de données 268435456 octets
Rétablir les tampons 5832704 octets
Base de données montée.
SQL > alter database open resetlogs;
Base de données modifiée.
SQL>
…
Démarrage de la base de données en mode montage et ouverture avec l’option resetlogs.
Si vous deviez créer un FICHIER PFILE à l’étape 1, vous devrez le convertir en FICHIER SPFILE. Cela se fait à l’aide de la commande CREATE SPFILE. À l’invite SQL, entrez la commande create spfile from pfile.
Conclusion
Changer le nom de la base de données d’une base de données Oracle peut sembler compliqué, mais peut être effectué avec des compétences de base en systèmes. En suivant les procédures décrites dans ce document, un DBA peut effectuer la tâche avec un temps d’arrêt minimal pour la base de données.