728x90
CREATE OR REPLACE PROCEDURE NEXENDBA.PR_CM_USER_LOGIN_HIST
/******************************************************************************
NAME: PR_CM_USER_LOGIN_HIST
PURPOSE: 로그인 이력 테이블을 일정 기간이 지나면 삭제한다.
REVISIONS:
VER DATE AUTHOR DESCRIPTION
--------------------------------------------------------------------------------------------------------------------------
1.0 2025-10-20 민토리 로그인 이력 테이블을 90일 지나면 삭제한다.
******************************************************************************/
IS
BEGIN
-- 현재 날짜 기준 90일 이전 로그인 기록 삭제
DELETE FROM CM_USER_LOGIN_HIST
WHERE 1=1
AND TO_DATE(LOGIN_DT, 'YYYYMMDDHH24MISS') < SYSDATE - 90;
COMMIT;
DBMS_OUTPUT.PUT_LINE('90일 이전 로그인 이력 삭제 완료');
END PR_CM_USER_LOGIN_HIST;
회사에서 로그인/로그아웃 이력 남기는 기능을 개발하였다.
후처리를 위해 90일이 지나면 DB에 쌓여있는 로그인 이력들이 자동으로 삭제되는 프로시저를 생성했다.
또한 이 프로시저가 자동으로 돌아가기 위해서 잡스케쥴러 등록까지 해주었다
데이터를 건드는 부분은 보통 사용자가 활동하지 않는 시간에 하면 좋겠다 싶어서 오전 2시로 정했고
인터넷을 찾아보니 보통은 새벽 시간대에 설정을 해둔다고 하여 매일 오전 2시에 돌아가도록 설정해두었다.
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'DBMS_JOB$_784',
job_type => 'STORED_PROCEDURE',
job_action => 'PR_CM_USER_LOGIN_HIST',
start_date => SYSTIMESTAMP,
repeat_interval => 'FREQ=DAILY; BYHOUR=2; BYMINUTE=0; BYSECOND=0',
enabled => TRUE,
comments => '로그인 이력 삭제 - 매일 새벽 2시 PR_CM_USER_LOGIN_HIST 실행'
);
END;
SQL편집기에서 스케쥴러 코드를 짜 등록해주었다
job_name의 경우에는 각 회사에서 사용하는 공통 이름이 있을 것이니 잘 지켜야한다.

(우리회사의 경우에는 이렇게 통일하고 있어서 저렇게 설정했다)
▼ 각 파라미터에 대한 설명
| job_name | 등록할 잡 이름 |
| job_type | 실행할 대상 유형 (PLSQL_BLOCK, STORED_PROCEDURE, EXECUTABLE) |
| job_action | 실제 실행할 내용 (프로시저 호출 구문) |
| start_date | 최초 실행 시간 |
| repeat_interval | 반복 주기 (Scheduler 캘린더 표현식 사용) |
| enabled | TRUE로 설정 시 즉시 활성화 |
| comments | 잡 설명 |
▼ job_type에 대해 좀 더 자세히 보면 이렇다.
| 'PLSQL_BLOCK' | BEGIN ... END; 형태의 익명 블록 | 'BEGIN P_MY_PROC; END;' | 여러 문장 가능 |
| 'STORED_PROCEDURE' | CALL 프로시저명 또는 프로시저명 | 'MY_SCHEMA.P_MY_PROC' | 저장된 프로시저 1개 호출 |
| 'EXECUTABLE' | OS 명령 / Shell Script 실행 | '/usr/bin/python /home/run.py' | DB 밖 프로그램 실행 |
요즘 회사에서 PL/SQL을 다룰 일이 좀 있는데 좋은 경험인 것 같아 기록해두었다 !!
'SQL' 카테고리의 다른 글
| [Oracle] 운영 DB 데이터 개발 DB에 Insert하기 (0) | 2025.11.30 |
|---|---|
| DBeaver(디비버) 다운로드 및 database 연결법 (0) | 2024.04.05 |
| MySQL 설치 및 명령어 (2) | 2024.04.05 |
| PostgreSQL 설치하기 (0) | 2024.04.05 |
| MSSQL 내 테이블을 다른 문서 파일 형태로 내보내기 (0) | 2024.04.04 |