OS환경 : Cent OS 7.9, Oracle Linux 7.6 (64bit)
DB 환경 : Oracle Database 19.3.0.0, Oracle Client 11gR2, 12cR2, 19c
방법 : 오라클 19c 클라이언트 서버의 /etc/resolv.conf 의 잘못된 dns 주소로 인한 sqlplus tns 연결 지연 테스트
오라클 클라이언트 서버의 /etc/resolv.conf 의 잘못된 dns 주소로 인한
sqlplus tns 연결 지연 현상을 확인한 뒤 테스트 해봄
클라이언트 서버 정보 : CentOS 7 / 192.168.137.7 / 11gR2 클라이언트, 12cR2 클라이언트, 19c 클라이언트
DB 서버 정보 : Oracle Linux 7 / 192.168.137.19 / 19.3 DB / sid:oracle19
클라이언트에 등록된 TNS 정보
1
2
3
4
5
6
7
8
9
|
$ cat $ORACLE_HOME/network/admin/tnsnames.ora
TEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.19)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oracle19)
)
)
|
ifconfig로 현재 ip 확인
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
|
# ifconfig
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.137.7 netmask 255.255.255.0 broadcast 192.168.137.255
inet6 fe80::20c:29ff:fe2b:d1a3 prefixlen 64 scopeid 0x20
ether 00:0c:29:2b:d1:a3 txqueuelen 1000 (Ethernet)
RX packets 1890955 bytes 2713533627 (2.5 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 157977 bytes 37274559 (35.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 56 bytes 4626 (4.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 56 bytes 4626 (4.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:26:41:8a txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
ens32 인터페이스의 정보 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# cat /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens32"
UUID="0a7b4b10-10f8-4d75-95dc-e6886b9fcbcd"
DEVICE="ens32"
ONBOOT="yes"
IPADDR="192.168.137.7"
PREFIX="24"
GATEWAY="192.168.137.2"
DNS1="168.126.63.1"
|
기존 /etc/resolv.conf의 dns 정보 확인
1
2
3
|
# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 168.126.63.1
|
정상적인 dns 주소를 가지고 있음
tnsping 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$ tnsping test
TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 18-JAN-2024 14:23:44
Copyright (c) 1997, 2013, Oracle. All rights reserved.
Used parameter files:
/home/oracle/app/oracle/product/11.2.0/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.19)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oracle19)))
OK (0 msec)
|
tnsping 지연 없음
sqlplus 접속 확인
1
2
3
|
date
sqlplus system/oracle@test
select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') dt from dual;
|
위 커맨드 복사해서 모두 붙여넣기
결과
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
$ date
Thu Jan 18 14:24:17 KST 2024
$ sqlplus system/oracle@test
SQL*Plus: Release 11.2.0.4.0 Production on Thu Jan 18 14:24:17 2024
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
SQL>
TO_CHAR(SYSDATE,'YY
-------------------
2024-01-18 14:24:17
|
정상적으로 1초 이내로 sqlplus 연결됨
ifcfg_ens32 인터페이스의 DNS 부분 주석 처리
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# vi /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens32"
UUID="0a7b4b10-10f8-4d75-95dc-e6886b9fcbcd"
DEVICE="ens32"
ONBOOT="yes"
IPADDR="192.168.137.7"
PREFIX="24"
GATEWAY="192.168.137.2"
#DNS1="168.126.63.1"
|
네트워크 restart
1
2
|
# systemctl restart NetworkManager.service
# systemctl restart network
|
/etc/resolv.conf의 dns 값 이상한 숫자로 변경
1
2
|
# cat /etc/resolv.conf
nameserver 111.222.111.222
|
tnsping 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$ tnsping test
TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 18-JAN-2024 14:28:02
Copyright (c) 1997, 2013, Oracle. All rights reserved.
Used parameter files:
/home/oracle/app/oracle/product/11.2.0/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.19)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oracle19)))
OK (0 msec)
|
tnsping 지연 없다고 나옴
sqlplus 접속 확인
1
2
3
|
date
sqlplus system/oracle@test
select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') dt from dual;
|
위 커맨드 복사해서 모두 동시에 붙여넣기
결과
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
$ date
Thu Jan 18 14:28:23 KST 2024
$ sqlplus system/oracle@test
SQL*Plus: Release 11.2.0.4.0 Production on Thu Jan 18 14:28:23 2024
Copyright (c) 1982, 2013, Oracle. All rights reserved. <------- 이까지만 나오고 10초간 대기함
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
SQL>
DT
-------------------
2024-01-18 14:28:33
|
2024-01-18 14:28:23초에 sqlplus를 실행하고 sqlplus 자체는 바로 실행된 뒤
SQL 입력창은 10초 뒤인 14:28:33에 나옴, 쿼리도 직후 바로 수행됨
sqlplus ezconnect 방법으로 연결 시도
1
|
$ sqlplus system/oracle@192.168.137.19:1521/oracle19
|
동일하게 느림
sqlplus 접속 이후 conn 명령으로 다른 유저로 접속하는것은 빠름
1
2
3
4
|
SQL> conn imsi/imsi@test
Connected.
SQL> conn system/oracle@test
Connected.
|
(지연없이 연결됨)
클라이언트 버전을 11gR2가 아닌 12cR2나 19c로 변경했을때는 증상이 각각 달랐음
12cR2 클라이언트
tnsping 확인
1
2
3
4
5
6
7
8
9
10
|
$ tnsping test
TNS Ping Utility for Linux: Version 12.2.0.1.0 - Production on 18-JAN-2024 14:34:52
Copyright (c) 1997, 2016, Oracle. All rights reserved.
Used parameter files:
/home/oracle/app12/oracle/product/12cr2/network/admin/sqlnet.ora
TNS-03505: Failed to resolve name
|
TNS-03505: Failed to resolve name 가 발생함
sqlplus 접속 확인
1
2
3
4
5
6
7
8
9
10
11
|
$ sqlplus system/oracle@test
SQL*Plus: Release 12.2.0.1.0 Production on Thu Jan 18 14:35:59 2024
Copyright (c) 1982, 2016, Oracle. All rights reserved.
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified
Enter user-name:
|
ORA-12154: TNS:could not resolve the connect identifier specified 가 나오며 연결되지 않음
19c 클라이언트
tnsping 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$ tnsping test
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 18-JAN-2024 14:38:42
Copyright (c) 1997, 2019, Oracle. All rights reserved.
Used parameter files:
/home/oracle/app19/oracle/product/19c/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.19)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oracle19)))
OK (10020 msec)
|
tnsping이 성공은 하지만 10020 msec만에 붙음
sqlplus 접속 확인
1
2
3
|
date
sqlplus system/oracle@test
select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') dt from dual;
|
위 커맨드 복사해서 모두 동시에 붙여넣기
결과
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
$ date
Thu Jan 18 14:40:22 KST 2024
$ sqlplus system/oracle@test
SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jan 18 14:40:22 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved. <------- 이까지만 나오고 10초간 대기함
Last Successful login time: Thu Jan 18 2024 14:39:53 +09:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL>
DT
-------------------
2024-01-18 14:40:42
|
19c 클라이언트에서 sqlplus tns 연결 시도시 20초 지연 후 연결됨
마찬가지로 sqlplus 접속 이후 conn 명령으로 다른 유저로 접속하는것은 빠름
1
2
3
4
|
SQL> conn imsi/imsi@test
Connected.
SQL> conn system/oracle@test
Connected.
|
(지연없이 연결됨)
sqlplus 를 통한 tns 접속시 dns를 먼저 체크하는 기능이 있어 이런 현상이 발생하는듯함
sqlplus 를 통한 tns 접속시 지연이 발생한다면 /etc/resolv.conf 확인도 필요함
참조 : https://positivemh.tistory.com/473
'ORACLE > Admin' 카테고리의 다른 글
오라클 19c 파티션 테이블 add 작업 시 인덱스 영향도 확인 (0) | 2024.01.25 |
---|---|
오라클 19c 파티션 테이블 인덱스 생성, rebuild 시 lock 및 online 옵션 테스트 (0) | 2024.01.22 |
오라클 19c 파티션 테이블 impdp 시 lock 확인 (0) | 2024.01.10 |
오라클 19c sqlplus 에서의 rollback 커맨드 신기한점 (0) | 2023.12.26 |
오라클 19c OCP, OCM 자격증 취득 관련 내용 (12) | 2023.12.20 |