DBDBDEEP
Oracle 네트워크 환경구성 , Oracle net 서비스 본문
Oracle net
- oracle net은 네트워크 구성 시 반드시 필요한 softWare 이다. Oracle DB를 설치할 때, Oracle net이 설치되어 있다.
- oracle net 서비스는 클라이언트 또는 Middle - tier 응용 프로그램에서 Oracle 서버로의 네트워크 연결을 활성화한다.
- 네트워크 세션이 설정되면, Oracle Net 은 클라이언트 응용 프로그램과 데이터베이스 서버 모두에 대해 데이터 전달 수단 으로 사용된다.
Oracle net 리스너
- Client 의 Connection 요청을 듣는 프로세스이다. ( DB shutdown 시에도 존재하게 된다)
- 디비가 만들어내는 서버쪽에 항상 존재하야 한다.
- 독립적으로 시작하고 독립적으로 종료되는 프로세스이며, 1DB 형이 아니다.
ㄴ-> 로컬이 아닌 모든 유저 연결을 위한 오라클 Instance의 게이트 웨이이다.
- Connect 할 DB 정보를 알고 있어야 한다.
Oracle Net에서 클라이언트 또는 Middle-tier 연결을 설정하기 위해서
Listener 가 필요한 정보
1. name 정보
2. protocol 정보
3. hostname 정보
4. port 정보
5. DB 정보 - $ORACLE_HOME(오라클 홈 디렉토리) / SID / service name
Client 가 필요한 정보
1. hostname 정보
2. port 정보
3. protocol 정보
4. SID or service name 정보
ㄴ-> service_names에 아무것도 지정하지 않으면 db_name + domain = orcl.us.oracle.com 이 지정된다.
리스너 정보와 클라이언트의 정보가 일치하면 DB Connection이 진행되게 된다.
오라클 데이터베이스 연결 설정
1개의 DB일 때
두개의 DB 인 경우 ( orcl DB , prod DB)
리스너는 여러개를 띄울 수 있음.
Client 와 Listener의 정보가 일치한다면 User와 Server Process간 연결을 시킨다.
세션은 서버프로세스가 유저 인증을 확인하여 적합한 경우 생성 시키는데, 세션이 생성되어있다면 리스너는 연결을 처리하지 않고 모든 작업을 서버 프로세스로 전달하게 된다.
연결요청 -> service name 분석 -> 연결 설정 -> 세션 설정
여러개의 db가 서버에 존재하게 될 경우, DB는 초기화 파라미터 (tnsnames.ora) 파일에 있는 SERVICE_NAMES 파라미터에 의해 지정된 서비스 이름을 식별할 수 있게 된다.
ㄴ-> ( DB가 여러개일 경우 service name 을 통해 식별할 수 있고
ㄴ-> Listener를 추가로 띄워서 연결시켜 줄 수 있다.
DB server 에 $ORACLE_HOME/network/admin/listener.ora 파일이 준비되어 있어야 함.
이름 지정 방식
1. Easy Connect (간단한 연결) - TCP/ IP 연결 문자열 사용
- 기본적으로 활성화 된다 / 연결 문자열의 일부로서 Oracle Net 연결에 필요한 모든 정보를 제공한다.
- 클라이언트 측 구성이 필요없다.
- TCP / IP 프로토콜만 지원한다. ( @뒤에 로그인 정보를 입력)
- TCP / IP 연결 문자열 : username/password@host[:port][/service name]
SQL > CONNECT hr/hr@db.us.oracle.com : 1521 dbg11g
- 매번 호스트명, 포트, 서비스명을 입력해야 한다
- 이러한 정보를 tnsnames.ora 파일의 alias를 통해 저장하여 alias 로 접속 사용이 가능하다.
ㄴ-> 그것이 바로 로컬이름 지정
2. 로컬이름 지정 ★- 로컬 구성 파일 사용
특징(장점)
● 클라이언트 측 이름 분석 파일 필요, 모든 Oracle Net 프로토콜 지원한다.
● 유저는 로컬 이름 지정을 사용하여 Oracle Net 서비스의 alias를 제공한다.
● Oracle 은 alias를 알려진 서비스의 로컬 리스트와 비교하여 일치하는 것을 발견하면
alias를 호스트, 프로토콜, 포트, 서비스 이름으로 변환한다.
ㄴ-> 데이터베이스 유저가 Easy Conncect의 긴 연결 문자열 대신 alias만 기억하면 된다.
ㄴ-> ex) sqlplus system/oracle@ORCL
$ORACLE_HOME/network/admin/tnsnames.ora 밑에 ex) A 라는 파일을 만듦.
A = Protocol/hostname/port/service name 을 맞춰서 적는다.
ORCL 은 아까의 A와 같은 alias 이다.
이제 sqlplus system/oracle@ORCL 을 하게되면, system/oracle 은 DB와 로컬 이름 지정방식 (DEDICATED) 으로 연결하게 된다.
● 고급 연결 옵션을 제공한다 (connect-time failover, load Balancing, Source louting)
1. connect - time failover (커넥트 타임 페일오버)
- Conncect 될 때 까지 계속 시도하는 옵션이다.
2. Load - Balancing (로드밸런싱)
- 첫 번째 리스너만 계속 연결을 시도하면 과부하가 걸릴 수 있기 때문에 여러 리스너를 랜덤하게 시도하라.
ㄴ-> ( 리스너는 여러개를 띄울 수 있다고 하였다.)
3. source routing
- 미들티어를 통해서 연결하고 싶을 때 사용하게 된다
단점
만약 1521번 포트가 문제가 생겨서 리스너를 1621 번으로 띄웠다고 가정한다.
이렇게 되면 DBA가 500대의 클라이언트에게 tnsnames.ora 파일에 적혀있는 포트번호 1521을 1621로 바꾸라고 모두 전달해야 한다.
3. 로컬이름 지정 방식을 보완한, 디렉토리 이름 지정 (오라클 제품)
- 별도의 서버를 지정한다. 그 안에 A = 1 2 3 4 의 정보를 적어둔다.
모든 Oracle net 프로토콜 지원
고급 연결 옵션 지원
변경 사항이 있을 경우 디렉토리 서버의 내용만 바꿔 주면 된다
Oracle Net 서비스 구성이 자주 변경되는 구성에 적합하다.
ㄴ-> 연결 정보를 한 곳에 모아두어 편하게 관리하려는 목적이다.
로컬이름 지정 안에서 나뉘는 리스너 등록 방법 2가지
1. Static service registration (동적 서비스 등록)
- 작동 여부에 관계없이 리스너에 등록된다
- listener.ora의 SID_LSIT_LISTENER에 직접 서비스를 등록한다.
2. Dynamic service registration : LREG (동적 서비스 등록)
- 등록하면 TCP/IP의 기본 포트인 1521을 사용하여 LREG에 의해 자동으로 수행
- LREG가 TCP/IP 포트 1521을 사용하지 않는 로컬 리스너에 정보를 등록하려면
초기화 매개변수 파일(tnsname.ora)에서 local_listener 매개변수를 구성하여 찾아야 한다.
ㄴ---> local_listener = 어떤 리스너에 서비스를 등록할지
- 리스너는 서비스 등록을 통해 받은 데이터베이스, 인스턴스에 대해 동적 서비스 정보를 사용한다.
- 동적 서비스 등록은 데이터베이스 초기화 파일에서 구성한다
- listener.ora 파일 구성은 할 필요가 없다 (정적과의 차이)
'Oracle ADMIN' 카테고리의 다른 글
Oracle 유저 보안 관리 (계정 종류 및 유저 인증) (0) | 2022.06.30 |
---|---|
Oracle Net 서비스 구성 및 관리 도구 (0) | 2022.06.28 |
Oracle이 정보를 적는 파일들 / Dynamic performance View / 데이터 딕셔너리 (0) | 2022.06.28 |
Oracle 데이터베이스 상태 (0) | 2022.02.08 |
Oracle Database Instance 관리 (0) | 2022.02.08 |