Oracle의 서비스 이름을 변경할 수 없습니다


9

Windows 2003 서버에서 Oracle 11.2.0.3 설치의 서비스 이름을 변경하려고합니다.

설치 중에 서비스 이름이 기본 도메인으로 정의되었지만이를 제거하려고합니다.

서비스 이름 mydb.foo.bar을 다음과 같이 변경하기 위해 지금까지 수행 한 작업 및 이전에 수행 한 작업 mydb:

alter system set service_names = 'mydb' scope = both;
alter database rename global_name to mydb;

작동 한 것 같습니다 :

SQL> 쇼 매개 변수 이름

이름 유형 값
------------------------------------ ----------- --- ---------------------------
db_name 문자열 mydb
db_unique_name 문자열 mydb
global_names 부울 FALSE
instance_name 문자열 mydb
service_names 문자열 mydb
SQL>

(위의 출력에서 ​​관련이없는 일부 속성을 제거했습니다)

그런 다음 alter system register리스너에 다시 등록하는 데 사용하십시오.

이것은 아무런 효과가 없으므로 데이터베이스와 리스너를 다시 시작했지만 여전히 운이 없습니다.

현재 상황은 다음과 같습니다.

select name from v$active_services 보고:

SERVICE_ID | 이름 | 네트워크 이름       
----------- + ----------------- + --------------------
1 | SYS $ BACKGROUND |                    
2 | SYS $ USERS |                    
3 | mydb | mydb           
5 | mydbXDB | mydbXDB        
6 | mydb.foo.bar | mydb.foo.bar

어떤 이유로 이전 서비스 이름이 여전히 존재하고 실행 중입니다.

를 사용하여 서비스를 중지하려고 할 때

SQL> exec dbms_service.stop_service ( 'mydb.foo.bar');
PL / SQL 절차가 성공적으로 완료되었습니다.

오류는보고되지 않았지만 서비스를 삭제하려고 할 때 Oracle에서 알려주지 않습니다.

SQL> exec dbms_service.delete_service ( 'mydb.foo.bar');
BEGIN dbms_service.delete_service ( 'mydb.foo.bar'); 종료;

*
1 행의 오류 :
ORA-44305 : service mydb.foo.bar가 실행 중입니다
ORA-06512 : "SYS.DBMS_SYS_ERROR", 86 행
ORA-06512 : "SYS.DBMS_SERVICE", 454 행
ORA-06512 : "SYS.DBMS_SERVICE", 343 행
ORA-06512 : 1 행

해당 서비스를 사용하여 열린 연결이 없음을 확인했습니다.

select count(*)
FROM v$session
where service_name = 'mydb.foo.bar';

반환 됨 0(0)

또한 oradim을 사용하여 Windows 서비스를 다시 만들었지 만 아무 소용이 없습니다.

어느 시점에서 나는 달렸다

alter system set service_names = 'mydb,mydb.foo.bar' scope = both;

그것이 내가 지금 둘 다 가진 이유 일 수 있습니까?

그러나 service_names를 하나의 이름으로 만 변경 한 후 두 번째 이름은 사라졌어 야합니까?

두 번째 서비스를 중단시킬 수 없다면 긴 서비스 이름이 아닌 짧은 서비스 이름을 사용하여 리스너에 인스턴스를 등록하는 것으로 충분합니다.

나는 분명한 것을 놓치고 있다고 확신하지만 그것이 무엇인지 알 수는 없습니다.

답변:


5

나는 분명한 것을 놓치고 있다고 확신하지만 그것이 무엇인지 알 수는 없습니다.

예, 그것은 매우 명백한 것이 었습니다 ...

매개 변수에 DB_DOMAIN여전히 포함 foo.bar되어 있으므로 인스턴스를 사용하여 자체 등록했습니다 mydb.foo.bar.

alter system set db_domain='' scope=spfile; 

데이터베이스를 수신 거부하면 모든 것이 예상대로 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.