Подтвердить что ты не робот

Как изменить SID экземпляра Oracle XE

Мне нужно было изменить SID базы данных Oracle XE (а не имя службы) в соответствии с производственной базой данных.

Когда я попытался выполнить поиск в Интернете, большинство страниц описывали изменение или добавление имени службы через tnsnames.ora; это не то, что мне нужно было сделать.

4b9b3361

Ответ 1

В статье asktom есть ответ, но форматирование и многословие затрудняют его выполнение, поэтому здесь резюме:

[XE_HOME] означает, что Oracle XE установлен. Обычно это C:\oraclexe\app\oracle\product\10.2.0\server.

Убедитесь, что у вас есть привилегии администратора или процедура завершится с ошибкой.

  • Настройте SPFILE (вы можете удалить старый файл, если хотите)
    • copy [XE_HOME]\dbs\spfileXE.ora [XE_HOME]\dbs\spfileNEW_SID_NAME.ora
    • copy [XE_HOME]\database\initXE.ora [XE_HOME]\database\initNEW_SID_NAME.ora
    • Изменить [XE_HOME]\database\initNEW_SID_NAME.ora: он должен содержать одну строку: SPFILE='[XE_HOME]\server\dbs/spfileNEW_SID_NAME.ora'
  • Завершить работу и заменить старую службу новым:
    • sqlplus / as sysdba и выполните shutdown
    • lsnrctl stop
    • oradim -new -sid NEW_SID_NAME -startmode auto -pfile [XE_HOME]\database\initNEW_SID_NAME.ora
    • oradim -delete -sid XE
    • lsnrctl start
  • Обновить свойство среды ORACLE_SID ( "Системные настройки" > "Дополнительно" > "Среда" )
  • Заставить Oracle регистрироваться слушателем
    • sqlplus / as sysdba и выполните alter system register;

Вы можете проверить, что SID был изменен, выполнив следующий запрос: select instance_name from v$instance;

Ответ 2

Asktom ответ, мне пришлось пройти через много google-fu, чтобы добраться до него.

Ответ 3

У меня возникли проблемы с решением, опубликованным Johannes, поэтому мне пришлось сделать несколько дополнительных шагов. При попытке подключиться к оракулу (шаг 4), выполнив sqlplus/as sysdba, я получил:

ERROR: ORA-12560: TNS:protocol adapter error

Решение для этого выполняло следующую строку:

oradim -start -sid NEW_SID_NAME

Затем соединение с/отлично работало, но попытка подключения к NEW_SID_NAME с системой или HR вызвала у меня еще одну проблему:

ERROR: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

Я проверил, что с запросом select instance_name from v$instance;, что слушатель будет NEW_SID_NAME, и так. Но запуск lsnrctl status в командной строке или запрос select name from dba_services; не отображали NEW_SID_NAME в качестве слушателя. Решение этой проблемы выполняло следующее предложение на sqlplus:

alter system set service_names='NEW_SID_NAME';

Возможно, вам понадобится выполнить alter system register; после этого.

После выполнения этих двух шагов я могу подключиться к NEW_SID_NAME с системой и HR.

Надеюсь, что это поможет