[댓 글]ORACLE 에서 SID 와 SERVICENAME 의 차이 점

ORACLE 중 SID 와 SERVICENAME 의 차이 점
https://blog.csdn.net/zhangzl1012/article/details/50752572

 
       먼저 작은 이 야 기 를 하 자 면 2015 년 6 월 에 한 고객 이 데이터 베 이 스 를 옮 겼 고 하나의 인 스 턴 스 데이터 베이스 에서 RAC 로 바 뀌 었 다.JAVA 애플 리 케 이 션 은 데이터 베 이 스 를 연결 할 수 없 는 상황 이지 만 PL/SQL 은 데이터 베 이 스 를 연결 할 수 있다.프로젝트 가 방대 해 한밤중 에 전 환 됐 지만 장시간 의 업무 중단 도 받 아들 일 수 없다.당시 에 나 는 ORACLE 기술 에 대해 서도 조금 알 고 있 었 다.회사 의 연구 개발 에 문의 한 후에 그들 은 나 에 게 PL/SQL 의 연결 매개 변 수 를 참고 하여 spring 에서 jdbc 로 연 결 된 url 을 jdbc:Oacle:thin:@10.2.0.2:1521:orcl 을 jdbc:Oacle:thin:@(DESCRIPTION=(ADDRESSLIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 10.2.0.2)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME=orcl))),결국 문제 가 해결 되 었 습 니 다.그때 저 는 회사 의 연구 개발 에 감 복 했 습 니 다.지금 보 니 이것 은 최선 의 해결 방안 이 아 닙 니 다.다음은 SID 와 SERVICE 를 설명 하 겠 습 니 다.NAME 의 차이 점,더 좋 은 해결책 을 제시 하 겠 습 니 다.
        SID 와 SERVICE 를 설명 하고 있 습 니 다.NAME 에 앞서 실례 를 말씀 드 리 겠 습 니 다.인 스 턴 스 는 운영 체제 에서 데이터 베 이 스 를 방문 하 는 데 필요 한 일련의 프로 세 스 와 메모리 의 집합 이다.데이터 파일 이 없어 도 인 스 턴 스 를 시작 할 수 있 습 니 다.그러나 데이터 베 이 스 를 방문 하려 면 데이터베이스 파일 을 인 스 턴 스 에 불 러 와 야 합 니 다.인 스 턴 스 와 데이터 뱅 크 의 차 이 는 간단하게 요약 할 수 있 습 니 다.인 스 턴 스 는 임시 적 이 고 관련 프로 세 스 와 메모리 집합 이 존재 할 때 만 존재 하 며 데이터 베 이 스 는 영구적 이 며 파일 이 존재 하기 만 하면 존재 합 니 다.하나의 인 스 턴 스 는 하나의 데이터베이스 에 만 대응 할 수 있 지만 하나의 데이터 베 이 스 는 여러 개의 인 스 턴 스 로 대응 할 수 있다(예 를 들 어 RAC).RAC 는 여러 개의 인 스 턴 스 가 동시에 데이터베이스 파일 을 여 는 시스템 으로 구조 적 으로 여러 대의 기계 이 고 모든 기계 가 하나의 인 스 턴 스 를 실행 하 며 모든 인 스 턴 스 가 같은 데이터 베 이 스 를 엽 니 다.(이것 은 디스크 공유 기술 로 이 루어 진 것 입 니 다)이러한 인 스 턴 스 간 에 동기 화 된 고속 저장 이 필요 합 니 다.이렇게 하면 여러 개의 인 스 턴 스 가 완전히 일치 하고 서로 충돌 하거나 덮어 쓰 지 않도록 해 야 합 니 다.
       SID 즉 INSTANCENAME 는 유일 하 게 실례 를 표시 하 는 데 쓰 인 다.SERVICE_NAME 는 Oacle8i 가 새로 도입 한 것 으로 8i 이전에 하나의 데이터 베 이 스 는 하나의 인 스 턴 스 로 만 대응 할 수 있 었 으 나 고성능 의 수요 에 따라 병행 기술 의 사용 에 따라 하나의 데이터 베 이 스 는 여러 개의 인 스 턴 스 로 대응 할 수 있 고 전형 적 인 응용 은 RAC 와 같다.모든 인 스 턴 스 를 충분히 이용 하고 클 라 이언 트 연결 설정 을 간단하게 하기 위해 ORACLE 는 SERVICE 를 제 시 했 습 니 다.NAME 의 개념.이 매개 변 수 는 인 스 턴 스 가 아 닌 데이터베이스 에 직접 대응 합 니 다.
      SID 와 SERVICE 에 대해 알 게 되 었 습 니 다.NAME 이후,나 는 갑자기 앞의 이야기 에서 사용 한 해결 방안 이 결코 최선 의 해결 방안 이 아니 라 는 것 을 느 꼈 다.왜냐하면 SERVICENAME 의 등장 은 동시 다발 기술 에 대응 해 클 라 이언 트 연결 설정 을 간소화 하기 위 한 것 이다.SERVICE 통과 하기NAME 는 더 좋 은 해결책 을 찾 을 수 있 을 것 이다.JDBC 검색 을 통 해 JDBC 가 ORACLE 에 연결 하 는 방법 은 세 가지 입 니 다.
형식 1:jdbc:oracle:thin:@/:/형식 2:jdbc:oracle:thin:@:형식 3:jdbc:oracle:thin:@
       이야기 에서 RAC 를 사용 하기 전에 JDBC 는 형식 2 로 연결 되 었 고 RAC 를 사용 한 후에 인 스 턴 스 가 증가 했다.SID 는 유일 하지 않 고 형식 2 는 모든 자원 을 완전히 이용 할 수 없다.연구개 발 은 PL/SQL 의 연결 방법 을 참고 하여 공교롭게도 형식 3 을 사용 하 였 다.자바 응용 서버 와 데이터베이스 서버 가 분리 되 어 있 기 때문에 응용 서버 에 Oacle 서버 와 클 라 이언 트 가 없습니다.솔 루 션 에는 TNSName 을 사용 하지 않 았 지만 TNSName 의 연결 설명 을 사용 해 효과 가 같 았 다.JDBC 에 세 가지 연결 방안 이 있 으 니 첫 번 째 방안 을 다시 살 펴 보 자.게다가 앞의 설명 내용 을 더 하면 이야기 속 의 문 제 를 어떻게 수정 해 야 하 는 지 모두 가 알 고 있 을 것 이 라 고 생각 합 니 다.jdbc:Oacle:thin:@/10.2.0.2:1521/orcl 로 바 꾸 면 되 고 이런 형식 도 하나의 인 스 턴 스 데이터 베 이 스 를 지원 합 니 다.이것 도 ORACLE 이 8i 이후 에 SERVICE 를 증가 시 킨 것 이다.NAME 의 초심.
       이 이 야 기 를 통 해 우 리 는 오 라 클 의 지식 을 충분히 알 아야 오 라 클 기술 을 더 잘 사용 할 수 있다 는 것 을 알 수 있다.------저작권 성명:본 고 는 CSDN 블 로 거'장 진 레이'의 오리지널 글 로 CC 4.0 BY-SA 저작권 협의 에 따라 원문 출처 링크 와 본 성명 을 첨부 하 시기 바 랍 니 다.원본 링크:https://blog.csdn.net/zhangzl1012/article/details/50752572

좋은 웹페이지 즐겨찾기