목차

, , , , ,

SQL*Plus configuration

SQL*Plus의 Oracle Net connection file, environment variable와 startup profile을 구성하는 방법이다.

Summary

File Locations

File Purpose Typical location
tnsnames.ora net service name과 connect descriptor mapping $ORACLE_HOME/network/admin 또는 $TNS_ADMIN
sqlnet.ora Oracle Net client naming, authentication, encryption 등 $ORACLE_HOME/network/admin 또는 $TNS_ADMIN
glogin.sql site-wide SQL*Plus profile $ORACLE_HOME/sqlplus/admin/glogin.sql
login.sql user 또는 project SQL*Plus profile current directory 또는 SQLPATH search path

Instant Client에서는 installation directory 아래 network/admin을 사용하거나 별도 directory를 만들고 TNS_ADMIN을 지정할 수 있다. 정확한 default path는 platform과 installation method에 따라 다르다.

Oracle Net Service Names

tnsnames.ora

APPDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = db.example.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = appsvc.example.com)
    )
  )
export TNS_ADMIN=/etc/oracle/network/admin
sqlplus app_user@APPDB
tnsnames.ora에는 password를 저장하지 않는다. file permission으로 변경 주체를 제한하고 hostname, service name과 TLS 관련 설정 변경을 review한다.

Easy Connect

단순한 TCP connection에는 tnsnames.ora 없이 Easy Connect string을 사용할 수 있다.

sqlplus app_user@"db.example.com:1521/appsvc.example.com"

Easy Connect와 tnsnames.ora 모두에서 password를 생략하면 SQL*Plus가 안전한 password prompt를 표시한다.

Environment Variables

export TNS_ADMIN=/etc/oracle/network/admin
export TWO_TASK=APPDB
sqlplus app_user

SQL*Plus Profiles

login.sql

interactive readability에 필요한 formatting만 두고 application script가 profile default에 의존하지 않게 한다.

SET PAGESIZE 100
SET LINESIZE 200
SET TAB OFF
SET TRIMSPOOL ON
SET SQLPROMPT '_USER@_CONNECT_IDENTIFIER> '
profile에 password, wallet secret, production connection string, DROP, ALTER SYSTEM, HOST 같은 privileged 또는 destructive action을 넣지 않는다. repository에서 받은 login.sql도 자동 실행 전에 검토한다.

Automatic Profile Execution

최신 SQL*Plus의 ORA_PLUS_AUTOEXEC는 implicit profile 실행을 제어한다.

export ORA_PLUS_AUTOEXEC=RESTRICT
sqlplus app_user@APPDB

명시적으로 START, @, @@로 실행한 script까지 이 변수가 제한하는 것은 아니다.

Precedence and Validation

  1. TNS_ADMIN을 설정했다면 해당 directory의 Oracle Net file을 먼저 확인한다.
  2. SQL*Plus start 또는 CONNECT 성공 뒤 glogin.sql이 먼저, login.sql이 다음으로 처리된다.
  3. login.sql의 설정이 같은 SQL*Plus variable에 대한 site default를 override할 수 있다.
  4. batch script 안에서 다시 지정한 SET 값은 이후 실행에 적용된다.
# password는 prompt에서 입력
sqlplus -L app_user@APPDB
SQL> SHOW USER
SQL> SHOW ALL
SQL> SELECT SYS_CONTEXT('USERENV', 'SERVICE_NAME') FROM dual;

Troubleshooting

See Also

History