Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUM ORACLE F.A.Q ORACLE TUTORIELS ORACLE TUTORIELS SQL SCRIPTS SQL LIVRES ORACLE QUIZ BLOG ORACLE

Renommer une instance Oracle sous Windows

Avancé

Date de publication : 19.11.2005 , Date de mise à jour : 28.08.2007

Par fadace (Fabien Celaia)
 

Comment renommer une instance Oracle sous Windows ? Petite procédure permettant de comprendre les mécanismes internes.

I. Introduction
II. Postulat
III. Procédure
IV. Oracle Enterprise Manager
V. Conclusion et remerciements


I. Introduction

Selon la documentation d'Oracle, le nom d'une instance Oracle (SID) doit être d'au maximum 6 caractères. Dans les versions anciennes, cette limite était même à 4. Cette limite est souvent dépassée par méconnaissance, et cela peut poser certains problèmes au niveau des codes d'administration.

Dans un même registre, OEM permet de gérer plusieurs instances Oracle, mais du moment que celles-ci aient un SID distinct. Dans les faits, il n'est pas rare d'avoir plusieurs instances de même nom sur des machines différentes, ce qui cabrera Oracle Enterprise Manager.

Ce petit article vous donne la démarche à suivre pour renommer une instance Oracle. Remarquons qu'avec un minimum de modifications, elle peut être utilisée pour

  • opier une instance Oracle d'une machine à une autre
  • déplacer les fichiers d'une base de données
  • dupliquer une instance sur la même machine.
  • etc.
idea Notons que depuis sa version 9.2, Oracle offre l'utilitaire en DBNEWID bien plus convivial que la procédure ci-dessous

II. Postulat

  • Notre base de données est initalement montée et fonctionne correctement
  • Nous avons accès à la machine en tant qu'administrateur (car il va nous falloir modifier des services
  • Nous avons accès à l'instance Oracle en tant que SYSDBA
  • Nous partons du principe que la base ancienne s'appelle OLDDB et l'ancien SID est OLDSID
  • Nous partons du principe que les nouveaux noms seront respectivement NEWDB et NEWSID

III. Procédure

Connectons à l'instance en local pour

  • obtenir les informations nécessaires à la suite,
  • créer un fichier de trace (qui nous sera très bientôt utile),
  • arrêter la base.
connect / as sysdba
show parameter user_dump_dest
alter database backup controlfile to trace ;
shutdown immediate
Relevons le nom du répertoire des traces: il va falloir aller y rechercher le fichier *.trc qui vient d'y être créé: nous le reconnaîtrons à sa date et à sa taille, généralement plus grande que les traces générales de 1K.

Renommons le fichier de démarrage d'Oracle.
ren %ORACLE_HOME%\database\INITOLDSID.ora %ORACLE_HOME%\database\INITNEWSID.ora
warning Attention à bien être en mode PFILE et non SPFILE. Au besoin, regénérer un fichier PFILE via la commande
create pfile from spfile;
... et supprimer le spfile pour qu'il ne soit pas pris par défaut.

Editons ensuite ce fichier PFILE et remplacez les lignes contenant OLDSID et OLDDB par des NEWSID et NEWDB.

Les principales lignes impactées sont

  • control_files
  • instance_name
  • db_name
Renommons le fichier de mot de passe. Au besoin, Regénérons-le via la commande
orapwd file=%ORACLE_HOME%\database\PWDNEWSID.ora password=*** entries=5
Editons le fichier de trace retrouvé sous les dumps user (cf ci-dessus).

  • Supprimons tout ce qui précède le STARTUP NOMOUNT
  • Recherchons/remplaçons OLDSID par NEWSID, OLDDB par NEWDB
  • Si la commande précédente a impacté le nom de fichiers, les renommer physiquement via le système d'exploitation
  • Modifions la comande CREATE CONTROLFILE en remplaçant REUSE DATABASE par SET DATABASE et NORESETLOGS par RESETLOGS
  • Sauvegardons provisoirement ce précieux fichier sous %ORACLE_HOME%\database\CTRL.SQL
Dans les fichiers fichiers suivants, remplaçons tous les OLDSID par des NEWSID, et les OLDDB par des NEWDB.

  • %ORACLE_HOME%\network\admin\tnsname.ora
  • %ORACLE_HOME%\network\admin\listener.ora
  • %ORACLE_HOME%\network\admin\snmp_rw.ora
  • %ORACLE_HOME%\network\admin\snmp_ro.ora
Supprimons l'ancien service Oracle, puis créons-en un nouveau
oradim -delete -sid OLDSID
oradim -new -sid NEWSID -intpwd %ORACLE_HOME%\database\PWDNEWSID.ora -startmode auto -pfile %ORACLE_HOME%\database\INITNEWSID.ora
Modifions la varaible d'environnement ORACLE_SID
set ORACLE_SID=NEWSID
Relançons la nouvelle instance, mais sans monter de base, puis exécutons le code précédemment créé:
sqlplus /nolog
startup nomount
@%ORACLE_HOME%\database\CTRL.SQL
shutdown immediate
startup

IV. Oracle Enterprise Manager

Au cas où cette instance vous servait en plus de référenciel OEM, le service OEM ne redémarrera plus.

Pour fixer ce problème, démarrons simplement l'assistant Enterprise Manager Configuration Assistant (emca.bat)et choisissons l'option Mise à niveau d'un référenciel existant

Spécifions ensuite notre login et mot de passe OEM, ainsi que le service hôte:port:sid. Seul le SID devrait être modifié.

L'assistant va mettre à jour les entrées de registre pour le service en question. Il nous suffira ensuite de redémarrer le service Oracle9iManagementServer


V. Conclusion et remerciements

Voilà, le renommage a été effectué.

Un merci tout particuliers à Orafrance qui m'a mis sur la piste de cette solution.



Valid XHTML 1.1!Valid CSS!

Copyright © 2007 Fadace. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Responsable bénévole de la rubrique Oracle : Vincent Rogier - Contacter par EMail :
Vos questions techniques : forum d'entraide Oracle - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.