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를 하나의 이름으로 만 변경 한 후 두 번째 이름은 사라졌어 야합니까?
두 번째 서비스를 중단시킬 수 없다면 긴 서비스 이름이 아닌 짧은 서비스 이름을 사용하여 리스너에 인스턴스를 등록하는 것으로 충분합니다.
나는 분명한 것을 놓치고 있다고 확신하지만 그것이 무엇인지 알 수는 없습니다.