Как изменить SID экземпляра Oracle XE
Мне нужно было изменить SID базы данных Oracle XE (а не имя службы) в соответствии с производственной базой данных.
Когда я попытался выполнить поиск в Интернете, большинство страниц описывали изменение или добавление имени службы через tnsnames.ora; это не то, что мне нужно было сделать.
Ответы
Ответ 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.
Надеюсь, что это поможет