[CentOS] CentOS 오라클 서버 리스너 설정
pro*c를 사용하시는 것 같지 않은데요. 맞지요? 혹시 visual studio
를 통해서 pro*c를 사용하시면 모르겠지만 일반적으로는 toad를
사용하고 DB연습을 하신다면 pro*c설정은 필요없을 것 같네요.
sid_list 부분에는 SID를 지정하지 않으셨네요. 지금 설정된 것은
SID이름이 아니라 PRO*C를 위한 설정인 것 같구요.
그렇다면 dynamic service registration으로 DB에 접속하게
되겠습니다.
1521번 포트이니 LOCAL_LISTENER를 DB 파라미터에 지정하지 않으셨을 것이고
이것을 기동시켜 접속하기 위해서는 리스너를 먼저 기동시키고 DB를
기동해야 pmon프로세스가 리스너를 찾아내고 DB접속이
이루어지겠습니다.(기억이 가물..PMON이 맞을텐데..)
dynamic service registration은 listener를 기동하고
나서는 어느 서비스에 접속이 되었다라는 메세지가 없습니다.
lsnrctl service 명령을 하시면 어떤 DB에 대한 접속을 한다고
안하겠습니다. 그런데 DB를 재기동하게 되면 그 때가 되어서야
DB가 올라가면서 pmon프로세스가 1521번 포트의 리스너를 발견하고
"나 여기있어요~" 하면서 리스너에게 알려주겠지요.
이제 lsnrctl service 명령을 하면 어느 DB에 접속했다고 나옵니다.
이것이 dynamic service registration 입니다.
1521번 포트를 사용했을 때만 그렇고 만약 다른 포트로 접속하기
위해서는 DB파라미터에 local_listener=local 이라고 하고
서버의 tnsnames.ora 파일에 local 이라는 alias로
local=
(address_list=
(address=(protocol=tcp)(host=192.168.10.130)(port=1531)))
을 지정해야 합니다.
그렇다면 dynamic 이 아닌 static service registration으로 지정해주는 것이
편하고 좋겠습니다.(대부분 그렇게 사용)
아래 listener부분에서 HOST부분을 ip로 명시적으로 주시는 것이
좋을 것 같습니다.
만약 공유기로 되어 있다면 static IP를 통해서 설정해주시는 것이
좋겠습니다.(저도 그렇게 사용합니다)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.130)(PORT = 1521))
)
)
아래와 같이 SID_NAME 부분에 SID명을 주세요. 저는 DB이름이
PROD이므로 PROD라고 하겠습니다.
보통은 DB이름과 같이 사용합니다. 그리고 program 부분도 pro*c를
사용하지 않는 것 같으니 제거하시구요. 그리고 ORACLE_HOME부분에
경로가 정확해야 합니다.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
(SID_NAME =PROD)
)
)
그렇다면 TOAD로 접속하시는 tnsnames.ora 파일이 정확하게
설정해야 할텐데.. 만약 위에서 1521번 포트에 SID_NAME이
PROD 로 되어 있고 sqlplus system/manager@KKK
로 접속을 KKK 라는 alias로 접속을 하신다면
KKK=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.130)(PORT=1521)
)
)
(CONNECT_DATA=
(SID=PROD)
)
)
그리고 혹시 sqlnet.ora 파일에 domain이 있으면 domain을
kkk.도메인= 으로 지정해주어야 합니다.
예를들어 sqlnet.ora 파일에
names.default_domain=min1004
라면
kkk.min1004= 이라고 tnsnames.ora 파일의 tns alias에
설정해야 합니다.
그리고 헤깔리실 것 같은데 listener.ora 파일에 리스너에서는
SID_NAME 을 사용하고, tnsnames.ora 파일에는 SID 또는
SERVICE_NAME을 사용합니다. SID_NAME 인지 SID인지가 헤깔리니
조심하셔요~
listener.ora 파일
# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.130)(PORT = 1531))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
)
)
tnsnames.ora 파일
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.130)(PORT = 1531))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)