본문 바로가기

닷컴's_열공/Database

프로시져의 내용을 로그 파일에 남기기, 파일 읽고 쓰기

◎ 프로시져의 내용을 로그 파일에 남기기, 파일 읽고 쓰기


겨우리씨 왜 이런게 필요한가요?

프로시져를 만들어서 OUTPUT으로 찍어보면 되는거 아닌가 라는 의문을 가지는 분들도

계실겁니다. 하지만...

클라이언트로부터 데이터를 가져와

다시 서버쪽에서 자바에서 데이터를 가공하고,

최종적으로 프로시져의 로직을 돌릴때....

그런 단계별의 데이터를 측정하기가 만만치는 않습니다.

좋은 방법이 없을까 했는데 begining oracle 책에 좋은 예제가 있더군요.

프로시져의 로그를 빨리 확인해 볼 수 있어서 개발속도가 빨라졌습니다.


겨우리씨 그럼 어떻게 해야하나요?

1) 파라미터 utl_file_dir /tmp NO utl_file accessible directories list NO NO FALSE
(오라클에서 파일 읽고 쓰기는 파라미터로 지정한 한개의 파일만 가능하다고 함, 보안상의 이유)

파라미터 변경


2) DB를 SHUTDOWN후 STARTUP해야된다


3) 첨부파일의 압축을 풀어 install_debug.sql을 실행시키면 데이블과 패키지들이 생성됩니다.

* 토마스카이트가 만든 파일에 로그 만드는(읽고 쓰는) 패키지 (오라클에서 지원하는 유틸패키지 이용) (begining oracle 참조)

4) 아래는 debugtab테이블에 들어가 있는 내용입니다. filename을 보시면 아시겠지만.

파라미터에서 지정한 경로에 해당 로그 파일이 생성됩니다.



<이미지가 작게 보이시면 더블클릭>


5) 프로시져에서 로그를 남기고 싶을 땐 아래와 같은 코드를 삽입합니다.

DEBUG.F('테스트 테스트'||찍고싶은변수);


예>>

BEGIN
  DEBUG.F('사업장:'||i_wp_id||'  년도:'||i_yyyymmdd);
  IF i_job_type = G.CHUGA THEN


6) 로그가 제대로 나오는지 확인해볼까?

telnet으로 접속해서

tail -f /tmp/db.log

프로그램을 실행하면 로그가 찍히는게 보이시죠.