본문 바로가기

업무/DB

(7)
[ORACLE] TRIGGER 트리거 확인/중지/시작하기 트리거의 사전적 의미 1) '사격에서, 소총 또는 권총의 총알을 발사하게 하는 장치' 2) '특정한 작동을 시작하기 위한 계기를 부여하는 순시 입력' 라고 정의되어 있는데 대부분 두번째의 뜻으로 사용된다. 오라클 트리거(ORACLE TRIGGER) 구문 1. 무결성 유지 트리거는 데이터베이스의 무결성 제약 조건을 강화하기 위해 사용된다. 예를 들어, 특정 테이블에 대한 무결성 규칙을 설정하고, 그 규칙을 위반하는 데이터 변경을 방지할 수 있다. 2. 이력 추적 트리거를 사용하여 데이터 변경 이력을 추적할 수 있다. 변경된 데이터를 다른 테이블에 복사하여 데이터 변경 이벤트를 기록하고 추적할 수 있다. 3. 자동화 작업 특정 이벤트가 발생하면 트리거를 사용하여 자동화 작업을 실행할 수 있다. 예를 들어, ..
[ORACLE] DBMS_OUTPUT.PUT_LINE 출력이 안보이는 경우 1. SET SERVEROUTPUT ON; 수행 또는 2. 상단 메뉴 - 보기 - DBMS 출력 선택 - + 로 접속
[ORACLE] 특정 이름을 컬럼으로 가지는 테이블 찾기 특정 이름을 컬럼으로 가지는 테이블 찾기 SELECT TNAME, TABLE_NAME, B.CONSTRAINT_NAME FROM COL A LEFT OUTER JOIN ( SELECT TABLE_NAME, CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE CONSTRAINT_TYPE = 'R' ) B ON A.TNAME = B.TABLE_NAME WHERE CNAME = '컬럼명' AND TNAME IN (SELECT TNAME FROM TAB WHERE TNAME NOT LIKE 'BIN%' AND TABTYPE = 'TABLE') ORDER BY B.CONSTRAINT_NAME ASC ;
[ORACLE] 전체 테이블, 컬럼, 코멘트 조회 / 소스 전체 내용 검색 -- 전체 테이블 조회 SELECT BB.TABLE_TYPE , BB.TABLE_NAME , BB.COMMENTS FROM ALL_ALL_TABLES AA , ALL_TAB_COMMENTS BB WHERE AA.OWNER = BB.OWNER AND AA.TABLE_NAME = BB.TABLE_NAME AND AA.OWNER = '' AND AA.TABLE_NAME LIKE UPPER('%T%') AND BB.COMMENTS LIKE '%%' ; -- PK 조회 SELECT AA.TABLE_NAME , BB.COLUMN_NAME , AA.CONSTRAINT_TYPE FROM ALL_CONSTRAINTS AA , ALL_CONS_COLUMNS BB WHERE 1 = 1 AND AA.OWNER = '' AND..
[ORACLE] SMTP 메일 보내기 - 메일 하나에 다건(리스트) 보내기 메일 보내는 프로시져를 만든 후 DB JOB에 스케쥴을 추가하여 자동으로 메일을 발송하게 함. (매일 아침 정기배치 확인에 유용) create or replace PROCEDURE SEND_MAIL ( ad_date IN DATE, av_ret_code OUT VARCHAR2, av_ret_message OUT VARCHAR2 ) IS g_smtphost VARCHAR2(100) := 'smtp주소'; g_connection utl_smtp.connection; v_header VARCHAR2(1000); v_message VARCHAR2(32767); v_receiver_nm VARCHAR2(100); v_receiver_addr VARCHAR2(100); v_sender_nm VARCHAR2(100)..
[ORACLE] ORA-30678: 열린 접속이 너무 많음 매일 아침 수행되는 프로시저가 실패됨 ORACLE 오류코드는 ORA-30678 으로 내용은 열린 접속이 너무 많음 해당 프로시저는 패스워드 만료를 안내해주는 메일을 발송하는 내용이었는데 프로시저가 실패 된 이유는 SMTP로 메일을 보낼 때 CONNECTION 을 해주고 닫아주지 않아서였다. G_CONNECTION := UTL_SMTP.OPEN_CONNECTION( G_SMTPHOST, 25 ); 로직 UTL_SMTP.CLOSE_DATA( G_CONNECTION ); UTL_SMTP.QUIT( G_CONNECTION ); 해당 내용을 추가하니 해결
[ORACLE] DBMS_JOB ORACLE에서 DB JOB 으로 관리되던 프로시져의 실행시간이 이상해져서 JOB 조회/등록/변경/삭제 등의 방법을 알아봄 -- JOB 조회 SELECT * FROM USER_JOBS; -- JOB 등록 EXECUTE DBMS_JOB.SUBMIT(JOB_NO, JOB_내용, JOB_실행시간, JOB_실행간격, FALSE); DBMS_JOB.SUBMIT( job OUT BINARY_INTEGER, what IN VARCHAR2, NEXT_DATE IN DATE DEFAULTSYSDATE, interval IN VARCHAR2 DEFAULT 'NULL', no_parse IN BOOLEAN DEFAULT FALSE, instance IN BINARY_INTEGER DEFAULT ANY_INSTANCE, fo..