행위

Oracle sqlnet.ora

DB CAFE

thumb_up 추천메뉴 바로가기


1 sqlnet.ora[편집]

  1. 클라이언트가 오라클 서버로 어떻게 접속할 것인가를 설정하는 파일
  2. - 파일 위치 : %ORACLE_HOME%\network\admin
  3. - sqlnet.ora 파일 내의
# sqlnet.ora Network Configuration File: /app/oracle/product/SE/11.2.0.4/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

# ADR_BASE = /app/oracle


1.1 NAMES.DIRECTORY_PATH 파라미터[편집]

  1. 오라클 클라이언트가 데이터베이스 접속 시 별칭(String name alias)의 확인하는 순서를 지정 합니다.
  2. TNSNAMES(로컬네임서버), ONAMES(오라클네임서버), HOSTNAME(호트스네임서버) ->TNSNAMES(로컬네임서버) : tnsnames.ora 파일의 정보를 이용
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

예를 들어 다음과 같이 입력할때

sqlplus scott/tiger@DB_ABC
  1. SQL*Plus 유틸리티는 sqlnet.ora 파일의 NAMES.DIRECTORY_PATH 항목을 이용하여 DB_ABC Alias에 대한 해석을 하게 됩니다.
  2. 먼저 클라이언트는 tnsnames.ora 파일을 사용하여 오라클의 이름(Alias)에 해당 하는 데이터베이스가 어디에 있는 건지 확인합니다.
  3. 만약 tnsnames.ora 파일에 이름이 없다면, 클라이언트는 오라클 이름 서버(Oracle Names server) 를 사용하여 Alias를 해석 할려고 하며
    현재 오라클 이름 서버 대신에 LDAP(Lightweight Directory Access Protocol)의 사용을 권장한다.
  4. 마지막으로 클라이언트는 DNS나 네트워크 정보 서비스(NIS)와 같은 호스트 이름 풀이 방법을 통해이름 해석을 시도 합니다.

1.2 SQLNET.AUTHENTICATION_SERVICES 파라미터[편집]

  1. 클라이언트가 오라클 서버로 접속할 때, 오라클이 어떠한 인증 서비스를 사용할 것인가? 를 결정
  2. NTS: 윈도우인증, NONE:일반
    Ex) SQLNET.AUTHENTICATION_SERVICES= (NTS)
  3. 오라클 계정 접속과 윈도우 인증 방식 모두 지원하려면,
    서버의 sqlnet.ora 파일내의 SQLNET.AUTHENTICATION_SERVICES 파라미터 수정 해야 함.
SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)
  • 만약 인증모드를 NONE으로 설정하면 sys 계정으로 로그인 시 반드시 암호를 입력해야 합니다.
    • 즉 sqlplus /nolog -> SQL> connect / as sysdba; 라고 접속이 불가능합니다.

1.3 AUTOMATIC_IPC[편집]

AUTOMATIC_IPC = { ON | OFF }
  1. AUTOMATIC_IPC = ON 으로 되어 있는경우 SQL*Net이 같은 alias정보를 가진 local database가 있는지 check 함 . 만일 local database가 있다면 connection은 network layer를 건너뛰고 local -Inter Process Communication(IPC)- connection을 맺게 됩니다.
  2. 따라서 이 setting은 database server쪽에 사용할 수 있는 것이지 client machine SQL*Net에는 아무 쓸모 없습니다.
  3. database server쪽에 사용하더라도 local database에 SQL*Net connection이 반드시 필요한 경우가 아니라면 사용하시 않는 것(OFF로 설정) 이 좋습니다.

1.4 TRACE_LEVEL_CLIENT[편집]

1.4.1 client쪽에 trace 설정 방법[편집]

  1. client쪽 sqlnet.ora file 에 setting
TRACE_LEVEL_CLIENT = OFF

TRACE_LEVEL_CLIENT = 0 TRACE_DIRECTORY_CLIENT = $ORACLE_HOME/network/trace (UNIX) TRACE_FILE_CLIENT = client

  • sqlplus로 접속해 에러가 나면 $ORACLE_HOME/network/trace 에 client.trc 파일 생성됨.

1.4.2 server쪽에 trace 설정 방법[편집]

server쪽 sqlnet.ora file에 다음을 setting하고 listener를 다시 시작 합니다.

1.4.2.1 UNIX일 경우[편집]

TRACE_LEVEL_SERVER = 0 TRACE_DIRECTORY_SERVER = $ORACLE_HOME/network/trace TRACE_FILE_SERVER = SERVER

1.4.2.2 윈도우일 경우[편집]

TRACE_LEVEL_SERVER = 0 TRACE_DIRECTORY_SERVER = C:\app\Administrator\product\11.1.0\db_1\NETWORK\ADMIN TRACE_FILE_SERVER = SERVER

  • sqlplus로 접속해 보면 에러가 나면서 $ORACLE_HOME/network/trace 에 client.trc 파일이 생김

1.5 NAMES.DEFAULT_DOMAIN = WORLD[편집]

1.6 NAME.DEFAULT_ZONE = WORLD[편집]

1.7 SQLNET.EXPIRE_TIME = 0[편집]

1.8 TCP.NODELAY=YES[편집]

이 parameter "network\admin" directory에 있는"PROTOCOL.ORA"라는 파일에 추가한다. 대부분의 경우 TCP/IP 정보는 network을 통하여 최소한 하나의 완전한 packet이 구성될 때가지 버퍼링이 된 후 보낸다. 즉, 이 의미는 어떤 경우의 명령어들은 직접 발행이 되지 않고 TCP/IP 정보를 보낼 수 있을 때까지 버퍼링이 유지된다. 이는 잠재적으로 timeouts 또는 에러를 유발할 수 있다. 이러한 에러를 피할 수 있도록 TCP.NODELAY를 이용하여 OFF를 시키면 된다. tcp.nodelay = yes