Czy mogę zmienić SID bazy danych Oracle?

18

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].

bernd_k
źródło
Wspominasz, że możesz upuścić i ponownie utworzyć bazy danych. Czy masz dostęp do produkcyjnej bazy danych i jej kopii zapasowych? Możesz użyć RMAN i duplikatu, aby ponownie utworzyć bazę danych i zmienić identyfikator SID w tym samym czasie.
Sumnibot
Nie, pracuję jako DBA dla programistów i niektórych testowych baz danych Oracle.
bernd_k
2
Kiedy korzystasz z bazy danych w SQL Server, zwykle używasz schematu (= użytkownik) w Oracle. Ta sama nazwa nie oznacza tego samego w tych dwóch światach
a_horse_w___nazwie

Odpowiedzi:

13

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/syspassword@dbtns dbname=newname setname=YES
  • 3 zamknij i uruchom bazę danych w trybie montowania:

    shutdown immediate
    startup mount
  • 4 zmiana db_namew 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
Andrey Goryunov
źródło
1
W ten sposób zmieniłem nazwę 4 baz danych Oracle na Windows Server. W poszukiwaniu narzędzia dbnewid znalazłem oracle-base.com/articles/9i/DBNEWID.php, który podał kilka dodatkowych wyjaśnień.
bernd_k 13.01.11
1
to dobra odpowiedź, gdy pytanie brzmiało: jak zmienić nazwę bazy danych. Pytanie brzmi: jak zmienić SID.
ik_zelf
17

Musisz ponownie utworzyć plik kontrolny

W tym poście Kaunain Ahmed opisano 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 zrób to
  7. Uruchom bazę danych, aby uruchomić uruchamianie stanu zamontowania
  8. Ponownie utwórz plik kontrolny z instrukcją z pozycji 2.
  9. Dokonaj zmiany nazwy bazy danych alter nazwa_globalna 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 AskTom, który bardziej szczegółowo odwołuje się do procesu. Chociaż jest to 10 g, powinno nadal działać.

Brian Ballsun-Stanton
źródło
5
Warto zauważyć, że użytkownicy systemu Windows będą musieli również użyć narzędzia „oradim”, aby skonfigurować nową usługę.
REW
9

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 nazwą 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ę, sprowadź 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.

ik_zelf
źródło
+1 Ale wciąż nie jestem pewien, czy chcę zmienić DB_NAME.
bernd_k
Jeśli chcesz: jasne, możesz, pozostałe odpowiedzi poprawnie wyjaśniły, jak to zrobić. Z jakiego powodu to zrobiłbyś? Nazwa_db jest bardzo fizyczna. Znajomość nazwy_db jest dobra dla dba, ale dla większości innych nie ma znaczenia. W normalnym skonsolidowanym podejściu masz bazę danych obsługującą wiele usług. Usługa - aplikacja - nie powinna martwić się o to, w jakiej bazie danych jest uruchomiona.
ik_zelf