본문 바로가기
Oracle/운영

DB 접속 체크 쉘 프로그램 간단하게 만듦

by 취미툰 2022. 8. 11.
반응형

한 서버에서 다른서버에 접속하여 DB 상태를 체크하는 간단한 프로그램을 만들었습니다.

 

1.DB lis 파일 생성

업무명:DBNAME:IP:PORT:비밀번호:인스턴스번호(RAC일경우) 형식으로 접속을 하고자 하는 DB 리스트를 작성합니다.

업무명과 인스턴스번호는 실제 DB 접속할때는 필요하지 않고 사용자의 구분용으로만 사용되므로 정확하게 작성하지 않으셔도 됩니다. 나머지 DBNAME 부터 비밀번호는 정확하게 작성해야 합니다.

vi db.lis
업무명:DBNAME:IP:PORT:비밀번호:인스턴스번호(RAC일경우)
...
...
...
..
...

 

2. connection.sh 생성

위의 db.lis 파일에서 변수를 받아와 easyconnect 방식으로 DB에 접속합니다.

2.vi connection.sh


 for STRTMP1 in `cat /home/oracle/dba/ysbae/db.lis`
  do
   DBNAME=`echo ${STRTMP1} | awk -F: '{print $1}'`
   DBSID=`echo ${STRTMP1} | awk -F: '{print $2}'`
   SRVIP=`echo ${STRTMP1} | awk -F: '{print $3}'`
   DBPORT=`echo ${STRTMP1} | awk -F: '{print $4}'`
   SYSTEMPWD=`echo ${STRTMP1} | awk -F: '{print $5}'`
   NODE_NO=`echo ${STRTMP1} | awk -F: '{print $6}'`
   sleep 1
   echo -e "\033[33m""${DBSID}""\033[0m"
   sqlplus -S  [유저명]/${SYSTEMPWD}@${SRVIP}:${DBPORT}/${DBSID} @/home/oracle/dba/ysbae/connection_sql.sql
  done
sleep 1

 

3.connection_sql.sql

DB에서 수행할 sql입니다. 저는 간단하게 v$instance를 조회하여 상태를 확인하였습니다.

vi connection_sql.sql

 set head off
 set timing off
 set echo on
 select upper(instance_name),status,'OK',to_char(sysdate,'YYYY/MM/DD HH24:MI:SS') from v$instance;
 exit

 

수행방법

OS상에서 반복문으로 걸어서 계속 수행되게 하여 모니터링 할 수 있도록 하였습니다.

 while true; do sh connection.sh; sleep 1; done;

 

이상입니다.

반응형

댓글