Database/ORACLE

[스크랩] Oracle - [ tnsnames.ora / sqlnet.ora / listener.ora ] 기타 사항들

99iberty 2015. 11. 23. 14:09

 

http://playgame.egloos.com/272956

 

[tnsnames.ora]
위치 : 클라이언트 $ORACLE_HOME/network/admin/tnsnames.ora
설명 : 오라클 서버에 대한 접속 정보를 저장해놓은 클라이언트 설정 파일

DB_Alias =
    (DESCRIPTION =
        (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 오라클서버ip)(PORT = 1521)
        )
        (CONNECT_DATA =
            (SID/SERVICE_NAME = DB_name)
        )
    )

DB_Alias 는 말 그대로 DB(인스턴스)의 가명칭이며, 실제 DB명칭(인스턴스명칭)은 connect_data 부분의 SID 또는 SERVICE_NAME 이다. SID 를 사용하느냐, SERVICE_NAME 을 사용하는가는 오라클 버전에 따라 다르며 8i 버전 이상은 SID, 그 이후 버전에서는 둘 다 사용할 수 있다.

SID는 서버에서 환경변수로 설정되어 있다. 서버에서 echo $ORACLE_SID 또는 env 명령으로 확인하면 된다.
tnsnames.ora 가 위와 같이 설정되어 있을 때, 클라이언트에서는 다음과 겉이 오라클 서버에 접속할 수 있다.

prompt> sqlplus id/password@DB_Alias

그러나 위와 같이 접속하는 것은 보안상 취약하므로 sqlplus 로 들어가서 SQL> connect id/pass@DB_Alias 로 접속 ㅎㅎ;


[sqlnet.ora]
위치 : 서버 $ORACLE_HOME/network/admin/sqlnet.ora
설명 : 접속 방식을 저장해 놓은 서버 설정파일

NAMES.DIRECTORY_PATH= (TNSNAMES, onAMES, HOSTNAME)
#SQLNET.AUTHENTICATION_SERVICES=(NONE)

Names.directory_path 에서 "TNSNAMES" 가 맨 앞으로 설정되어 있어야 클라이언트에서 tnsnames.ora 를 이용해서 서버에 접속할 수 있다.
Sqlnet.authentication_service 는 서버에서 오라클 인스턴스에 접속할 때, 서버 계정 권한으로 아이디 패스워드 없이 오라클의 sysdba 로 접근할 수 있도록 해주는 설정이다.
(NONE) 으로 설정되면 이것을 금지하게 된다. 주석처리되어 있을 경우, 서버에서는 다음과 같이 계정/패스워드를 생략한 채 바로 sysdba 권한으로 오라클 DB에 접속할 수 있다.

SQL> connect / as sysdba

이때 접속되는 인스턴스는 env 에 설정되어있는 SID 값에 따르며 설정된 SID가 아닌 인스턴스로 접속할때는 DB계정이 필요하다.


[listener.ora]

위치 : 서버 $ORACLE_HOME/network/admin/listener.ora
설명 : 서버의 리스너 설정파일

#ADMIN_RESTRICTIONS_listener=ON
#PASSWORDS_LISTENER = C8C9FAC8EEC42AFD

LISTENER1 =
    (DESCRIPTION_LIST =
        (DESCRIPTION =
            (ADDRESS_LIST =
                (ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1521))
            )
            (ADDRESS_LIST =
                (ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1522))
            )
        )
    )

SID_LIST_LISTENER1 =
    (SID_LIST =
        (SID_DESC =
            (ORACLE_HOME = /oracle/product/9.2.0.6)
            (SID_NAME = SID_name)
        )
    )

description_list 의 description 에서 address_list 는 여러개의 리스닝 포트가 올 수 있다. (예를들면 인터페이스 별로 각각의 리스닝 포트 지정)
보안을 위해서 listener_password 와 admin_restriction 를 설정해야 한다.


[기타]

현재 접속된 인스턴스 확인
SQL> select instance_name, host_name, status from v$instance; (또는 select * from gv$instance;)

패치 확인
$ORACLE_HOME/OPatch/opatch lsinventory