by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

14S_오라클에 접속하기




Dedicated Server

  • 접속하면 새로운 프로세스 생성, 세션의 수명이 다할 때 까지 서버 프로세스 하나가 전용으로 연결됨 (1:1)
    • 서버 프로세스는 인스턴스의 일부분은 아님
    • 클라이언트(SQL*Plus) 프로세스가 네트워크 경유하여 서버 프로세스를 통해 직접 통신
    • 서버 프로세스는 SQL을 접수/실행 처리 (필요시 데이터 파일을 읽고, 결과 데이터를 캐시에 저장)
    • 데모
      [oracle@pdbmon1x ~]$ ps -aef | grep oracle$ORACLE_SID
      oracle   19601 19331  0 11:13 pts/1    00:00:00 grep oracleora11g
      [oracle@pdbmon1x ~]$ sqlplus / as sysdba
      
      SQL*Plus: Release 11.2.0.3.0 Production on Thu Sep 25 11:13:32 2014
      
      Copyright (c) 1982, 2011, Oracle.  All rights reserved.
      
      
      Connected to:
      Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
      With the Partitioning, OLAP, Data Mining and Real Application Testing options
      
      SQL> !ps -aef | grep oracle$ORACLE_SID
      oracle   19603 19602  0 11:13 ?        00:00:00 oracleora11g (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
      oracle   19606 19604  0 11:13 pts/1    00:00:00 grep oracleora11g
      SQL> exit
      Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
      With the Partitioning, OLAP, Data Mining and Real Application Testing options
      [oracle@pdbmon1x ~]$ ps -aef | grep oracle$ORACLE_SID
      oracle   19614 19331  0 11:17 pts/1    00:00:00 grep oracleora11g
      
Shared Server

  • 다수 사용자를 위한 공유 프로세스들의 풀(pool)을 사용하는 단순 접속 풀링 구조 (N:1)
    • 10,000 개 세션을 위해 10,000 개의 전용 서버를 갖는 대신 모든 세션이 공유할 수 있는 작은 비율의 서버를 유지 (dedicated server 구조 보다 훨씬 더 많은 사용자 접속 가능)
  • 일반적으로 shared server 프로세스는 데이터베이스와 함께 기동
  • 작동 순서
    1. 클라이언트(SQL*Plus) 프로세스가 네트워크 경유하여 dispatcher 프로세스와 통신 (요청)
    2. dispatcher 프로세스는 클라이언트 요청을 SGA 내 request queue 에 넣음
    3. busy 하지 않은 shared server 프로세스는 이 요청을 꺼내서 수행하고 response queue 에 넣음
    4. dispatcher 프로세스는 response queue 에서 결과를 확인하고 클라이언트에 전달
  • 개발자 입장에서 shared server 커넥션과 dedicated server 커넥션 사이에 개념적인 차이는 없다
TCP/IP를 이용하여 접속하는 기법
  • 데모
    -- earth : TNS(Transparent Network Substrate) 서비스 이름 / tnsnames.ora
    
    [oracle@pdbmon1x ~]$ sqlplus scott/tiger@earth
    
    SQL*Plus: Release 11.2.0.3.0 Production on Thu Sep 25 11:58:16 2014
    
    Copyright (c) 1982, 2011, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    
    SQL>    
    
    -- TNS 접속 문자열, 호스트 이름, 포트, 서비스 이름등 정의
    [oracle@pdbmon1x ~]$ cat $ORACLE_HOME/network/admin/tnsnames.ora
    # tnsnames.ora Network Configuration File: /sw/oracle/app/oracle/product/11.2.0/network/admin/tnsnames.ora
    # Generated by Oracle configuration tools.
    
    EARTH =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = pdbmon1x)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = EARTH)
        )
      )
    
  • earth 는 TNS 외에도 OID(Oracle Internet Directory)를 이용하여 해석될 수도 있음 (DNS와 같은 분산 LDAP 서버)
  • 서버는 리스너 프로세스가 1521 포트에 들어오는 접속 요청을 처리 (허락/거부)
    • Dedicated Server 프로세스 생성 후 클라이언트 커넥션 상속
    • 사용 가능한 Dispatcher 프로세스에 접속할 수 있는 정보를 클라이언트에 전달 (OR Dispatcher 프로세스에 연결 요청을 넘김) 하고, 클라이언트는 바로 Dispatcher에 직접 접속한다 (TODO)
정리
  • 인스턴스, 데이터베이스 용어 정의
  • dedicated/shared server 커넥션
이미지 참조

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.