내맘대로긍정이 알려주는
Oracle 23ai 신기능
무료 세미나 발표자료
OS환경 : Oracle Linux 7.6 (64bit)
DB 환경 : Oracle Database 19.11.0.0
에러 : WARNING: inbound connection timed out (ORA-3136)
alert log에 발생하는 에러 메세지
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
$ tail -f /app/oracle/diag/rdbms/orcl19/ORCL19/trace/alert_ORCL19.log
2021-11-24T00:08:08.231249+09:00 ***********************************************************************
Fatal NI connect error 12170.
VERSION INFORMATION:
TNS for Linux: Version 19.0.0.0.0 - Production
Oracle Bequeath NT Protocol Adapter for Linux: Version 19.0.0.0.0 - Production
TCP/IP NT Protocol Adapter for Linux: Version 19.0.0.0.0 - Production
Version 19.11.0.0.0
Time: 24-NOV-2021 00:08:08
Tracing not turned on.
Tns error struct:
ns main err code: 12535
TNS-12535: TNS:operation timed out
ns secondary err code: 12606
nt main err code: 0
nt secondary err code: 0
nt OS err code: 0
Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=10.10.10.60)(PORT=58524))
2021-11-24T00:08:08.234797+09:00
WARNING: inbound connection timed out (ORA-3136)
|
해결 방법 : 비정상접근 세션 차단, sqlnet.ora 파라미터 설정
테스트를위해 sqlnet.ora 파일과 listener.ora파일에 아래와 같이 파라미터 등록
listener.ora 파일
1
2
3
4
5
6
7
8
9
10
11
|
$ cd $ORACLE_HOME/network/admin
$ vi listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ORACLE19)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
INBOUND_CONNECT_TIMEOUT_LISTENER=60
|
sqlnet.ora 파일
1
2
3
|
$ cd $ORACLE_HOME/network/admin
$ vi sqlnet.ora
SQLNET.INBOUND_CONNECT_TIMEOUT=60
|
tnsnames.ora 파일에서 접속정보 확인
1
2
3
4
5
6
7
8
9
10
|
$ cd $ORACLE_HOME/network/admin
$ cat tnsnames.ora
ORCL19 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ORACLE19)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL19)
)
)
|
sqlplus /@tnsname 입력후 60초 대기
1
2
3
4
5
6
7
8
9
10
11
12
|
$ sqlplus /@orcl19
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Nov 24 00:16:04 2021
Version 19.11.0.0.0
Copyright (c) 1982, 2020, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
Enter user-name:
|
alert log tail로 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
$ tail -f /app/oracle/diag/rdbms/orcl19/ORCL19/trace/alert_ORCL19.log
2021-11-24T00:17:04.155634+09:00
***********************************************************************
Fatal NI connect error 12170.
VERSION INFORMATION:
TNS for Linux: Version 19.0.0.0.0 - Production
Oracle Bequeath NT Protocol Adapter for Linux: Version 19.0.0.0.0 - Production
TCP/IP NT Protocol Adapter for Linux: Version 19.0.0.0.0 - Production
Version 19.11.0.0.0
Time: 24-NOV-2021 00:17:04
Tracing not turned on.
Tns error struct:
ns main err code: 12535
TNS-12535: TNS:operation timed out
ns secondary err code: 12606
nt main err code: 0
nt secondary err code: 0
nt OS err code: 0
Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=10.10.10.60)(PORT=58598))
2021-11-24T00:17:04.160798+09:00
WARNING: inbound connection timed out (ORA-3136)
|
에러메세지가 발생함
이렇게 비정상적으로 세션이 늦게 접속되는 경우 alert log에 위와 같은 메세지가 발생함
원인 : 비정상 세션, sqlnet.ora, listener.ora 파일의 INBOUND_CONNECT_TIMEOUT 파라미터 설정
오라클 10gR2부터 DoS(Denial of Service) 공격에 대비하기 위해 다음 두 파라미터의 기본 설정값이 60초로 설정됨
SQLNET.INBOUND_CONNECT_TIMEOUT (sqlnet.ora 파일에 설정) => sqlplus /@orcl19 접속시에만 영향을 줌
INBOUND_CONNECT_TIMEOUT_리스너명 (listener.ora 파일에 설정) => telnet 192.168.137.50 1521 접속시에만 영향을 줌
APP(세션)의 접속 형태에 따라 sqlner.ora와 listener.ora를 선택하거나 둘다 설정을 해야할 필요성이 있음
(jdbc를 통한 접속은 테스트가 불가해서 어떤 파라미터에 의해 발생하는지 확인하지 못함)
ORA-3136이 발생하게 되면 INBOUND_CONNECT_TIMEOUT 파라미터를 조정하기보다는
connection이 늦게 처리되는 APP에 대해서 먼저 확인하고 60초 안에 접속이 이루어 지도록 APP단의 수정을 해야함
이후에 어쩔수없이 늦게 접속되는 APP에 대해서는 위 파라미터 설정으로 TIMEOUT을 두는게 좋을듯함
아래 네이버 카페에 위 메세지 관련 테스트가 존재함
참조 : https://cafe.naver.com/prodba/11505
2113133.1, 257650.1
https://docs.oracle.com/en/database/oracle/oracle-database/19/netrf/parameters-for-the-sqlnet.ora.html#GUID-E83FEC2B-52E7-4513-83D8-830F9D745099
https://otsteam.tistory.com/23
https://positivemh.tistory.com/783
'ORACLE > Trouble Shooting' 카테고리의 다른 글
오라클 19c SYSAUX 테이블스페이스 SM/ADVISOR 용량증가 시 대처방안 (6) | 2021.12.17 |
---|---|
ORA-28040: No matching authentication protocol (0) | 2021.12.09 |
ORA-03135: connection lost contact (0) | 2021.11.23 |
sqlplus 에서 일부문자가 ???로 나올 때 해결 방법(윈도우 환경) (0) | 2021.11.02 |
/bin/ld: warning: -z nolazyload ignored. (0) | 2021.10.20 |