背景:
单节点DG数据库准备迁移,要开启登录审计确认所有使用数据库的业务系统,数据库的audit_trail是OS。由于业务不能中断(单节点的锅)无法修改audit_trail,只能从audit file中汇总登录信息了
思路:
把数据库的其他审计都关掉,只留下登录审计,通过cat审计文件grep出登录信息,过滤出有用的信息。最后把审计信息按schema分类,每个schema一个文件
脚本:
[oracle@xxx scripts]$ more collect_audit.sh
source ~/.bash_profile
find /home/audit/ -mtime 4 -type f |xargs ls -lrt|awk '{print $9}' > /home/oracle/scripts/audit_log.lst
LOG_FILE=/home/oracle/scripts/audit_log.lst
while read line
do
cat $line|grep -E "TERMINAL"|grep -E "SESSIONID"|grep -E "COMMENT$TEXT" >> /home/oracle/scripts/audit_connect.txt
done < $LOG_FILE
cat /home/oracle/scripts/audit_connect.txt|awk '{print $8}'|sort|uniq|sed 's/\"//g' |while read line
do
FILE_NAME=/home/oracle/scripts/audit_detail_$line.txt
if [ -f $FILE_NAME ]; then
cat /home/oracle/scripts/audit_connect.txt|grep -E "$line" > $FILE_NAME
else
touch $FILE_NAME
cat /home/oracle/scripts/audit_connect.txt|grep -E "$line" > $FILE_NAME
fi
done