Oracle XE 인스턴스의 SID를 변경하려면 어떻게해야합니까?
-
03-07-2019 - |
문제
생산 데이터베이스와 일치하도록 Oracle XE 데이터베이스 (서비스 이름이 아님)의 SID를 변경해야했습니다.
온라인 검색을 시도했을 때 대부분의 페이지는 tnsnames.ora를 통해 서비스 이름을 변경하거나 추가하는 것을 설명했습니다. 그것은 내가해야 할 일이 아닙니다.
해결책
그만큼 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를 통과해야했다.
Johannes가 게시 한 솔루션에 문제가 있었으므로 추가 단계를 수행해야했습니다. 오라클에 연결하려고 할 때 (4 단계) sqlplus / sysdba 나는 얻었다 :
ERROR: ORA-12560: TNS:protocol adapter error
이를위한 솔루션은 다음 줄을 실행했습니다.
oradim -start -sid NEW_SID_NAME
그런 다음 정상으로 연결 / 작업을했지만 시스템 또는 HR과 함께 New_SID_NAME에 연결하려고하면 또 다른 문제가 발생했습니다.
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;
뉴 _sid_name을 청취자로 보여주지 않았습니다. 이 문제의 해결책은 sqlplus에서 다음 문장을 실행하는 것이 었습니다.
alter system set service_names='NEW_SID_NAME';
어쩌면 실행해야 할 수도 있습니다 alter system register;
그 후에도.
이 두 단계를 수행 한 후 System 및 HR을 사용하여 New_SID_Name에 연결할 수 있습니다.
도움이되기를 바랍니다
버전 11G에서 이전 솔루션은 모두 작동하지 않았습니다 ... sqlplus / sysdba :
오류 : ORA-12560 : TNS : 프로토콜 어댑터 오류
운 좋게 나는 [xe_home] config scripts에서하고 싶은 일을하기 위해 스크립트를 찾았습니다. 스크립트는 XE.Bat이라는 이름을 지정하며 프로세스를 따라 SySpassword를 요청하는 새 데이터베이스를 처음부터 인스턴스화합니다. 그래서 내가 한 일은 다음과 같습니다.
- 기존 서비스를 중지하고 제거하십시오.
Oradim -Delete -Sid XE
- 청취자를 중지하십시오
- Johannes가 설명한대로 Spfile을 구성하십시오
- 스크립트 XE.BAT 사본을 만들면 원하는대로 이름을 지정할 수 있습니다.
다음과 같이 스크립트의 사본을 편집하십시오.
- "set oracle_sid = xe"를 "set oracle_sid = new_sid_name"으로 변경하십시오.
- "-sid xe"to "-sid new_sid_name"을 볼 때마다 변경하십시오.
- pwdxe.ora 대신 pwdnew_sid_name.ora라는 파일을 가리 키도록 "orapwd.exe"명령을 호출하는 행을 업데이트하십시오.
- spfilexe.ora를 initxe.ora로 Enitxe.ora로 반영하는 줄을 spfilenew_sid_name.ora로 initnew_sid_name.ora로 업데이트하십시오 (이 부분은 3 단계를 쓸모 없게 만들 수 있지만 어쨌든 만일을 대비하여 선호합니다 ...)
스크립트 실행 ... 시스템 비밀번호를 몇 번 촉구합니다.
1에 대한 값을 입력하십시오.
또는
2에 대한 값을 입력하십시오.
그게 다야, new_sid_name이있는 새로운 데이터베이스가 시작되고 실행 중입니다 !!