Могу ли я изменить SID базы данных Oracle?

18

Сервер - Oracle Database 11g Enterprise Edition, выпуск 11.1.0.7.0 - 64-разрядная версия

Существует ли простой и быстрый способ изменить SID тестовых баз данных на сервере?

Удаление и воссоздание базы данных вариант для меня. Но я ищу что-то, требующее меньше времени.

Другой вариант назначения имен в клиентах tnsnames.ora подвержен ошибкам, поскольку они не администрируются централизованно.

По сравнению со временем удаления и создания базы данных на SQL-сервере, время, необходимое для создания новой базы данных Oracle, чрезмерно больше. Далее на SQL-сервере вы можете переименовать экземпляры SQL-Server. [Обычно вы переименовываете сервер, на котором работает SQL-Server, и у вас возникают проблемы, пока вы тоже не переименуете сервер].

bernd_k
источник
Вы упоминаете, что вы можете удалить и воссоздать базы данных. У вас есть доступ к производственной базе данных и ее резервным копиям? Вы можете использовать RMAN и команду duplicate для воссоздания базы данных и одновременного изменения SID.
Sumnibot
Нет, я работаю администратором баз данных по разработке и тестированию баз данных Oracle.
bernd_k
2
Когда вы используете базу данных в SQL Server, вы обычно используете схему (= user) в Oracle.
Одно и то

Ответы:

13

С 9i утилита dbnewid (nid) может использоваться для изменения имени базы данных (и DBID, если требуется). Если имя базы данных изменяется только тогда, сброс журналов не требуется:

  • 1 автозагрузка базы данных в режиме монтирования

    shutdown immediate
    startup mount
  • 2 запустите nid, чтобы изменить имя базы данных:

    nid target=sys/syspassword@dbtns dbname=newname setname=YES
  • 3 выключите и запустите базу данных в режиме монтирования:

    shutdown immediate
    startup mount
  • 4 изменить db_nameв spfile (или в pfile редактирование файла):

    alter system set db_name=newname scope=spfile;
  • 5 воссоздать файл паролей:

    orapwd file=orapwnewname password=syspassword
  • 6 запуск базы данных

    startup
  • 7 шагов переименования сообщения:

    change SID in listener.ora
    correct tnsnames.ora
    remove old trace directories
    change /etc/oratab (UNIX) or rename windows service using oradim
Андрей Горюнов
источник
1
Таким образом я переименовал 4 базы данных Oracle на Windows Server. В поисках утилиты dbnewid я обнаружил oracle-base.com/articles/9i/DBNEWID.php, который дал несколько дополнительных объяснений.
bernd_k
1
это хороший ответ, когда вопрос был: как переименовать базу данных. Вопрос: как сменить SID.
ik_zelf
17

Вам нужно пересоздать контрольный файл

Этот пост Каунайна Ахмеда описывает необходимые шаги:

  1. do: изменить контрольный файл резервной копии базы данных для трассировки;
  2. извлеките команду «create controlfile» из файла трассировки background-dump-destination.
  3. отключение БД.
  4. Измените имя DB в вашем init.ora и измените init.ora
  5. Измените SID в / etc / oratab или / var / opt / oracle / oratab
  6. Измените SID в своей среде и получите его
  7. Запуск базы данных для монтирования состояния при запуске монтирования
  8. Повторно создайте контрольный файл с оператором из позиции 2.
  9. Измените в базе данных имя global_name на 10. Измените конфигурацию TNS соответственно $ ORACLE_HOME / network / admin / *. Ora Найдите SID и GLOBAL_NAME

Есть другие инструменты, упомянутые в теме.

Вот пост AskTom, в котором более подробно описан процесс. Пока он на 10г, все равно должен работать.

Брайан Баллсун-Стэнтон
источник
5
Для пользователей Windows, вам также необходимо использовать утилиту «oradim» для установки новой службы.
REW
9

Да, вы можете, и это тоже довольно легко.

В Oracle ORACLE_SID - это просто имя экземпляра Oracle, и оно не очень связано с DBNAME. База данных с именем PROD может обслуживаться с использованием экземпляров с любым допустимым именем. Нет прямой связи между SID и DBNAME. Это соединение осуществляется с использованием параметров.

Файл параметров идентифицируется как init $ {ORACLE_SID} .ora или spfile $ {ORACLE_SID} .ora. В файле параметров находится параметр db_name. Именно здесь устанавливается связь между экземпляром Oracle и базой данных.

Таким образом, вам не нужно заново создавать контрольный файл, вам не нужно использовать nid, просто убедитесь, что ваш файл параметров имеет правильное имя, отключите старый экземпляр Oracle и запустите новый экземпляр Oracle после установки ORACLE_SID к новому имени экземпляра Oracle. Файл параметров и файл паролей находятся с использованием $ {ORACLE_SID} как части их имени.

Повторное создание контрольного файла необходимо только тогда, когда необходимо изменить имя DBNAME. nid необходим после операции клонирования, где необходимо изменить DBID, чтобы предотвратить аварии, которые могут повредить резервные копии исходной базы данных.

ik_zelf
источник
+1 Но я все еще не уверен, хочу ли я также изменить DB_NAME.
bernd_k
Если вы хотите: конечно, вы можете, другие ответы объяснили правильно, как это сделать. По какой причине вы бы это сделали? Имя базы данных очень физическое. Знание db_name хорошо для dba, но для большинства других это не имеет значения. При обычном консолидированном подходе у вас есть база данных, обслуживающая множество сервисов. Служба - приложение - не должно заботиться о том, в какой базе данных оно работает.
ik_zelf