0. 개요
Linux의 쉘 스크립트를 이용해 SQL 파일을 실행하고, 이를 로그로 저장해 보도록 한다. 해당 방법을 사용하면 특정 환경에서 Linux의 Crontab
을 활용해 SQL문을 자동으로 돌릴 수 있는 효과를 기대할 수 있다.
1. 참고
본 포스트에서 진행한 OS 및 DBMS 환경은 아래와 같다.
OS | RedHat Linux 64-bit 8.8 |
DBMS | Oracle Database 19c |
2. SQL 파일 이동
본인이 실행하고자 하는 SQL문을 작성하여, SQL 파일로 저장하고 WinSCP 등 SFTP 프로그램을 이용해 Linux 서버로 이동한다.
본 포스트에서는 아주 단순히 Oracle DB의 버전만 확인할 수 있는 쿼리문을 작성하고, /test/sqltest.sql
경로로 저장했다.
▣ sqltest.sql
내용 (Oracle DB 버전확인 쿼리)
SELECT * FROM PRODUCT_COMPONENT_VERSION;
3. Shell Script 작성
vim
편집기를 통해 새 파일을 생성하고, 우리가 0. 개요 단락에서 기대했던 효과를 얻을 수 있는 스크립트를 작성하자.
# vim /test/shelltest.sh
▲ 스크립트 파일 생성 후 vim 편집기 실행
#!/bin/sh
### ORACLE DB SQL문 실행 후 로그 작성하는 쉘 스크립트
# 시스템 현재시간 time 변수로 저장
time=`date +%Y%m%d`
# 로그 파일 생성 위치 지정
logdir=/test/result_log
# 실행할 sql문 지정
sql=/test/sqltest.sql
# 로그 파일 생성 위치가 없으면 mkdir 명령어를 통해 하위 디렉터리까지 한번에 생성
mkdir -p $logdir
# DB 로그인 후 SQL 실행 및 로그파일 생성
sqlplus [DB아이디]/[DB비밀번호] << ENDSQL
spool $logdir/result_$time.log
@$sql
spool off
exit
ENDSQL
▲ 쉘 스크립트 파일 내용
/test/sqltest.sql
파일을 실행하고, /test/result_log
폴더에 result_[날짜].log
파일을 생성하도록 하는 쉘 스크립트다.
4. Shell Script 실행
# chmod u+x /test/shelltest.sh
# /test/shelltest.sh
▲ 스크립트 파일 실행 권한 설정 후 실행
스크립트를 실행하기 위해서는 권한을 설정해 주어야 한다. chmod u+x
명령어로 스크립트 파일 실행 권한을 지정하고, 스크립트를 실행시켜 보자.
쉘 화면에서 스크립트가 실행되고 종료된 모습을 확인할 수 있었다.
로그 저장 경로로 지정한 곳에도 오늘날짜에 맞게 잘 로그파일이 생성된 모습을 확인할 수 있다.
로그파일을 열어보면 실행내역이 정상적으로 저장되어 있는 모습을 확인할 수 있다.