it-swarm-eu.dev

Kann ich die SID einer Oracle-Datenbank ändern?

Der Server ist Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64 Bit

Gibt es eine einfache und schnelle Möglichkeit, die SIDs der Testdatenbanken auf dem Server zu ändern?

Das Löschen und Neuerstellen der Datenbank ist für mich eine Option. Aber ich suche etwas, das weniger Zeit benötigt.

Die andere Option zum Zuweisen von Namen in den Clients tnsnames.ora ist fehleranfällig, da sie nicht zentral verwaltet werden.

Verglichen mit der Zeit zum Löschen und Erstellen einer Datenbank auf SQL-Server ist die zum Erstellen einer neuen Oracle-Datenbank erforderliche Zeit übermäßig lang. Weiter auf SQL-Server können Sie SQL-Server-Instanzen umbenennen. [Normalerweise benennen Sie den Server um, auf dem SQL-Server ausgeführt wird, und haben einige Probleme, bis Sie auch den Server umbenennen].

18
bernd_k

Seit 9i kann das Dienstprogramm dbnewid (nid) verwendet werden, um den Datenbanknamen (und ggf. die DBID) zu ändern. Wenn nur der Datenbankname geändert wird, sind keine Resetlogs erforderlich:

  • 1 Startdatenbank im Mount-Modus

    shutdown immediate
    startup mount
    
  • 2 Führen Sie nid aus, um den Datenbanknamen zu ändern:

    nid target=sys/[email protected] dbname=newname setname=YES
    
  • 3 Herunterfahren und Starten der Datenbank im Mount-Modus:

    shutdown immediate
    startup mount
    
  • 4 ändern db_name in spfile (oder in pfile beim Bearbeiten der Datei):

    alter system set db_name=newname scope=spfile;
    
  • 5 Passwortdatei neu erstellen:

    orapwd file=orapwnewname password=syspassword
    
  • 6 Starten Sie die Datenbank

    startup
    
  • 7 Schritte zum Umbenennen des Beitrags:

    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

Sie müssen die Steuerdatei neu erstellen

Dieser Beitrag von Kaunain Ahmed beschreibt die notwendigen Schritte:

  1. do: Ändern Sie die Kontrolldatei für die Datenbanksicherung, um sie zu verfolgen.
  2. extrahieren Sie den Befehl "create controlfile" aus der Trace-Datei "background-dump-destination".
  3. fahren Sie die DB herunter.
  4. Ändern Sie den DB-Namen in Ihrer init.ora und ändern Sie die init.ora
  5. Ändern Sie die SID in/etc/oratab oder/var/opt/Oracle/oratab
  6. Ändern Sie die SID in Ihrer Umgebung und geben Sie sie ein
  7. Starten Sie die Datenbank, um den Mount-Mount für den Mount-Status zu starten
  8. Erstellen Sie die Steuerdatei mit der Anweisung von Position 2 neu.
  9. Führen Sie eine Änderung der Datenbank durch, um global_name in 10 umzubenennen. Ändern Sie die TNS-Konfiguration entsprechend. $ Oracle_HOME/network/admin/*. Oder suchen Sie nach SID und GLOBAL_NAME

Es gibt andere Tools, auf die im Thread verwiesen wird.

Hier ist ein Beitrag von AskTom, der den Prozess detaillierter beschreibt. Während es für 10 g ist, sollte es immer noch funktionieren.

17

Ja, das kannst du und es ist auch ganz einfach.

In Oracle ist die Oracle_SID nur der Name für die Oracle-Instanz und hat nicht viel mit dem DBNAME zu tun. Eine Datenbank mit dem Namen PROD kann mithilfe von Instanzen mit einem beliebigen gültigen Namen bereitgestellt werden. Es besteht keine direkte Verbindung zwischen der SID und dem DBNAME. Diese Verbindung wird über die Parameter hergestellt.

Die Parameterdatei wird als init $ {Oracle_SID} .ora oder spfile $ {Oracle_SID} .ora identifiziert. In der Parameterdatei befindet sich der Parameter db_name. Hier wird die Verbindung zwischen der Oracle-Instanz und der Datenbank hergestellt.

Sie müssen also keine Steuerdatei neu erstellen, Sie müssen nid nicht verwenden, sondern nur sicherstellen, dass Ihre Parameterdatei den richtigen Namen hat, die alte Oracle-Instanz herunterfahren und die neue Oracle-Instanz starten, nachdem Sie Oracle_SID festgelegt haben auf den neuen Oracle-Instanznamen. Die Parameterdatei und die Kennwortdatei werden beide unter Verwendung der $ {Oracle_SID} als Teil ihres Namens gefunden.

Das Neuerstellen der Steuerdatei ist nur erforderlich, wenn sich der DBNAME ändern muss. nid wird nach einem Klonvorgang benötigt, bei dem Sie die DBID ändern müssen, um Unfälle zu vermeiden, die die Sicherungen der Quellendatenbank beeinträchtigen könnten.

9
ik_zelf