본문 바로가기
IT 개발/에러

[Oracle] ORA-28001: 비밀번호 만기 해결방법

by Dev.Jeon 2023. 1. 18.
반응형

에러메시지

ORA-28001: 비밀번호가 만기

ORA-28001: the password has expired

SQLGATE 에러창

현상

로컬 DB에 접속하려고 들어갑니다.

며칠 전에는 잘 로그인 되더니 오류가 납니다.

 

원인

평소처럼 오라클  DB에 접속하여고 하는데 이런 에러를 겪은 적이 있을 것 입니다.

오라클은 따로 설정해주지 않으면,

오라클 11g부터는 180일 지나고 자동으로 비밀번호가 만료됩니다. 

그리고 이 기간이 지나면 해당 계정으로 로그인이 불가합니다.

 

그래서 만료가 되기 전에

 

"ORA-28002: 1 일안에 비밀번호가 만기  될 것입니다 암호를 변경하시겠습니까?"

 

라고 친절하게 알려줍니다.

그런데 저는 오랜만에 로컬 DB에 접속했던 터라 이미 만료가 되어 버렸네요. 

 

 

해결

방법은 2가지입니다.

1. 임시로 계정 비밀번호 변경

2. 패스워드 유효기간을 영구적으로 늘리기

 

※ 둘 다 반드시 SYS 계정으로 접속하셔야 합니다

 


1. 임시로 계정 비밀번호 변경

1-1. 계정 상태 확인

SELECT USERNAME 
     , EXPIRY_DATE
     , ACCOUNT_STATUS
  FROM DBA_USERS
;

비밀번호 만료 계정은

ACCOUNT_STATUS 가 EXFIRED로 표시되어 있을 것입니다.

EXPIRY_DATE 역시 과거 날짜로 되어 있을 것입니다.

정상적인 계정은 

ACCOUNT_STATUS 가 OPEN으로 표시되어있습니다.

EXPIRY_DATE는 NULL로 비어 있습니다.

 

 

1-2. 패스워드 기간 확인

SELECT RESOURCE_NAME 
     , LIMIT
  FROM DBA_PROFILES
 WHERE PROFILE = 'DEFAULT'
   AND RESOURCE_NAME = 'PASSWORD_LIFE_TIME'
;

보통은 LIMIT에 180일로 표시됩니다.

 

 

1-3. 패스워드 변경

ALTER USER user_id IDENTIFIED BY new_password;

변경 후 1-1 쿼리를 실행해서 계정 정보를 확인해봅니다.

ACCOUNT_STATUS 가  OPEN으로 변경되었다면 로그인이 가능합니다.

 

하지만 이 방법은 다시 180일이 지나면 또 해줘야 합니다.

보안에 상관없이 유효기간을 늘리고 싶다면 2번을 수행해주세요.

 


 

2. 패스워드 유효기간을 영구적으로 늘리기

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

 

계정 유효기간을 영구적으로 늘려서 비밀번호 만료를 막는 방법입니다.

보안을 생각하면 좋지 않은 방법이지만 테스트 계정으로 쓸 DB라면 괜찮을 것 같습니다.

역시 쿼리 실행 후 1-2로 가서 패스워드 기간을 확인해 봅니다.

아래와 같이 LIMIT가 UNLIMIT로 변경되어 유효기간이 영구히 늘어나게 된 것을 확인할 수 있습니다.

 

 

추가 사항

패스워드 제한 기간을 유지하고 180일을 360일로 변경하는 법

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 360;

기존 180일 제한이 360일로 변경되어 1년에 한 번 정도 비밀번호를 변경할 수 있게 됩니다.

여러분의 DB상황에 맞게 적용하시면 될 것 같습니다.

 


<참조사이트>

https://loghada.tistory.com/17

https://docu94.tistory.com/134

반응형

댓글