it-swarm.dev

Czy mogę zmienić SID bazy danych Oracle?

Serwer to Oracle Database 11g Enterprise Edition 11.1.0.7.0 - wersja 64-bitowa

Czy istnieje prosty i szybki sposób na zmianę identyfikatorów SID testowych baz danych na serwerze?

Usuwanie i ponowne tworzenie bazy danych jest dla mnie opcją. Ale szukam czegoś, co wymaga mniej czasu.

Inna opcja przypisywania nazw w klientach tnsnames.ora jest podatna na błędy, ponieważ nie są one administrowane centralnie.

W porównaniu z czasem na upuszczenie i utworzenie bazy danych na SQL-Server, ilość czasu potrzebna do utworzenia nowej bazy danych Oracle jest nadmiernie większa. Dalej na SQL-Server możesz zmienić nazwę instancji SQL-Server. [Zwykle zmieniasz nazwę serwera, na którym działa SQL-Server i masz problemy, dopóki nie zmienisz nazwy serwera].

18
bernd_k

Ponieważ 9i narzędzie dbnewid (nid) może być użyte do zmiany nazwy bazy danych (i DBID, jeśli jest to wymagane). Jeśli zmieniana jest tylko nazwa bazy danych, resetlogs nie jest wymagany:

  • 1 baza danych uruchamiania w trybie montowania

    shutdown immediate
    startup mount
    
  • 2 uruchom nid, aby zmienić nazwę bazy danych:

    nid target=sys/[email protected] dbname=newname setname=YES
    
  • 3 zamknij i uruchom bazę danych w trybie montowania:

    shutdown immediate
    startup mount
    
  • 4 zmiana db_name w pliku spfile (lub w pliku pfile podczas edycji pliku):

    alter system set db_name=newname scope=spfile;
    
  • 5 ponownie utwórz plik hasła:

    orapwd file=orapwnewname password=syspassword
    
  • 6 uruchom bazę danych

    startup
    
  • 7 kroków zmiany nazwy posta:

    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

Musisz ponownie utworzyć plik kontrolny

To post autor: Kaunain Ahmed opisuje niezbędne kroki:

  1. do: zmień plik kontrolny kopii zapasowej bazy danych w celu śledzenia;
  2. wyodrębnij polecenie „create controlfile” z pliku śledzenia background-dump-destination.
  3. zamknij DB.
  4. Zmień nazwę DB w pliku init.ora i zmień plik init.ora
  5. Zmień SID w/etc/oratab lub/var/opt/Oracle/oratab
  6. Zmień SID w swoim środowisku i uzyskaj go
  7. Uruchom bazę danych, aby zamontować stan uruchomienia
  8. Ponownie utwórz plik kontrolny z instrukcją z pozycji 2.
  9. Wykonaj zmianę bazy danych, zmień nazwę global_name na 10. Zmień odpowiednio konfigurację TNS $ Oracle_HOME/network/admin/*. Ora Poszukaj SID i GLOBAL_NAME

Istnieją inne narzędzia wymienione w wątku.

Oto post autor AskTom, który bardziej szczegółowo odwołuje się do procesu. Chociaż jest to 10 g, powinno nadal działać.

17

Tak, możesz i to też jest dość łatwe.

W Oracle Oracle_SID to tylko nazwa wystąpienia Oracle i nie ma wiele wspólnego z DBNAME. Baza danych o nazwie PROD może być obsługiwana przy użyciu instancji o dowolnej prawidłowej nazwie. Nie ma bezpośredniego połączenia między SID a DBNAME. To połączenie jest nawiązywane przy użyciu parametrów.

Plik parametrów jest identyfikowany jako init $ {Oracle_SID} .ora lub spfile $ {Oracle_SID} .ora W pliku parametrów jest parametr nazwa_db. W tym miejscu nawiązywane jest połączenie między instancją Oracle a bazą danych.

Nie musisz więc ponownie tworzyć pliku kontrolnego, nie musisz używać nid, po prostu upewnij się, że plik parametrów ma prawidłową nazwę, spuść starą instancję Oracle i uruchom nową instancję Oracle po ustawieniu Oracle_SID do nowej nazwy wystąpienia Oracle. Plik parametrów i plik haseł można znaleźć za pomocą $ {Oracle_SID} jako części ich nazwy.

Ponowne utworzenie pliku sterującego jest potrzebne tylko wtedy, gdy DBNAME musi się zmienić. nid jest potrzebny po operacji klonowania, w której należy zmienić DBID, aby zapobiec wypadkom, które mogłyby uszkodzić kopie zapasowe źródłowej bazy danych.

9
ik_zelf