Unlock user

Locked user 모두 해제

Oracle DBMS 는 설정을 하지 않는 경우 180일이 지나면 계정을 잠금 처리한다.

이로 인해 갑자기 잘 되던 데이터베이스가 안되는 현상이 발생한다.

Caused by: java.sql.SQLException: ORA-28001: the password has expired

하나씩 해제할 경우 다음과 같이 처리한다.

ALTER USER 아이디 ACCOUNT UNLOCK
ALTER USER 아이디 IDENTIFIED BY 비밀번호;

다음은 모든 Locked 사용자를 아이디와 동일한 비밀번호로 초기화하기 위해 만든 PL/SQL이다.

BEGIN
    -- 결과만큼 반복할 SQL 구문을 작성하고 별칭을 DDL로 부여
    FOR CUR IN (
        SELECT 
            'ALTER USER ' || USERNAME || ' IDENTIFIED BY ' || USERNAME AS DDL1,
	    'ALTER USER ' || USERNAME || ' ACCOUNT UNLOCK' AS DDL2
            FROM DBA_USERS
            WHERE ACCOUNT_STATUS LIKE 'EXPIRE%'
    )
    LOOP
        BEGIN
            -- 조회된 구문 실행
            EXECUTE IMMEDIATE CUR.DDL1;
            EXECUTE IMMEDIATE CUR.DDL2;
        EXCEPTION
            -- 예외 발생 시 아무작업을 하지 않음
            WHEN OTHERS THEN
                NULL;
        END;  
    END LOOP;  
END;
/

Last updated