这一篇正规的DBA看到肯定会呲之以鼻,但对于没有用过oracle的系统运维来说,就是必须知道的事情了。
公司的 Oracle 实例有两台数据库,定时用rman备份,但是没有自动清理机制 ,过一阵子磁盘就会超过 80% 告警,需要手动清理,烦不胜烦。
凡是要手动做三次的事情必须自动化处理,启荣大师如是说,照办就是。
1cat del_log.sh
2
3#!/bin/bash
4
5source /home/oracle/.bash_profile
6
7rman target / << EOF
8delete noprompt archivelog until time 'sysdate-7';
9exit;
10EOF
很简单吧。上面引用的 .bash_profile 内容如下:
1# .bash_profile
2
3# Get the aliases and functions
4if [ -f ~/.bashrc ]; then
5 . ~/.bashrc
6fi
7
8# User specific environment and startup programs
9
10PATH=$PATH:$HOME/.local/bin:$HOME/bin
11export PATH
12export ORACLE_BASE=/data/u01/app/oracle
13export ORACLE_HOME=/data/u01/app/oracle/product/18.3.0/dbhome_1
14export ORACLE_SID=oradb
15export PATH=/usr/sbin:$PATH
16export PATH=$ORACLE_HOME/bin:$PATH:/usr/local/bin
17export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/rdbms/lib
18export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
19export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
20export EDITOR=vi
21umask 022
这个 del_log.sh 的脚本放进 oracle 用户的 crontab 里执行就好
10 3 * * * /usr/local/bin/del_log.sh