10g 운영중인 서버에서 12c 서버로 DB link를 연결할 작업이 있어 작업을 하다가 해결한 부분을 정리한 것입니다.
해당 에러의 원인은 12c부터 발생하는 이슈로 SQLNET.ALLOWED_LOG_VERSION 파라미터의 디폴트 값이 11로 변경이 되면서 부터입니다.
요약
12c 이상 DB에 접속하고 싶은데 클라이언트 버전이 낮아 해당 에러가 발생하였다면?
1.12c이상 DB SQLNET.ORA 수정 후 리스너 재기동
2.유저 설정 수정을 통하여 PASSWORD_VERSIONS 바꾸기
아래는 에러를 해결하는 과정과 함께 설명을 같이 해놓았습니다.
1차 접속시도
ORA-28040 : No matching authentication protocol
원인 : client 버전 보다 높은 DB에 접속하기 위해 나는 에러
간단하게 요약하면 12c 서버쪽에 SQLNET.ORA 파일에 아래 내용 추가 후 서버측 리스너를 재기동하면 됩니다.
해당 파라미터는 9i이상의 접속을 허용한다는 뜻입니다.
조치 :
SQLNET.ALLOWED_LOGON_VERSION_SERVER=9 ##유저 패스워드 방식을 서버단에서 변경을 준비
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=9 ## 클라이언트 버전이 낮아도 접속을 허용
해당 이슈와 관련된 글은 아래의 포스팅에 정리하였으므로 아래 글을 확인하시고 조치하면 됩니다.
2020.01.02 - [Oracle/이벤트] - ORA-28040 : No matching authentication protocol
https://bae9086.tistory.com/38
2차 접속시도
위의 에러를 해결하고 다시 접속을 시도하니 아래와 같은 에러가 발생합니다.
ORA-01017: invalid username/password; login denied
원인 : sqlnet.ora 설정 전에 USER 생성이 된 경우 발생합니다.(PASSWORD_VERSION 차이)
원인에 대해서는 자세하게 확인해가며 정리하겠습니다.
우선 기본적으로 12c에서 기본설정(파라미터 건드리지 않고 사용)을 확인해보면 아래와 같습니다.
dba_users 뷰를 확인해보면 password_versions에 11g 12c가 기본적으로 설정되어 있습니다.
11g에서 같은 테이블을 조회해보면 10g 11g라고 기본적으로 설정이 되어 있는데, 이 차이의 변경으로 인해서 12c 이후부터는 기본설정으로는 이전 client에서 접속이 안되는 것입니다. 따라서 12c에서도 11g에서 처럼 password_versions에 10g까지 표시되도록 변경해줄 필요가 있습니다.
SQL> select username,account_Status,password_Versions From dba_users
where username='유저명';
USERNAME ACCOUNT_STATUS PASSWORD_VERSIONS
----------------- -------------------------------- ----------------------------------
유저명 OPEN 11G 12C
...생략
조치 : alter user 유저명 identified by 패스워드 account unlock;
조치는 간단합니다. 1번의 SQLNET.ORA 파라미터 조치 후 유저를 다시 생성하면 PASSWORD_VERSIONS값이 변경됩니다. 기존에 생성된 유저라면 alter 명령문을 이용해 동일한 패스워드로 패스워드 변경을 해서 USER에 변경을 주면 됩니다.
SQL>alter user 유저명 identified by 패스워드명 account unlock;
다시 DBA_USERS뷰로 확인해보명 PASSWORD_VERSIONS값이 10G 11G 12C로 변경된 것을 확인할 수 있습니다. 변경하지 않은 유저는 아직까지 PASSWORD_VERSIONS이 11G 12C인것을 확인할 수 있습니다.
SQL> select username,account_Status,password_Versions From dba_users
where username='유저명';
USERNAME ACCOUNT_STATUS PASSWORD_VERSIONS
----------------- -------------------------------- ----------------------------------
유저명 OPEN 10G 11G 12C
SYSTEM OPEN 11G 12C
...생략
후에 다시 접속을 시도해보면 잘 되는것을 확인할 수 있습니다.
CMD>sqlplus 유저명/패스워드명@ISDD
SQL*Plus: Release 10.2.0.4.0 - Production on Mon Jun 7 10:24:46 2021
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
SQL> exit
Disconnected from Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
+)추가 사항
11g이상에서 부터 생긴 파라미터인데 대소문자 구분 허용/불가 파라미터입니다. default는 TRUE로 허용인데 대소문자를 구분한다는 뜻이므로 로그인시 불편함이 있을 수 있습니다. 따라서 FALSE로 바꾸고 사용한다면 좀더 편하게 사용할 수 있을 것입니다.
명령어 : alter system set sec_case_sensitive_logon =false scope=BOTH;
SQL> show parameter sensitive
NAME TYPE VALUE
------------------------------------ ----------------------
sec_case_sensitive_logon boolean TRUE
SQL> alter system set sec_case_sensitive_logon =false scope=BOTH;
SQL> show parameter sensitive
NAME TYPE VALUE
------------------------------------ ----------------------
sec_case_sensitive_logon boolean FALSE
끝
'Oracle > 이벤트' 카테고리의 다른 글
ADVISORY: Please collect redo for investigation of ORA-8103 (1) | 2021.11.30 |
---|---|
TNS-12505: TNS:listener does not currently know of SID given in connect descriptor (0) | 2021.07.08 |
ORA-00838,ORA-47500 (0) | 2021.01.21 |
ORA-04031 : unable to allocate 120 bytes of shared memory (0) | 2021.01.19 |
ACFS-9301,ACFS-9302 (0) | 2020.11.09 |
댓글