前言
這篇文章介紹了DBA每天在監控Oracle數據庫方面的職責
檢查實例的可用性
檢查監聽器的可用性
檢查alert日志文件中的錯誤信息
在存放log文件的地方滿以前清空舊的log文件
分析table和index以獲得更好的性能
檢查表空間的使用情況
找出無效的對象
監控用戶和事務
DBA需要的Unix基本知識
基本的UNIX命令
以下是一些常用的Unix命令
ps
grep
mailx
cat
cut
awk
df
以下是DBA如何使用這些命令的一些例子
顯示服務器上的可用實例
$ ps
oracle
oracle
dliu
oracle
oracle
顯示服務器上的可用監聽器
$ ps
(譯者注
oracle
oracle
oracle
oracle
查看Oracle存檔目錄的文件系統使用情況
$ df
/dev/vx/dsk/proddg/oraarch
統計alter
$ cat alert
列出alert
$ grep ORA
ORA
ORA
CRONTAB基本
一個crontab文件中包含有六個字段
分鐘
小時
月中的第幾天
月份
星期幾
Unix命令或者Shell腳本
要編輯一個crontab文件
Crontab
要查看一個crontab文件
Crontab
在上面的例子中
監控數據庫的常用Shell腳本
以下提供的
檢查Oracle實例的可用性
oratab文件中列出了服務器上的所有數據庫
$ cat /var/opt/oracle/oratab
###################################################################
## /var/opt/oracle/oratab ##
###################################################################
oradb
oradb
oradb
oradb
以下的腳本檢查oratab文件中列出的所有數據庫
###################################################################
## ckinstance
ORATAB=/var/opt/oracle/oratab
echo
echo
db=`egrep
pslist=
for i in $db ; do
echo
if (( $? )); then
echo
else
echo
fi
done
使用以下的命令來確認該腳本是可以執行的
$ chmod
$ ls
以下是實例可用性的報表
$ ckinstance
Mon Mar
Oracle Database(s) Status for DBHOST server:
Oracle Instance
Oracle Instance
Oracle Instance
Oracle Instance
檢查Oracle監聽器的可用性
以下有一個類似的腳本檢查Oracle監聽器
#######################################################################
## cklsnr
#######################################################################
#!/bin/ksh
DBALIST=
cd /var/opt/oracle
rm
ps
if [
then
echo
else
echo
TNS_ADMIN=/var/opt/oracle; export TNS_ADMIN
ORACLE_SID=db
ORAENV_ASK=NO; export ORAENV_ASK
PATH=$PATH:/bin:/usr/local/bin; export PATH
LD_LIBRARY_PATH=${ORACLE_HOME}/lib;export LD_LIBRARY_PATH
lsnrctl start mylsnr
fi
檢查Alert日志(ORA
每個腳本所使用的一些環境變量可以放到一個profile中
#######################################################################
## oracle
#######################################################################
EDITOR=vi;export EDITOR ORACLE_BASE=/u
ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/
ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib; export
LD_LIBRARY_PATH TNS_ADMIN=/var/opt/oracle;export
TNS_ADMIN NLS_LANG=american; export
NLS_LANG NLS_DATE_FORMAT=
NLS_DATE_FORMAT ORATAB=/var/opt/oracle/oratab;export
ORATAB PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin:/usr/ccs/bin:/bin:/usr/bin:/usr/sbin:/
sbin:/usr/openwin/bin:/opt/bin:
PATH DBALIST=
DBALIST
以下的腳本首先調用oracle
####################################################################
## ckalertlog
####################################################################
#!/bin/ksh
for SID in `cat $ORACLE_HOME/sidlist`
do
cd $ORACLE_BASE/admin/$SID/bdump
if [
then
mv alert_${SID}
touch alert_${SID}
cat alert_work
grep ORA
fi
if [ `cat alert
then
mailx
fi
rm
rm
done
清除舊的歸檔文件
以下的腳本將會在log文件達到
$ df
Filesystem kbytes used avail capacity Mounted on
/dev/vx/dsk/proddg/archive
From:http://tw.wingwit.com/Article/program/Oracle/201311/17492.html