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

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

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

4 ответов


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

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

убедитесь, что у вас есть права администратора или процедура будет выполнена.

  1. настройте SPFILE (вы можете удалить старый файл, если хотите)
    1. copy [XE_HOME]\dbs\spfileXE.ora [XE_HOME]\dbs\spfileNEW_SID_NAME.ora
    2. copy [XE_HOME]\database\initXE.ora [XE_HOME]\database\initNEW_SID_NAME.ora
    3. изменить [XE_HOME]\database\initNEW_SID_NAME.ora: Он должен содержать одну строку: SPFILE='[XE_HOME]\server\dbs/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]\database\initNEW_SID_NAME.ora
    4. oradim -delete -sid XE
    5. lsnrctl start
  3. обновите свойство среды ORACLE_SID (Системные настройки > дополнительно > среда)
  4. заставить Oracle зарегистрироваться слушатель
    • sqlplus / as sysdba и выполнить alter system register;

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


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


у меня были некоторые проблемы с решением, опубликованным Йоханнесом, поэтому мне пришлось сделать несколько дополнительных шагов. При попытке подключиться к oracle (Шаг 4), выполнив для sqlplus / пользователя 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, а так же. Но бежать!--5--> в командной строке или запрос 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.

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


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

ошибка: ORA-12560:TNS: ошибка адаптера протокола

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

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

oradim-delete-sid XE

  1. остановить слушателя
  2. настройте SPFILE, как объяснил Йоханнес
  3. сделайте копию скрипта XE.летучая мышь, вы можете назвать его как угодно
  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.Ора!--10-->
    4. обновите строку, которая повторяет spfileXE.ora в initXE.ora для Эха spfileNEW_SID_NAME.ora в initNEW_SID_NAME.ora (эта часть может сделать шаг 3 бесполезным, но я предпочитаю делать это в любом случае, просто в случай...)
  5. выполнить скрипт... Он предложит вам ввести системный пароль несколько раз, говоря

введите значение 1:

или

введите значение 2:

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