shell脚本之查看oracle连接数 、删除备库已经应用的归档

1.查看连接数

sqlplus -S '/ as sysdba' << EOF >> /tmp/connect.log
set feedback off
set heading off
set linesize 200
alter session set nls_date_format='yyyymm hh24:mi';
select sysdate from dual;
select inst_id,count(*) from gv\$process group by inst_id order by count(*);
EOF

假定每十分钟执行一次的话,创建crontab如下:

在linux下
*/10 * * * * su - oracle -c "sh /home/oracle/connect.sh " 1>/dev/null 2>&1

在aix下
0,10,20,30,40,50
* * * * su - oracle -c "sh /home/oracle/connect.sh " 1>/dev/null 2>&1

 

2、查看mrp进程信息

for sid in $(ps -ef | grep ora_pmon | grep -v grep  | awk -F'_' '{print $3}')
do
export ORACLE_SID=$sid
sqlplus -S / as sysdba <<EOF >> standby.txt
set verify off feedback off heading off echo off;
set linesize 190 pagesize 190;
select name from v\$database;
select status from v\$managed_standby where process='MRP0';
EOF
done

 

 

 

 

 

3、

. /home/oracle/.profile

if [ $# != 1 ]; then
echo ""Please input ORACLE SID !!!""
exit;
fi
export ORACLE_SID=$1
echo $ORACLE_SID

sqlplus -s '/ as sysdba' << ! > /home/oracle/work/old_arch_${ORACLE_SID}.dat
set feedback off
set heading off
set linesize 200
select name from v\$archived_log where FIRST_TIME < sysdate - 8/24
and APPLIED='YES';
!

>/home/oracle/work/old_arch_${ORACLE_SID}.sh
cat /home/oracle/work/old_arch_${ORACLE_SID}.dat|while read line
do
if [ ""$line"" ];then
if [ -f $line ];then
echo ""rm $line"" >> /home/oracle/work/old_arch_${ORACLE_SID}.sh
fi
fi
done

 

*************************

shell 拆分为如下

*************************

查询的name写入到一个文件当中

sqlplus -s '/ as sysdba' << ! > /tmp/datafile_${ORACLE_SID}.dat
set feedback off
set heading off
set linesize 200
set pagesize 300
select distinct object_type from dba_objects;
!

 

在生成的name上加上rm

cat /tmp/datafile_rac1.dat|while read line
do
echo ""rm $line"" >> /tmp/rm.sh
done

posted @ 2018-09-15 16:12  dayu.liu  阅读(994)  评论(0)    收藏  举报