2023年8月1日发(作者:)

oracle操作⽇志之审计select操作中⾃带的redo⽇志中包含insert,update,delete操作。但是不包含select操作。那如何查询到select的历史操作记录呢?从⽹上找到了⼏种⽅法:1、从交换机中进⾏配置来捕获相关的操作记录(已实现)这种⽅法已经实现,对交换机进⾏配置⼝和观察⼝,数据通过时都会复制⼀份传到观察⼝。现在希望能从数据库本地获取操作记录。2、Logminer⼯具查看oracle⾃⾝,不过审计select相关操作好像还需要进⾏别的配置(待调研,⽬前没找到配制⽅法),⽽且好像因为操作问题,查看到的⽇志内容都不是实际操作内容。3、细粒度审计FGA(待调研)4、配置oracle⾃⾝的audit//以下内容参考⾃⽹络,但是也是我实际操作过程和结果①查看审计功能是否开启(本机已经开启,如果audit_sys_operations值为FALSE就是没开审计)123sqlplus /nologSQL> CONN /AS SYSDBASQL> show parameter auditNAME TYPE VALUE------------------------------------ ----------- ------- audit_file_dest string F:APPADMINISTRATORADMINORCLADUMPaudit_sys_operations boolean TRUE audit_trail string DB_EXTENDED如果没有使⽤下⾯语句更改:12SQL> alter system set audit_sys_operations=TRUE scope=spfile;SQL> alter system set audit_trail=db_extended scope=spfile;注意audit_trail要为DB_EXTENDED才记录执⾏的具体语句…②、重启实例12SQL> shutdown immediate;SQL> startup③、针对某表的DML审计(错误的也记录)1SQL> AUDIT UPDATE,DELETE,INSERT ON T_TEST by access;④、对该表做各种DML操作⽤dpi⽤户登录123456SQL> conn dpi/dpiSQL> create table t_test as select * from emp;

SQL> update t_test set emp1='111'; * 第 1 ⾏出现错误: ORA-00904: "EMP1": 标识符⽆效

SQL> delete from t_test where rownum=1;已删除 1 ⾏。SQL> commit;⑤、查询审计信息1SQL> select EXTENDED_TIMESTAMP,SESSION_ID,SQL_TEXT from DBA_COMMON_AUDIT_TRAIL ORDER BY EXTENDED_TIMESTAMP DESC或者1SQL> select EXTENDED_TIMESTAMP,SESSION_ID,SQL_TEXT from DBA_COMMON_AUDIT_TRAIL where OBJECT_NAME='CLASS_INFO3' and(执⾏以上操作后,我得到的结果和以下不同,虽然执⾏了不同的操作,但是审计记录只有select操作)—结果:SQL> / EXTENDED_TIMESTAMP SESSION_ID SQL_TEXT14-8⽉ -12 04.14.45.187000 下午 +08:00 190125 t_test set emp1=‘111’14-8⽉ -12 04.26.02.968000 下午 +08:00 190125 delete from t_test where rownum=1以下是我得到的结果:SQL> select SQL_TEXT from DBA_COMMON_AUDIT_TRAIL whereOBJECT_NAME=‘CLASS_INFO3’ ;SQL_TEXTSELECT * FROM CLASS_INFO3SELECT * FROM CLASS_INFO3SELECT * FROM CLASS_INFO3注意:审计⼀般只⽤于对普通⽤户操作,⼀般不审计SYS⽤户对于windows系统,对sys⽤户的审计信息并不存在AUDIT_FILE_DEST参数指定的⽬录⾥,⽽是在windows的事件管理器中。

2023年8月1日发(作者:)

oracle操作⽇志之审计select操作中⾃带的redo⽇志中包含insert,update,delete操作。但是不包含select操作。那如何查询到select的历史操作记录呢?从⽹上找到了⼏种⽅法:1、从交换机中进⾏配置来捕获相关的操作记录(已实现)这种⽅法已经实现,对交换机进⾏配置⼝和观察⼝,数据通过时都会复制⼀份传到观察⼝。现在希望能从数据库本地获取操作记录。2、Logminer⼯具查看oracle⾃⾝,不过审计select相关操作好像还需要进⾏别的配置(待调研,⽬前没找到配制⽅法),⽽且好像因为操作问题,查看到的⽇志内容都不是实际操作内容。3、细粒度审计FGA(待调研)4、配置oracle⾃⾝的audit//以下内容参考⾃⽹络,但是也是我实际操作过程和结果①查看审计功能是否开启(本机已经开启,如果audit_sys_operations值为FALSE就是没开审计)123sqlplus /nologSQL> CONN /AS SYSDBASQL> show parameter auditNAME TYPE VALUE------------------------------------ ----------- ------- audit_file_dest string F:APPADMINISTRATORADMINORCLADUMPaudit_sys_operations boolean TRUE audit_trail string DB_EXTENDED如果没有使⽤下⾯语句更改:12SQL> alter system set audit_sys_operations=TRUE scope=spfile;SQL> alter system set audit_trail=db_extended scope=spfile;注意audit_trail要为DB_EXTENDED才记录执⾏的具体语句…②、重启实例12SQL> shutdown immediate;SQL> startup③、针对某表的DML审计(错误的也记录)1SQL> AUDIT UPDATE,DELETE,INSERT ON T_TEST by access;④、对该表做各种DML操作⽤dpi⽤户登录123456SQL> conn dpi/dpiSQL> create table t_test as select * from emp;

SQL> update t_test set emp1='111'; * 第 1 ⾏出现错误: ORA-00904: "EMP1": 标识符⽆效

SQL> delete from t_test where rownum=1;已删除 1 ⾏。SQL> commit;⑤、查询审计信息1SQL> select EXTENDED_TIMESTAMP,SESSION_ID,SQL_TEXT from DBA_COMMON_AUDIT_TRAIL ORDER BY EXTENDED_TIMESTAMP DESC或者1SQL> select EXTENDED_TIMESTAMP,SESSION_ID,SQL_TEXT from DBA_COMMON_AUDIT_TRAIL where OBJECT_NAME='CLASS_INFO3' and(执⾏以上操作后,我得到的结果和以下不同,虽然执⾏了不同的操作,但是审计记录只有select操作)—结果:SQL> / EXTENDED_TIMESTAMP SESSION_ID SQL_TEXT14-8⽉ -12 04.14.45.187000 下午 +08:00 190125 t_test set emp1=‘111’14-8⽉ -12 04.26.02.968000 下午 +08:00 190125 delete from t_test where rownum=1以下是我得到的结果:SQL> select SQL_TEXT from DBA_COMMON_AUDIT_TRAIL whereOBJECT_NAME=‘CLASS_INFO3’ ;SQL_TEXTSELECT * FROM CLASS_INFO3SELECT * FROM CLASS_INFO3SELECT * FROM CLASS_INFO3注意:审计⼀般只⽤于对普通⽤户操作,⼀般不审计SYS⽤户对于windows系统,对sys⽤户的审计信息并不存在AUDIT_FILE_DEST参数指定的⽬录⾥,⽽是在windows的事件管理器中。