내맘대로긍정이 알려주는
Oracle 23ai 신기능
무료 세미나 발표자료
OS환경 : Oracle Linux 5.8, 7.6 (64bit)
DB 환경 : Oracle Database 10.2.0.4, 19.11.0.0
에러 : ORA-28040: No matching authentication protocol
오라클 10g에서 19c로 접속하려할 때 발생하는 메세지
tnsnames.ora 파일에 19c 접속 정보를 넣은 상태에서
1
2
3
4
5
6
7
8
9
|
$ cat $ORACLE_HOME/network/admin/tnsnames.ora
ORCL19 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.60)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL19)
)
)
|
tns를 이용해 19c 로 sqlplus 접속을 하려할 때 발생하는 메세지
1
2
3
4
5
6
7
8
9
10
11
|
$ sqlplus system/oracle@ORCL19
SQL*Plus: Release 10.2.0.5.0 - Production on Thu Dec 9 16:31:15 2021
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
ERROR:
ORA-28040: No matching authentication protocol
Enter user-name:
|
해결 방법 : 19c db의 sqlnet.ora파일 설정
19c가 설치된 db서버에서 sqlnet.ora파일에 아래 문장 추가
1
2
3
4
|
$ cd $ORACLE_HOME/network/admin
$ vi sqlnet.ora
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
|
10g 서버에서 19c로 다시 접속시도
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$ sqlplus system/oracle@ORCL19
SQL*Plus: Release 10.2.0.5.0 - Production on Thu Dec 9 16:40:32 2021
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
SYSTEM@ORCL19 > select instance_name, version, status from v$instance;
INSTANCE_NAME VERSION STATUS
---------------- ----------------- ------------
ORCL19 19.0.0.0.0 OPEN
|
정상적으로 접속됨
*1957995.1에 따르면 리스너 재기동은 필요없음
접속이 되지않는경우
19c 리스너 재기동
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
$ lsnrctl stop
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 09-DEC-2021 16:26:11
Copyright (c) 1991, 2021, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ORACLE19)(PORT=1521)))
The command completed successfully
$ lsnrctl start
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 09-DEC-2021 16:26:12
Copyright (c) 1991, 2021, Oracle. All rights reserved.
Starting /app/oracle/product/19.0.0/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /app/oracle/product/19.0.0/network/admin/listener.ora
Log messages written to /app/oracle/diag/tnslsnr/ORACLE19/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ORACLE19)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ORACLE19)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 09-DEC-2021 16:26:12
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /app/oracle/product/19.0.0/network/admin/listener.ora
Listener Log File /app/oracle/diag/tnslsnr/ORACLE19/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ORACLE19)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully
|
19c 유저 패스워드 버전 확인
1
2
3
4
5
6
7
8
|
SQL> select username, PASSWORD_VERSIONS from dba_users;
USERNAME PASSWORD_VERSIONS
-----------------------------
SYS 11G 12C
SYSTEM 11G 12C
.
.
|
19c 유저 패스워드 재설정(기존 패스워드 재입력)
1
2
3
|
SQL> alter user system identified by oracle;
User altered.
|
19c 유저 패스워드 버전 재확인
1
2
3
4
5
6
7
8
|
SQL> select username, PASSWORD_VERSIONS from dba_users;
USERNAME PASSWORD_VERSIONS
-----------------------------
SYS 11G 12C
SYSTEM 10G 11G 12C
.
.
|
패스워드 버전이 11G 12C에서 10G 11G 12C로 변경됨
*sqlnet.ora 파일 설정 이후에 생성한 유저의 password_version은 모두 10G 11G 12C 로 설정됨
1
2
3
4
5
6
7
8
9
|
SQL> create user test2 identified by test2 account unlock;
User created.
SQL> select username, PASSWORD_VERSIONS from dba_users where username = 'TEST2';
USERNAME PASSWORD_VERSIONS
----------- --------
TEST2 10G 11G 12C
|
다시 sqlplus 접속시도
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$ sqlplus system/oracle@ORCL19
SQL*Plus: Release 10.2.0.5.0 - Production on Thu Dec 9 17:02:31 2021
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
SYSTEM@ORCL19 > select instance_name, version, status from v$instance;
INSTANCE_NAME VERSION STATUS
---------------- ----------------- ------------
ORCL19 19.0.0.0.0 OPEN
|
정상적으로 접속됨
원인 : 클라이언트-db간 최소 인증 프로토콜 버전이 맞지 않아서 발생한 문제
낮은 버전의 db와 높은 버전의 db를 연결할때는 sqlnet.ora 파일에 위와같은 설정을 해주어야 정상적으로 접속됨
SQLNET.ALLOWED_LOGON_VERSION_CLIENT 값 설명
12a : Oracle Database 12 c 릴리스 1(12.1.0.2) 이상(가장 강력한 보호 기능)
참고 : 이 설정을 사용하면 클라이언트는 최적화되지 않은 암호 버전을 사용해서만 인증할 수 있습니다. 예를 들어 12C암호 버전입니다.
12 : 중요 패치 업데이트 CPUOct2012 이상 Oracle Database 11g 인증 프로토콜(강력한 보호)
메모:이 설정을 사용하면 클라이언트는 솔트를 사용하는 암호 해시 값을 통해서만 인증할 수 있습니다. 예를 들어 11G또는 12C암호 버전입니다.
11 : Oracle Database 11g 인증 프로토콜용(기본값)
10 : Oracle Database 10g 인증 프로토콜용
8 : Oracle8i 인증 프로토콜용
*참고사항
sqlnet.ora 파일 설정 전 후 리스너 로그확인
sqlnet.ora 파일 설정 전 tnsping 시 리스너 로그
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
10g -> 19c tnsping
$ tnsping orcl19
TNS Ping Utility for Linux: Version 10.2.0.5.0 - Production on 09-DEC-2021 17:07:06
Copyright (c) 1997, 2010, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.60)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL19)))
OK (0 msec)
19c 리스너로그
$ tail -f /app/oracle/diag/tnslsnr/ORACLE19/listener/trace/listener.log
2021-12-09T17:02:15.528158+09:00
09-DEC-2021 17:02:15 * ping * 0
|
tnsping 성공하고 리스너로그에서 ping이 확인됨
sqlnet.ora 파일 설정 전 tns sqlplus 연결시 리스너 로그
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
10g -> 19c sqlplus
$ sqlplus system/oracle@ORCL19
SQL*Plus: Release 10.2.0.5.0 - Production on Thu Dec 9 17:09:04 2021
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
ERROR:
ORA-28040: No matching authentication protocol
Enter user-name:
19c 리스너로그
$ tail -f /app/oracle/diag/tnslsnr/ORACLE19/listener/trace/listener.log
2021-12-09T17:04:13.710042+09:00
09-DEC-2021 17:04:13 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL19)(CID=(PROGRAM=sqlplus)(HOST=ORACLE10)(USER=oracle))) *
(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.10.20)(PORT=45315)) * establish * ORCL19 * 0 |
sqlplus 접속시 ORA-28040 발생하고 리스너로그에는 establish(서버에 접속성공)이 나타남
sqlnet.ora 파일 설정 후 tnsping 시 리스너 로그
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
10g -> 19c tnsping
$ tnsping orcl19
TNS Ping Utility for Linux: Version 10.2.0.5.0 - Production on 09-DEC-2021 17:11:38
Copyright (c) 1997, 2010, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.60)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL19)))
OK (0 msec)
19c 리스너로그
$ tail -f /app/oracle/diag/tnslsnr/ORACLE19/listener/trace/listener.log
2021-12-09T17:06:47.429157+09:00
09-DEC-2021 17:06:47 * ping * 0
|
tnsping 성공하고 리스너로그에서 ping이 확인됨
sqlnet.ora 미설정시와 동일한 로그가 리스너로그에 남음
sqlnet.ora 파일 설정 후 tns sqlplus 연결시 리스너 로그
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
10g -> 19c sqlplus
$ sqlplus system/oracle@ORCL19
SQL*Plus: Release 10.2.0.5.0 - Production on Thu Dec 9 17:12:20 2021
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
SYSTEM@ORCL19 > select instance_name, version, status from v$instance;
INSTANCE_NAME VERSION STATUS
---------------- ----------------- ------------
ORCL19 19.0.0.0.0 OPEN
19c 리스너로그
$ tail -f /app/oracle/diag/tnslsnr/ORACLE19/listener/trace/listener.log
2021-12-09T17:07:29.641416+09:00
09-DEC-2021 17:07:29 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL19)(CID=(PROGRAM=sqlplus)(HOST=ORACLE10)(USER=oracle))) *
(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.10.20)(PORT=45320)) * establish * ORCL19 * 0
|
sqlplus 접속시 정상 접속되고 리스너로그에는 establish(서버에 접속성공)이 나타남
sqlnet.ora 미설정시와 동일한 로그가 리스너로그에 남음
참조 : 2111876.1, 1556542.1, 1957995.1, 2040705.1
'ORACLE > Trouble Shooting' 카테고리의 다른 글
AHF-00014: AHF Data Location /app/oracle/oracle.ahf/data is not owned by root in directory hierarchy (0) | 2021.12.25 |
---|---|
오라클 19c SYSAUX 테이블스페이스 SM/ADVISOR 용량증가 시 대처방안 (6) | 2021.12.17 |
WARNING: inbound connection timed out (ORA-3136) (0) | 2021.11.24 |
ORA-03135: connection lost contact (0) | 2021.11.23 |
sqlplus 에서 일부문자가 ???로 나올 때 해결 방법(윈도우 환경) (0) | 2021.11.02 |