Oracle中开启一张表的审计
Oracle使用audit_trail参数控制审计是否启用 audit_trail的参数有下面几种: NONE:不开启审计 OS:说明审计信息放在系统汇总,如果是Linux那么由audit_file_dest决定,如果是Windows 那么由事件查看器决定 DB 或 TRUE :表示审计信息存放在数据库里,也就是sys 用户的aud$ 表。 audit_sys_operations参数的含义: false:不审计sys用户,默认不审计 true:审计sys用户 审计范围分为session 和 access两种 session:表示用户登录之后执行的相同SQL只记录一次,其他相同SQL不再记录; access:表示每次执行的SQL都进行审计记录。 详细参考官方文档 http://docs.oracle.com/cd/B19306_01/network.102/b14266/cfgaudit.htm#CIHDICID 1、开启审计参数 SQL>showparameteraudit NAMETYPEVALUE ----------------------------------------------------------------------------- audit_file_deststring/u01/app/oracle/admin/mydb/adump audit_sys_operationsbooleanFALSE audit_syslog_levelstring audit_trailstringNONE SQL>altersystemsetaudit_trail=db,extendedscope=spfile; 2、重启数据库 静态参数,为了使参数生效,需要重启数据库 SQL>shutdownimmediate; Databaseclosed. Databasedismounted. ORACLEinstanceshutdown. SQL>startup ORACLEinstancestarted. TotalSystemGlobalArea599785472bytes FixedSize2085776bytes VariableSize192941168bytes DatabaseBuffers398458880bytes RedoBuffers6299648bytes Databasemounted. DatabaSEOpened. SQL>showparameteraudit NAMETYPEVALUE ----------------------------------------------------------------------------- audit_file_deststring/u01/app/oracle/admin/mydb/adump audit_sys_operationsbooleanFALSE audit_syslog_levelstring audit_trailstringDB,EXTENDED 3、设置对表进行审计 这样每次有用户对表进行操作,那么都会有相应的记录被添加到aud$中,而Oracle为了方便读取数据,创建了视图。 虽然会记录每个用户对表的操作,但是不会记录sys用户的操作,其他所有用户都会做记录。 SQL>conn/assysdba Connected. SQL>auditallonzx.num_tbyaccesswheneversuccessful; Auditsucceeded. SQL>setlinesize200 SQL>select*fromdba_obj_audit_opts; OWNEROBJECT_NAMEOBJECT_TYPEALTAUDCOMDELGRAINDINSLOCRENSELUPDREFEXECREREAWRIFBK ---------------------------------------------------------------------------------------------------------------------------------------------------------------- ZXNUM_TTABLEA/-A/-A/-A/-A/-A/-A/-A/-A/-A/-A/--/--/--/--/--/-A/- 前面列中 A表示access,每次被审计的操作都会记录,比如开启了scott.emp的select审计,那么任何人select这张表都会触发一次审计,并且记录在aud$中。 S表示session,每个会话被审计的操作都记录一次。 使用不同用户对zx.num_t表做不同访问: SQL>connzx/zx Connected. SQL>selectcount(*)fromzx.num_t; COUNT(*) ---------- 0 SQL>insertintozx.num_t(id1)values(1); 1rowcreated. SQL>commit; Commitcomplete. SQL>connscott/tiger Connected. SQL>selectcount(*)fromzx.num_t; COUNT(*) ---------- 1 SQL>deletefromzx.num_t; 1rowdeleted. SQL>commit; Commitcomplete. SQL>insertintozx.num_t(id2)values(2); 1rowcreated. SQL>rollback; Rollbackcomplete. 4、查询审计记录 SQL>altersessionsetnls_date_format='yyyymmddhh24:mi:ss'; Sessionaltered. SQL>setlines200 colOS_USERNAMEfora10 colUSERNAMEfora11 colUSERHOSTfora10 colTERMINALfora10 colTIMESTAMPfora20 colobj_namefora10 colOWNERfora10 colACTION_NAMEfora11 colTRANSACTIONIDfora16 colsql_textfora50 SELECTUSERNAME,USERHOST,TIMESTAMP,OWNER,OBJ_NAME,ACTION_NAME,SQL_TEXT FROMDBA_AUDIT_TRAIL WHEREOBJ_NAME='NUM_T' ORDERBYTIMESTAMP; USERNAMEUSERHOSTTIMESTAMPOWNEROBJ_NAMEACTION_NAMESQL_TEXT -------------------------------------------------------------------------------------------------------------------------- ZXrhel52016110711:57:55ZXNUM_TNOAUDITOBJnoauditallonnum_t ECT ZXrhel52016110712:00:07ZXNUM_TSELECTselectcount(*)fromzx.num_t ZXrhel52016110712:00:21ZXNUM_TINSERTinsertintozx.num_t(id1)values(1) SCOTTrhel52016110712:00:37ZXNUM_TSELECTselectcount(*)fromzx.num_t SCOTTrhel52016110712:00:45ZXNUM_TDELETEdeletefromzx.num_t SCOTTrhel52016110712:01:27ZXNUM_TINSERTinsertintozx.num_t(id2)values(2) 6rowsselected. 5、取消审计 SQL>noauditallonnum_t; Noauditsucceeded. 6、清空aud$ 这张系统表是可以使用TRUNCATE命令截断的。把它删掉之后那么视图中的记录也就相应消失了。 SQL>truncatetableaud$; SQL>SELECT*FROMDBA_FGA_AUDIT_TRAIL; norowsselected 更多详细信息参考官方文档 http://docs.oracle.com/cd/B19306_01/network.102/b14266/cfgaudit.htm#BABCFIHB (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby – Rake不知道如何构建任务:default或minitest
- Cocos2d-x显示中文与字幕滚动--之游戏开发《赵云要格斗》(
- ruby-on-rails – 在使用带有Rails / Spork / RSpec的datab
- 时间正则表达式
- flex – 如何在Flash中模拟Photoshop CS4平滑字体渲染?
- 无法使用Xcode 6 GM Seed提交给AppStore
- ruby-on-rails-3 – Rails3 / jQuery UI Datepicker – 保存
- XML入门
- 解决使用vue.js路由后失效的问题
- ios – Xcode 5布局错误 – 标签的错位视图框架在运行时会有