Как я могу изменить SID экземпляра Oracle XE
Мне нужно было изменить SID базы данных Oracle XE (не имя службы) в соответствии с производственной базой данных.
Когда я попытался выполнить поиск в Интернете, на большинстве страниц описывалось изменение или добавление имени службы через tnsnames.ora; это не то, что мне нужно было сделать.
4 ответа
В статье 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;
У Asktom есть ответ, мне пришлось пройти через много google-fu, чтобы добраться до него.
У меня были некоторые проблемы с решением, опубликованным Йоханнесом, поэтому мне пришлось сделать несколько дополнительных шагов. При попытке подключиться к оракулу (шаг 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 с системой и персоналом.
Надеюсь, поможет
В версии 11g все предыдущие решения не работали... Я всегда получаю следующую ошибку при попытке выполнить sqlplus / as sysdba:
ОШИБКА: ORA-12560: TNS: ошибка адаптера протокола
К счастью, я нашел скрипт, который делал то, что хотел, в [XE_HOME]\config\scripts. Сценарий называется XE.bat, и он будет создавать новую базу данных с нуля, запрашивая у вас sysPassword на протяжении всего процесса. Итак, что я сделал:
- Остановите и удалите существующую службу, если таковая имеется:
oradim -delete -sid XE
- Останови слушателя
- Настройте SPFILE, как объяснил Йоханнес
- Сделайте копию скрипта XE.bat, вы можете назвать его как хотите
Отредактируйте копию скрипта следующим образом:
- Измените строку "установить ORACLE_SID=XE" на "установить ORACLE_SID=NEW_SID_NAME"
- Измените везде, где вы видите "-sid XE" на "-sid NEW_SID_NAME"
- Обновите строку, в которой она вызывает команду "orapwd.exe", чтобы она указывала на файл с именем PWDNEW_SID_NAME.ora вместо PWDXE.ora
- Обновите строку, которая выводит spfileXE.ora в initXE.ora, чтобы отобразить spfileNEW_SID_NAME.ora в initNEW_SID_NAME.ora (эта часть может сделать шаг 3 бесполезным, но я предпочитаю делать это в любом случае, на всякий случай...)
Выполните скрипт... Он несколько раз запросит у вас системный пароль, говоря
Введите значение для 1:
или же
Введите значение для 2:
Вот и все, новая база данных с вашим NEW_SID_NAME запущена и работает!!