자연스럽게 접속했더니 ORA-28000 에러가 난다. 아니면 ORA-01017 invaild username/password가 뜬다면? system 권한만이 상황을 반전시킬 수 있을 것이다.

Windows에서 흔하게 Oracle 을 설치했다고 가정한 환경에서 진행한다.

계정이 잠겼어요!

SQL> conn 아이디/비번
ERROR:
ORA-28000: the account is locked

이러한 오류가 발생하는 경우가 있어서 아무런 동작이 먹히지 않을 때가 있다.

이는 연속하여 비밀번호를 틀린 경우 계정이 잠기도록 기본적으로 설정이 되어 있기 때문이다.

이럴 때 시스템 계정으로 접근하여 풀어줘야 한다.

시스템 비밀번호를 잊어버렸어요!

SQL> conn system
Enter password:
ERROR:
ORA-01017: invalid username/password; logon denied

산 넘어 산이다. 이럴 때는 sysdba 권한으로 접속하면 해결된다고 한다.

비밀번호도 없이 쓱 들어가지는게 신기하고 이래도 되나 싶지만, OS가 관리자 권한으로 로그인되어 있어야만 동작한다고 한다.

시스템 제어가 넘어갔을 때 DB도 동시에 넘어가지 않도록 sysdba 권한에 대한 추가 설정이 나중에 필요할 듯 싶다.

방법은 다음과 같다.

SQL> conn /as sysdba
Connected.

상당히 싱겁게 해결되었다.

잊어버린 계정에 대한 비밀번호 재지정

다음으로 각각의 비번을 다시 설정해보자.

SQL> alter user system identified by 새로운비밀번호;

User altered.

이 방법으로 새로운 비밀번호로 설정을 완료할 수 있다. system 부분에 hr 등 계정을 넣으면 바로 비밀번호가 변경된다.

SQL문과 유사한 표기가 많이 나타난다.

그래서 잠긴 계정을 이제 풀어보자

잠깐. 진짜 잠기긴 한 걸까? 다음 코드를 쓰면 알 수 있다.

SQL> select username, account_status, lock_date from dba_users

결과를 적으면 너무 길어지니까 스킵한다.

SQL> alter user hr account unlock;

User altered.

이렇게 해서 hr 계정을 언락할 수 있었다.

결론

  • 비밀번호를 잊지 말자
  • 잠기지 않도록 DB 접근을 어렵게 하자
  • 절대 관리자 계정으로 Oracle 콘솔을 열 수 없게 하자 OR sysdba 설정을 손보자