web-dev-qa-db-fra.com

Puis-je changer le SID d'une base de données Oracle?

Le serveur est Oracle Database 11g Enterprise Edition version 11.1.0.7.0 - 64 bits

Existe-t-il un moyen simple et rapide de modifier les SID des bases de données de test sur le serveur?

La suppression et la recréation de la base de données est une option pour moi. Mais je cherche quelque chose qui nécessite moins de temps.

L'autre option pour attribuer des noms dans les clients tnsnames.ora est sujette aux erreurs, car ils ne sont pas administrés de manière centralisée.

Comparé au temps de suppression et de création d'une base de données sur SQL-Server, le temps nécessaire pour créer une nouvelle base de données Oracle est excessivement plus long. Plus loin sur SQL-Server, vous pouvez renommer des instances SQL-Server. [Habituellement, vous renommez le serveur sur lequel s'exécute SQL-Server et rencontrez des problèmes jusqu'à ce que vous renommiez également le serveur].

18
bernd_k

Depuis l'utilitaire 9i dbnewid (nid) peut être utilisé pour changer le nom de la base de données (et DBID si nécessaire). Si le nom de la base de données est modifié uniquement, alors resetlogs n'est pas requis:

  • 1 base de données de démarrage en mode montage

    shutdown immediate
    startup mount
    
  • 2 exécutez nid pour changer le nom de la base de données:

    nid target=sys/syspassword@dbtns dbname=newname setname=YES
    
  • 3 arrêt et démarrage de la base de données en mode montage:

    shutdown immediate
    startup mount
    
  • 4 changer db_name dans spfile (ou dans pfile éditant le fichier):

    alter system set db_name=newname scope=spfile;
    
  • 5 recréer le fichier de mot de passe:

    orapwd file=orapwnewname password=syspassword
    
  • 6 Démarrage de la base de données

    startup
    
  • 7 étapes de changement de nom:

    change SID in listener.ora
    correct tnsnames.ora
    remove old trace directories
    change /etc/oratab (UNIX) or rename windows service using oradim
    
13
Andrey Goryunov

Vous devez recréer le fichier de contrôle

Ce post de Kaunain Ahmed décrit les étapes nécessaires:

  1. faire: modifier le fichier de contrôle de sauvegarde de base de données pour tracer;
  2. extraire la commande "create controlfile" du fichier de trace background-dump-destination.
  3. arrêter la base de données.
  4. Changez le DB-Name dans votre init.ora et changez le init.ora
  5. Modifiez le SID dans/etc/oratab ou/var/opt/Oracle/oratab
  6. Modifiez le SID dans votre environnement et sourcez-le
  7. Démarrage de la base de données pour le montage de démarrage d'état de montage
  8. Recréez le fichier de contrôle avec l'instruction à partir de la position 2.
  9. Faites une autre base de données renommer global_name en 10.Changez la configuration TNS en conséquence $ Oracle_HOME/network/admin/*. Ora Recherchez SID et GLOBAL_NAME

Il existe d'autres outils référencés dans le fil.

Voici un post par AskTom qui fait référence au processus plus en détail. Bien que ce soit pour 10g, cela devrait toujours fonctionner.

17

Oui, c'est possible et c'est assez facile aussi.

Dans Oracle, Oracle_SID n'est que le nom de l'instance Oracle et n'a pas grand-chose à voir avec le DBNAME. Une base de données avec le nom PROD, peut être servie en utilisant des instances avec n'importe quel nom valide. Il n'y a pas de connexion directe entre le SID et le DBNAME. Cette connexion est établie à l'aide des paramètres.

Le fichier de paramètres est identifié comme init $ {Oracle_SID} .ora ou spfile $ {Oracle_SID} .ora Dans le fichier de paramètres se trouve le paramètre db_name. C'est là que la connexion entre l'instance Oracle et la base de données est établie.

Donc, vous n'avez pas besoin de recréer un fichier de contrôle, vous n'avez pas besoin d'utiliser nid, assurez-vous simplement que votre fichier de paramètres a le bon nom, arrêtez l'ancienne instance Oracle et démarrez la nouvelle instance Oracle après avoir défini Oracle_SID au nouveau nom d'instance Oracle. Le fichier de paramètres et le fichier de mots de passe sont tous deux trouvés en utilisant $ {Oracle_SID} dans le cadre de leur nom.

La recréation du fichier de contrôle n'est nécessaire que lorsque le DBNAME doit changer. nid est nécessaire après une opération de clonage où vous devez modifier le DBID pour éviter les accidents qui pourraient endommager les sauvegardes de la base de données source.

9
ik_zelf