shell常用指令碼&crontab設定

tom_xieym發表於2012-01-15

shell常用指令碼&crontab設定
root使用者
0,30 * * * * sh /data/run/ntp 1>/data/run/log/ntp.log 2>>/data/run/log/ntp.bad
* * * * * sh /data/run/loadavg 1>/data/run/log/loadavg.log 2>>/data/run/log/loadavg.bad

oracle使用者
15 0 * * * sh /data/run/autodel 1>>/data/run/log/autodel.log 2>>/data/run/log/autodel.bad
20 0 * * * sh /data/run/autoexp 1>/data/run/log/autoexp.log 2>/data/run/log/autoexp.bad
30 0 * * 6 sh /data/run/rmanfull.sh 1>/data/run/log/rmanfull.log 2>/data/run/log/rmanfull.bad
30 7 * * 6 sh /data/run/autostats 1>/data/run/log/autostats.log 2>/data/run/log/autostats.bad

1.同步時間(以下都是touch後,直接加入既可)
#! /bin/sh
/usr/sbin/ntpdate xxx
/sbin/hwclock -w
2.收集負載資訊
# record cpu avg loading .
date >>/data/run/log/loadavg.txt
cat  /proc/loadavg >>/data/run/log/loadavg.txt

3.1.exp備份
----in windows circumstance

@echo off
set year=%date:~10,4%
set month=%date:~4,2%
set day=%date:~7,2%
set mydate=%year%%month%%day%
set hhmmss=%time:~0,2%%time:~3,2%%time:~6,2%
rem if "%hhmmss:~0,1%"==" " set hhmmss=0%time:~1,1%%time:~3,2%%time:~6,2%
rem echo ------------------------------------------------ >> E:\expepd3eco\x.txt
rem echo %mydate%_%hhmmss% >> E:\expepd3eco\x.txt
rem echo ------------------------------------------------ >> E:\expepd3eco\x.txt
echo
set NLS_LANG=AMERICAN_AMERICA.AL32UTF8
exp system/"xxx" file=e:\expdata\eco_%mydate%%hhmmss%.dmp log=E:\expdata\log\eco_%mydate%%hhmmss%.log full=y

3.2 exp
----in Linux circumstance
#!/bin/sh
cd /data/expbak
ORACLE_HOME=/u01/product/oracle;export ORACLE_HOME
ORACLE_SID=xxx;export ORACLE_SID
NLS_LANG=american.AL32UTF8;export NLS_LANG
FILENAME=`date +%Y%m%d%H`
/u01/product/oracle/bin/exp 'system/"xxx"' file='xxx'$FILENAME full=y log=xxx$FILENAME.log

/usr/bin/gzip 'xxx'$FILENAME'.dmp'

find /data/expbak -atime +5 -exec rm -f {} \;

4.1 開機指令碼
----in Linux circumstance(單機)
#!/bin/sh

ORACLE_HOME=/u01/product/oracle;export ORACLE_HOME
ORACLE_SID=xxx;export ORACLE_SID

/u01/product/oracle/bin/sqlplus /nolog <connect / as sysdba;
startup;
exit;
EOF

/u01/product/oracle/bin/lsnrctl <start
exit
EOF

雙機(10G OCFS2)
#!/bin/sh

srvctl start nodeapps -n  ecsrac01
srvctl start nodeapps -n  ecsrac02
srvctl start database -d  ecsdb
emctl  start dbconsole

5.1 關機指令碼
----in Linux circumstance(單機)
#!/bin/sh

/u01/product/oracle/bin/lsnrctl <stop
exit
EOF

ORACLE_HOME=/u01/product/oracle;export ORACLE_HOME
ORACLE_SID=xxx;export ORACLE_SID

/u01/product/oracle/bin/sqlplus /nolog <connect / as sysdba;
alter system switch logfile;
/
/
shutdown immediate;
exit;
EOF

雙機
#!/bin/sh

emctl  stop dbconsole
srvctl stop database -d  ecsdb
srvctl stop nodeapps -n  ecsrac01
srvctl stop nodeapps -n  ecsrac02

6.1 重新編譯無效的包
方法一
----in Linux circumstance
#!/bin/sh

ORACLE_HOME=/u01/product/oracle;export ORACLE_HOME
ORACLE_SID=xxx;export ORACLE_SID

