2014-02-14 6 views
0

db 서버에서 두 개의 SID/서비스 이름이 동일한 포트 번호를 사용할 수 있습니까?데이터베이스 구성 - 동일한 포트에 두 개의 서비스 이름이 있습니다.

DB 관리에 대한 지식이 많지 않으므로 제 질문에 대한 답변을 알려 주실 수 있습니까?

+0

OEM/Apex 또는 일반 연결 (SQL * Plus, JDBC 등)의 경우? –

+0

이것은 일반적인 연결을위한 것입니다 oracle에있는 SQL * Plus – user3123752

+0

그러면 내 대답은 관련이 있습니다 * 8-) –

답변

1

리소스 사용을 최적화하기 위해 that you should only have a single database instance on a server이라는 생각이 들지 만 그 안에서 실행되는 많은 스키마와 응용 프로그램이있을 수 있습니다.

인스턴스에는 단일 SID가 있지만 둘 이상의 서비스 이름이있을 수 있습니다. 따라서 단일 데이터베이스를 사용하면 하나의 SID와 여러 서비스 이름을 가질 수 있습니다. 여러 데이터베이스의 경우 여러 SID 서비스 이름을 갖습니다. 하나의 상자에 여러 인스턴스가 공동으로 호스팅되어 실행 중이거나 실행 계획을 갖고 있다고 가정하고, 그 인스턴스를 별도의 토론으로 남겨 두겠습니다.

Apex 등이 아닌 정상적인 연결을 말하는 경우 데이터베이스는 포트 번호를 직접 사용하지 않습니다. 리스너는 포트에 바인드하여 연결을 청취하고 기본 프로토콜을 사용하여 연결을 데이터베이스에 전달합니다. 이 내용은 상위 수준 인 in the concepts guide에서 설명합니다.

각각 자체 포트에 여러 개의 수신기가있을 수 있습니다. 각 데이터베이스에 대해 전용 청취자를 갖거나 단일 데이터베이스 내의 개별 응용 프로그램 또는 스키마에 대해 특정 상황에서 전용 청취자를 원할 수 있습니다. 하지만 일반적으로 기본 포트 1521에 단일 수신기가 있습니다.

청취자를 구성하는 방법은 여러 가지가 있지만 간단한 시나리오에서 다시 listener.ora은 수신자 자체에 대한 정보 포트, 로깅 세부 정보 등 - 그리고 지원하는 데이터베이스, SID 또는 서비스 이름에 대한 정보는 없습니다. 청취자가 시작하면 lsnrctl services은 거의 표시되지 않습니다.

데이터베이스는 시작할 때 청취자와 함께 등록되고 청취자를 찾을 수없는 경우 정기적으로 다시 시도합니다. alter system register 명령을 발행하여이를 권장 할 수 있습니다. 데이터베이스가 등록되면 lsnrctl services은 SID와 서비스 이름을 표시합니다. 두 개의 데이터베이스가 있다면 그들은 모두 동일한 청취자와 함께 행복하게 등록 할 것이고 lsnrctl services은 둘 다 보여줄 것입니다.

연결이되면 SID 또는 서비스 이름이 그 일부로 지정됩니다 (예 : @//hostname:port/service_name. 리스너는이 인스턴스를 사용하여 연결을 해제 할 인스턴스를 결정합니다. 제공된 SID 또는 서비스 이름으로 (아직) 데이터베이스가 등록되지 않은 경우, 클라이언트는 ORA-12505 또는 ORA-12514 오류 TNS:listener does not currently know of...을 수신합니다.

물론 후드 아래에서 더 자세히 살펴볼 내용이 있습니다. 여러 서비스 이름을 정의 할 수 있으며 비표준 포트에 리스너를 가질 수 있으며 여러 리스너가있는 경우 등록 할 각 데이터베이스를 알릴 수 있습니다. 세부 수준에 관심이있는 경우 문서를 참조하십시오.

관련 문제