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

#oracle #oracle-xe-18.4

#Oracle #oracle-xe #sid #имя службы

Вопрос:

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

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

Ответ №1:

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

[XE_HOME] означает, где установлен Oracle XE. Обычно это так C:oraclexeapporacleproduct10.2.0server .

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

  1. Настройте SPF-ФАЙЛ (вы можете удалить старый файл, если хотите)
    1. copy [XE_HOME]dbsspfileXE.ora [XE_HOME]dbsspfileNEW_SID_NAME.ora
    2. copy [XE_HOME]databaseinitXE.ora [XE_HOME]databaseinitNEW_SID_NAME.ora
    3. Редактировать [XE_HOME]databaseinitNEW_SID_NAME.ora : он должен содержать одну строку, подобную этой: SPFILE='[XE_HOME]serverdbs/spfileNEW_SID_NAME.ora'
  2. Завершение работы и замена старой службы новой:
    1. sqlplus / as sysdba и выполнить shutdown
    2. lsnrctl stop
    3. oradim -new -sid NEW_SID_NAME -startmode auto -pfile [XE_HOME]databaseinitNEW_SID_NAME.ora
    4. oradim -delete -sid XE
    5. lsnrctl start
  3. Обновите свойство среды ORACLE_SID (Системные настройки> Дополнительно> Среда)
  4. Заставить Oracle зарегистрироваться в listener
    • sqlplus / as sysdba и выполнить alter system register;

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

Комментарии:

1. Спасибо, мне не понравилась идея принять мой собственный ответ. Ваш ответ намного понятнее,

Ответ №2:

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

 ERROR: ORA-12560: TNS:protocol adapter error
 

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

 oradim -start -sid NEW_SID_NAME
 

Затем соединение с / работало нормально, но попытка подключиться к NEW_SID_NAME с помощью system или 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 с помощью system и HR.

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

Комментарии:


1. Извините, я забыл, ссылки, которые я использовал для решения этой проблемы, где mdvreddy.blogspot.com.ar/2011/12 /… и forums.oracle.com/forums/thread.jspa?messageID=10201664

Ответ №3:

В версии 11g все предыдущие решения не работали… Я всегда получаю следующую ошибку при попытке выполнить sqlplus / as sysdba :

ОШИБКА: ORA-12560: TNS: ошибка адаптера протокола

К счастью, я нашел скрипт для выполнения того, что я хотел сделать, в разделе [XE_HOME] config scripts . Скрипт называется XE.bat, и он создаст экземпляр новой базы данных с нуля, запрашивая у вас пароль sysPassword в процессе. Итак, что я сделал, так это :

  1. Остановите и удалите существующую службу, если таковая имеется:

oradim -delete -sid XE

  1. Остановить прослушиватель
  2. Настройте SPF-ФАЙЛ, как объяснил Йоханнес
  3. Сделайте копию скрипта XE.bat, вы можете назвать его как угодно
  4. Отредактируйте копию скрипта следующим образом :
    1. Измените строку «set ORACLE_SID = XE» на «set ORACLE_SID= NEW_SID_NAME».
    2. Измените везде, где вы видите «-sid XE» на «-sid NEW_SID_NAME»
    3. Обновите строку, в которой он вызывает «orapwd.exe » команда, указывающая на файл с именем PWDNEW_SID_NAME.ora вместо PWDXE.ora
    4. Обновите строку, которая отображает spfileXE.ora в initXE.ora, чтобы отобразить spfileNEW_SID_NAME.ora в initNEW_SID_NAME.ora (эта часть может сделать шаг 3 бесполезным, но я предпочитаю делать это в любом случае, на всякий случай …)
  5. Выполните скрипт… Он несколько раз предложит вам ввести системный пароль, сказав

Введите значение для 1:

или

Введите значение для 2:

Вот и все, новая база данных с вашим NEW_SID_NAME запущена и запущена!!