#oracle #oracle-xe-18.4
#Oracle #oracle-xe #sid #имя службы
Вопрос:
Мне нужно было изменить идентификатор базы данных Oracle XE (а не имя службы), чтобы он соответствовал производственной базе данных.
Когда я попытался выполнить поиск в Интернете, большинство страниц описывали изменение или добавление имени службы через tnsnames.ora; это не то, что мне нужно было делать.
Ответ №1:
Убедитесь, что у вас есть права администратора, иначе процедура завершится с ошибкой.
- Настройте SPF-ФАЙЛ (вы можете удалить старый файл, если хотите)
copy [XE_HOME]dbsspfileXE.ora [XE_HOME]dbsspfileNEW_SID_NAME.ora
copy [XE_HOME]databaseinitXE.ora [XE_HOME]databaseinitNEW_SID_NAME.ora
- Редактировать
[XE_HOME]databaseinitNEW_SID_NAME.ora
: он должен содержать одну строку, подобную этой:SPFILE='[XE_HOME]serverdbs/spfileNEW_SID_NAME.ora'
- Завершение работы и замена старой службы новой:
sqlplus / as sysdba
и выполнитьshutdown
lsnrctl stop
oradim -new -sid NEW_SID_NAME -startmode auto -pfile [XE_HOME]databaseinitNEW_SID_NAME.ora
oradim -delete -sid XE
lsnrctl start
- Обновите свойство среды ORACLE_SID (Системные настройки> Дополнительно> Среда)
- Заставить 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 в процессе. Итак, что я сделал, так это :
- Остановите и удалите существующую службу, если таковая имеется:
oradim -delete -sid XE
- Остановить прослушиватель
- Настройте SPF-ФАЙЛ, как объяснил Йоханнес
- Сделайте копию скрипта XE.bat, вы можете назвать его как угодно
- Отредактируйте копию скрипта следующим образом :
- Измените строку «set ORACLE_SID = XE» на «set 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 запущена и запущена!!