Oracle audit_sys_operations参数详解

 

1 定义

audit_sys_operations审计SYSDBA的活动。默认值是false。相关的审计信息不会记录在aud$中,因为有可能此时数据库还未启动,只能记录在操作系统层面的文件中。默认为false,不意味着没有审计信息,像conn / as sysdba这样的操作仍然会被记录。audit_file_dest参数指定的审计信息的文件夹。

 

将audit_sys_operations设置成true后,那么做为sysdba或sysoper连接数据库的用户所发布的每条语句都会被写入操作系统的审计中,从而能够给出DBA所进行操作的完整记录。

2 实验

audit_sys_operations设置成true。要重启数据库。

2.1 Select操作

SQL> select * from scott.emp;                       

 

[oracle@cent4 adump]$ ll -t

总用量 572

-rw-r-----  1 oracle oinstall  1935 10月 26 21:39 ora_3600.aud

-rw-r-----  1 oracle oinstall 51892 10月 26 21:38 ora_3821.aud

……

[oracle@cent4 adump]$ cat ora_3600.aud

……

Wed Oct 26 21:39:04 2011

ACTION : 'select * from scott.emp'

DATABASE USER: '/'

PRIVILEGE : SYSDBA

CLIENT USER: oracle

CLIENT TERMINAL: pts/1

STATUS: 0

 

2.2 show parameter操作

SQL> show parameter audit

NAME                          TYPE        VALUE

----------------------------- ----------- ---------------------------------

audit_file_dest               string      /u01/app/oracle/admin/ltest/adump

audit_sys_operations          Boolean     TRUE

audit_syslog_level            string

audit_trail                   string      DB, EXTENDED

 

……

Wed Oct 26 21:41:26 2011

ACTION : 'SELECT NAME NAME_COL_PLUS_SHOW_PARAM,DECODE(TYPE,1,'boolean',2,'string',3,'integer',4,'file',5,'number',        6,'big integer', 'unknown') TYPE,DISPLAY_VALUE VALUE_COL_PLUS_SHOW_PARAM FROM V$PARAMETER WHERE UPPER(NAME) LIKE UPPER('%audit%') ORDER BY NAME_COL_PLUS_SHOW_PARAM,ROWNUM'

DATABASE USER: '/'

PRIVILEGE : SYSDBA

CLIENT USER: oracle

CLIENT TERMINAL: pts/1

STATUS: 0

 

可以从trace中看到,show parameter audit语句而是显示其原始语句,如下:

 

select name name_col_plus_show_param,

       decode(type,

              1,

              'boolean',

              2,

              'string',

              3,

              'integer',

              4,

              'file',

              5,

              'number',

              6,

              'big integer',

              'unknown') type,

       display_value value_col_plus_show_param

  from v$parameter

 where upper(name) like upper('%audit%')

 order by name_col_plus_show_param, rownum;


  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据您提供的Python函数,我为您编写了一个MySQL存储过程的示例,但是需要根据您的具体需求进行修改和调整。这个存储过程的功能是向数据表添加一个名为audit_src_sys_name的列,同时向这个列填充相应的值。 ``` CREATE PROCEDURE add_audit_columns( IN df_column_names VARCHAR(255), IN df_values VARCHAR(255), IN write_params TEXT, OUT audit_dataframe TEXT ) BEGIN DECLARE audit_source_sys_name VARCHAR(255); DECLARE column_present BOOLEAN; DECLARE sql_stmt TEXT; SET audit_source_sys_name = JSON_EXTRACT(write_params, '$.audit_src_sys_name'); IF audit_source_sys_name IS NULL OR audit_source_sys_name = '' THEN SET audit_source_sys_name = JSON_EXTRACT(write_params, '$.table_full_name'); END IF; SET column_present = FALSE; SET sql_stmt = CONCAT('SELECT COUNT(*) INTO @exists FROM information_schema.columns WHERE table_name = \'', df_column_names, '\' AND column_name = \'audit_src_sys_name\''); PREPARE stmt FROM sql_stmt; EXECUTE stmt; DEALLOCATE PREPARE stmt; IF @exists > 0 THEN SET column_present = TRUE; SET sql_stmt = CONCAT('UPDATE ', df_column_names, ' SET audit_src_sys_name = \'', audit_source_sys_name, '\''); ELSE SET sql_stmt = CONCAT('ALTER TABLE ', df_column_names, ' ADD COLUMN audit_src_sys_name VARCHAR(255) DEFAULT NULL AFTER ', df_values); PREPARE stmt FROM sql_stmt; EXECUTE stmt; DEALLOCATE PREPARE stmt; END IF; IF column_present THEN SET audit_dataframe = CONCAT('Audit source system name column is present. Adding present layer details....\n'); SET sql_stmt = CONCAT('UPDATE ', df_column_names, ' SET audit_src_sys_name = CONCAT(audit_src_sys_name, \', \', \'', audit_source_sys_name, '\')'); ELSE SET audit_dataframe = CONCAT('Adding column - audit_src_sys_name.\n'); SET sql_stmt = CONCAT('UPDATE ', df_column_names, ' SET audit_src_sys_name = \'', audit_source_sys_name, '\''); END IF; PREPARE stmt FROM sql_stmt; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET audit_dataframe = CONCAT(audit_dataframe, 'Tables is updated.\n'); END ``` 这个存储过程的输入参数包括数据表的列名、值、以及一个JSON格式的字符串write_params,其包含各种写入参数信息。输出参数是一个JSON格式的字符串audit_dataframe,包含存储过程的执行结果信息。请注意,这只是一个示例,您需要根据实际情况进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值