개요
부하상황분석, 세션 개수 및 상태 등을 모니터링 하기 위해서는 해당 SQL의 반복 수행이 필요합니다.
이 때 OS명령어와 SQL을 조합해 반복 수행 작업을 편리하게 할 수 있는 방법을 안내합니다.
방법
1. SQL 생성
TAC환경에서 WAS1, WAS2로 DB에 접속하는 세션의 상태 모니터링 쿼리를 생성합니다.
$ vi query.sql
SELECT (SELECT TO_CHAR(SYSDATE,'YYYYMMDD HH24:MI:SS') FROM DUAL) DT
, A.*
FROM ( SELECT INST_ID, STATUS, COUNT(1) FROM GV$SESSION
WHERE MACHINE IN('WAS1','WAS2') GROUP BY INST_ID, STATUS) A;
$ tbsql sys/tibero
SQL> @query.sql
DT INST_ID STATUS COUNT(1)
----------------- ---------- ---------- ----------
20250509 16:15:17 1 READY 1995
20250509 16:15:17 1 RUNNING 5
20250509 16:15:17 2 READY 1394
20250509 16:15:17 2 RUNNING 6
--정상 동작 확인
SQL
복사
2. 반복문 쉘 스크립트 생성
loop.sh를 생성하고 sql의 수행 결과는 test.txt로 받습니다.
$vi loop.sh
while true; do
tbsql -s sys/tibero @/tibero/work/query.sql >> test.txt
sleep 2
done
SQL
복사
3. 쉘 스크립트 백그라운드 수행
$ nohup sh /tibero/work/query.sql &
SQL
복사
4. 모니터링
반복적으로 sql이 수행 되는 것을 확인할 수 있습니다.
$ tail -f test.txt
DT INST_ID STATUS COUNT(1)
----------------- ---------- ---------- ----------
20250509 16:16:23 1 READY 1995
20250509 16:16:23 1 RUNNING 5
20250509 16:16:23 2 READY 1394
20250509 16:16:23 2 RUNNING 6
DT INST_ID STATUS COUNT(1)
----------------- ---------- ---------- ----------
20250509 16:16:25 1 READY 1995
20250509 16:16:25 1 RUNNING 5
20250509 16:16:25 2 READY 1394
20250509 16:16:25 2 RUNNING 6
....(생략)
SQL
복사
5. 종료
$ ps -ef| grep loop
tibero 2239 1951 0 04:35 pts/0 00:00:00 sh loop.sh
tibero 2378 1951 0 04:35 pts/0 00:00:00 grep --color=auto loop
$ kill -9 2239
[1]+ Killed nohup sh loop.sh
SQL
복사