본문 바로가기
DATABASE

sql background nohup

by 개폰지밥 2019. 8. 28.
반응형

sql문을 loop로 돌리고 퇴근을 하다보면 Network error:Software caused connection abort라는 에러가 발생한다.

결국 마지막에 commit;을 하지 않고 퇴근하면 하루내내 돌린게 사라지는 magic을 경험하게 된다.

 

먼저 Network error: Software cuased connection abort를 해결하는 방법!

위와 같이 설정하고 좀더 확실하게 하고 싶으면 nohub을 이용하면 되는데 nohub을 이용하면 로그아웃 후에도 종료 없이 프로그램을 실행할 수 있다.

 

1) 실행하고 싶은 문들을 sql 파일로 만든다.

vi test.sql

set timing on;   --얼마나 걸렸는지 시간 측정
SELECT count(*) FROM TB_SAMPLE01;  --테이블 확인 명령어
commit;  --테이블 적용 명령어
QUIT; --나가는 명령어

 

명령어  끝에는 quit;를 해주는 것이 좋다.

2) sql문 실행

일반 sql문과 비슷한데 맨 앞에는 nohup을 맨뒤에 &를 넣어주면 된다.

nohup sqlplus 접속할아이디/접속할비밀번호 @돌리고싶은sql &

ex)  nohup sqlplus magicdb/magicdb @test.sql &^C

3) 잘 돌아갔는지 확인하기

엔터를 입력했을 때 실행이 다 되었으면 바로 Done으로 보이고 nohub으로 실행시킨후 내일 확인하고 싶을 때는  nohub.out파일을 확인하면 된다. 살펴보면 아래와 같이 잘 실행된 것을 확인할 수 있다.

* 실시간으로 nohub log 메세지 보는 법

tail -f ./nohup.out
tail은 문서의 끝부터 일정 라인을 보여주는 명령어, -f 옵션은 추가되는 내용을 보여줍니다.
tail 로그를 확인 중 나가고 싶으면 ctrl+c 하면 됩니다.

* nohub 종료

ps -ef로 해당 쉘 pid 확인해서 kill로 종료시키면 된다.
kill [pid of test.sh]

 

좀 더 정확히 확인하는 방법은

ps -ef | grep sqlplus 를 하면 test2가 @update.sql을 실행하고 있는것을 볼 수 있다. 그 pid를 kill 시키면 된다.

kill -9 5268 하면된다.

nohup으로 실행되고 있지 않으면 아래와 같다.

반응형

댓글