답변:
간단히 말해 : SID = DB의 고유 이름, ServiceName = 연결시 사용되는 별칭
엄격하게 사실이 아닙니다. SID = INSTANCE의 고유 이름 (예 : 머신에서 실행중인 Oracle 프로세스). Oracle은 "데이터베이스"를 파일로 간주합니다.
서비스 이름 = INSTANCE (또는 여러 인스턴스)의 별칭. 이것의 주된 목적은 클러스터를 실행하는 경우 클라이언트가 "Sales me to a salesS.acme.com"이라고 말하고 DBA가 SALES.acme.com 요청에 사용 가능한 인스턴스 수를 즉시 변경할 수 있다는 것입니다. 또는 클라이언트가 설정을 변경할 필요없이 SALES.acme.com을 완전히 다른 데이터베이스로 옮기십시오.
다음을 참조하십시오 : http://www.sap-img.com/oracle-database/finding-oracle-sid-of-a-database.htm
Oracle SID와 Oracle SERVICE NAME의 차이점은 무엇입니까? 하나의 구성 도구는 SERVICE NAME을 찾은 다음 다른 하나는 SID를 찾습니다! 무슨 일이야?!
Oracle SID는 인스턴스 / 데이터베이스를 고유하게 식별하는 고유 이름입니다. 여기서 서비스 이름은 데이터베이스에 원격으로 연결할 때 제공하는 TNS 별명이며이 서비스 이름은 클라이언트의 Tnsnames.ora 파일에 기록됩니다. SID와 동일하며 원하는 다른 이름을 지정할 수도 있습니다.
SERVICE_NAME은 oracle 8i부터 데이터베이스가 리스너에 등록 할 수있는 새로운 기능입니다. 데이터베이스가 이런 방식으로 리스너에 등록 된 경우 tnsnames.ora에서 SERVICE_NAME 매개 변수를 사용할 수 있습니다. 그렇지 않으면 tnsnames.ora에서 SID를 사용하십시오.
또한 OPS (RAC)가있는 경우 각 인스턴스마다 다른 SERVICE_NAME이 있습니다.
SERVICE_NAMES는이 인스턴스가 연결되는 데이터베이스 서비스의 이름을 하나 이상 지정합니다. 동일한 데이터베이스의 다른 용도를 구별하기 위해 여러 서비스 이름을 지정할 수 있습니다. 예를 들면 다음과 같습니다.
SERVICE_NAMES = sales.acme.com, widgetsales.acme.com
또한 서비스 이름을 사용하여 복제를 통해 서로 다른 두 데이터베이스에서 사용 가능한 단일 서비스를 식별 할 수 있습니다.
Oracle Parallel Server 환경에서는 모든 인스턴스에 대해이 매개 변수를 설정해야합니다.
간단히 말해 : SID = DB 인스턴스의 고유 이름, ServiceName = 연결시 사용되는 별칭
나는 이것이 까다로운 도구, 용도, 사용자 또는 증상을 다룰 때 고대라는 것을 알고 있습니다 : sid & service naming one은 다음과 같이 tnsnames 항목에 약간의 유연성을 추가 할 수 있습니다.
mySID, mySID.whereever.com =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = myHostname)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = mySID.whereever.com)
(SID = mySID)
(SERVER = DEDICATED)
)
)
나는 이것이 질문과 약간 관련이 있기 때문에 여기에 남겨 두겠다고 생각했으며 오라클 네트워킹의 분명하지 않은 특이성을 주위에 직조하려고 할 때 도움이 될 수 있습니다.
SID와 서비스 이름은 무엇입니까
https://docs.oracle.com/cd/B19306_01/network.102/b14212/concepts.htm 에서 오라클의 설명서를 참조하십시오
나중에 위의 링크에 액세스 할 수없는 경우이 답변을 작성할 때 위의 링크는 "Database Net Services 관리자 가이드"의 연결 개념 장에있는 "데이터베이스 서비스 및 데이터베이스 인스턴스 식별"주제로 연결됩니다. . 이 안내서는 "Oracle Database Online Documentation, 10g Release 2 (10.2)"의 일부로 oracle에서 발행했습니다.
서로 사용해야 할 때? 왜 두 개가 필요합니까?
RAC 환경에서 아래 매핑을 고려하십시오.
SID SERVICE_NAME
bob1 bob
bob2 bob
bob3 bob
bob4 bob
로드 밸런싱이 구성된 경우 리스너는 4 개의 SID 모두에서 워크로드를 '밸런싱'합니다. 로드 밸런싱이 구성되어 있어도 원하는 경우 SERVICE_NAME 대신 SID를 사용하여 bob1에 항상 연결할 수 있습니다.
Oracle 용어집에 따라 :
SID는 Oracle 데이터베이스 인스턴스의 고유 이름입니다. ---> Oracle 데이터베이스간에 전환하려면 사용자가 원하는 SID <---를 지정해야합니다. SID는 TNSNAMES.ORA 파일의 연결 설명 자의 CONNECT DATA 부분과 LISTENER.ORA 파일의 네트워크 리스너 정의에 포함되어 있습니다. 시스템 ID라고도합니다. Oracle 서비스 이름은 "MyOracleServiceORCL"과 같은 설명이 될 수 있습니다. Windows에서는 Windows 서비스에서 서비스 이름을 서비스로 실행할 수 있습니다.
더 나은 접근 방법으로 TNSNAMES.ORA에서 SID를 사용해야합니다.