当前位置:网站首页>Oracle 脚本实现简单的审计功能
Oracle 脚本实现简单的审计功能
2022-08-03 18:19:00 【墨天轮】
前景
为了数据安全,生产环境开数据库审计的话会有很大的消耗,一般不建议开启。于是根据dba_hist_active_sess_history写了个shell 脚本,每天产生一个简单的审计报告。
审计脚本:audit_db.sh
#!/bin/sh export ORACLE_SID=twoexport ORACLE_UNQNAME=twoexport ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=/u01/app/oracle/11.2.0.3/productexport PATH=$ORACLE_HOME/bin:$PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATHexport NLS_LANG=AMERICAN_AMERICA.AL32UTF8export con_user='sqlplus -s / as dba'export au_dir='/u01/report/audit_db'audit_date=`date +%Y-%m-%d -d "1 day ago"`if [ ! -d ${au_dir}/${audit_date} ];then mkdir -p ${au_dir}/${audit_date}firesult=`$con_user <<EOFset colsep','; set echo off; set feedback off; set heading off; set pagesize 0; set linesize 1000; set numwidth 12; set termout off; set timing off; set trimout on; set trimspool on; set trims on; col username format a15col machine format a30col program format a50col sql_opname format a20spool ${au_dir}/${audit_date}/${audit_date}.txt select to_char(h.sample_time, 'yyyy-mm-dd hh24:mi:ss') exec_time, u.username, h.machine, h.program, h.sql_opname from sys.dba_hist_active_sess_history h left join sys.all_users u on u.user_id = h.user_id where h.module is not null and h.sql_opname is not null and to_char(h.sample_time, 'yyyy-mm-dd') = '$audit_date';spool offEOF`result_report=`$con_user <<EOFset colsep','; set echo off; set feedback off; set heading off; set pagesize 0; set linesize 800; set numwidth 12; set termout off; set timing off; set trimout on; set trimspool on; set trims on; col username format a15col machine format a30col program format a50col sql_opname format a20spool ${au_dir}/${audit_date}/${audit_date}.report select u.username, h.machine, h.program, h.sql_opname, count(*) from sys.dba_hist_active_sess_history h left join sys.all_users u on u.user_id = h.user_id where h.module is not null and h.sql_opname is not null and to_char(h.sample_time, 'yyyy-mm-dd') = '$audit_date' group by username, machine, program, h.sql_opname order by 5 desc;spool offEOF`
输出日志:
[[email protected] 2022-08-02]$ cat 2022-08-02.report业务用户 主机名 连接方式 操作类型 操作次数two ,app.tomcat.com ,JDBC Thin Client ,SELECT, 8610two ,app1.tomcat.com ,JDBC Thin Client ,INSERT, 8610
边栏推荐
- Chrome浏览器开发新截图工具,安全浏览器截图方法
- 【Django-Docker】Sqlite3.db读取权限不够-20220803
- Blender script 删除所有幽灵对象
- OSError: [WinError 123] 文件名、目录名或卷标语法不正确
- 一文带你弄懂 CDN 技术的原理
- 如何成为优秀的产品运营?
- AI智能剪辑,仅需2秒一键提取精彩片段
- gcc的学习及 版本太低如何在conda环境下重新进行安装
- Crack:WebKitX ActiveX and WebKitX VHX
- 【Deliberately practice the view of the back tube】deliberately practice
猜你喜欢
随机推荐
MD5是对称加密还是非对称加密,有什么优缺点
fatal error: jni.h: No such file or directory
【HCIP】MPLS实验
使用安全浏览器将网页保存为pdf的方法步骤
Mock模拟数据,并发起get,post请求(保姆级教程,一定能成功)
tree命令:以树的形式列出目录中的文件
Shell:循环语句
Crack: WebKitX ActiveX and WebKitX VHX
有人知道flink sql 使用tableEnv.executeSql执行后,怎么获取到任务运行的
关于vscode安装包下载太慢解决方法
NLP范式新变化:Prompt
LeetCode - 102. 二叉树的层序遍历;110. 平衡二叉树;098. 验证二叉搜索树
flink-sql 客户端 可以设置并行度 吗?断开算子链
三丁基-巯基膦烷「tBuBrettPhos Pd(allyl)」OTf),1798782-17-8
2022/08/02------Ugly number
Gson 学习笔记
六、用户身份认证
智能合约安全——delegatecall (2)
xxl-job 实现email发送警告的代码解析(一行一行代码解读)
多线程 里面 使用AtomicInteger类,保证线程安全