/u01/product/oracle/bin/sqlplus /nolog <connect / as sysdba;
@$ORACLE_HOME/rdbms/admin/utlrp.sql;
exit;
EOF

方法二  --執行計劃的包
#!/bin/sh

ORACLE_HOME=/u01/product/oracle;export ORACLE_HOME
ORACLE_SID=xxx;export ORACLE_SID

/u01/product/oracle/bin/sqlplus /nolog <connect / as sysdba;
drop table plan_table;
@$ORACLE_HOME/rdbms/admin/utlxplan;
@$ORACLE_HOME/rdbms/admin/prvtspao.plb;
@$ORACLE_HOME/rdbms/admin/utlrp.sql;
exit;
EOF

6.2 重新編譯無效的包(加強版)
----in Linux circumstance
#!/bin/sh

ORACLE_HOME=/u01/product/oracle;export ORACLE_HOME
ORACLE_SID=xxx;export ORACLE_SID

/u01/product/oracle/bin/sqlplus /nolog <connect / as sysdba;
drop table plan_table;
@$ORACLE_HOME/rdbms/admin/utlxplan;
@$ORACLE_HOME/rdbms/admin/prvtspao.plb;
@$ORACLE_HOME/rdbms/admin/utlrp.sql;
exit;
EOF

7.1定時刪除日誌的
----in Linux circumstance
#!/bin/bash

find /opt/oracle/admin/smt/bdump/*.trc -mmin +4320 -exec rm -f {} \;

find /opt/oracle/admin/smt/udump/*.trc -mmin +4320 -exec rm -f {} \;

find /opt/oracle/arch1/*.dbf  -mmin  +10080  -exec rm -f {} \;

8.1 rman備份指令碼
第一步 先設定crontab定時跑
第二步
#!/bin/sh

ORACLE_HOME=/opt/oracle/product/9.2.0;export ORACLE_HOME
ORACLE_SID=xxx;export ORACLE_SID

rm -f /data/rmandata/*

echo 'Recovery Manager Start at '`date`'.' >/data/run/log/rman.log
$ORACLE_HOME/bin/rman target / @'/data/run/rmanfull.sql' log /data/run/log/rman.log
echo 'Recovery Manager End at '`date`'.' >>/data/run/log/rman.log
第三步
run{
allocate channel dev1 type disk;
allocate channel dev2 type disk;
allocate channel dev3 type disk;
allocate channel dev4 type disk;
backup  full tag 'dbfull'
format '/data/rmandata/full_%d_%T_%U' database;
sql 'alter system archive log current';
release channel dev1;
release channel dev2;
release channel dev3;
release channel dev4;

allocate channel dev1 type disk;
backup
format '/data/rmandata/ctl_%d_%T_%U' current controlfile;
release channel dev1;
}

9.1 定時收集統計資訊
#!/bin/sh
source /home/oracle/.bash_profile
echo 'start datetime --&gt ' `date`
################################################
sqlplus -S '/as sysdba' < begin
   dbms_stats.gather_schema_stats(ownname=> 'xxx' , estimate_percent=> 15 , cascade=> TRUE );
   dbms_stats.gather_schema_stats(ownname=> 'xxx' , estimate_percent=> 15 , cascade=> TRUE );
   dbms_stats.gather_schema_stats(ownname=> 'xxx' , estimate_percent=> 15 , cascade=> TRUE );
 end;
/
exit
EOFarch1

#################################################
echo 'finish datetime --&gt ' `date`

10.1定時跑awr
第一步
30 0 * * * sh /home/oracle/dba/awr 1>/u01/run/log/autoawr.log 2>/u01/run/log/autoawr.bad
第二步
#!/bin/sh

cd /u01/logbak
rm *.html(方法一)

ORACLE_HOME=/u01/product/oracle;export ORACLE_HOME
ORACLE_SID=xxx;export ORACLE_SID

$ORACLE_HOME/bin/sqlplus /nolog<connect / as sysdba;
@/u01/run/autoawr.sql;
exit
!

find  /u01/logbak/xxx*.html  -mmin  +4320 -exec rm -f {} \; (方法二)

-------------------
待更新。。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25850100/viewspace-714940/,如需轉載,請註明出處,否則將追究法律責任。

相關文章