============= 表ddl 审计==============

1、table信息

SQL> select * from test;

ID CUST_CREDIT_LIMIT TIME              PRICE NAME
--- ----------------- ------------ ---------- ----------
23 12 19-NOV-20 ab
29 12 20-NOV-20 abc
10 12 20-NOV-20 abc
50 12 20-NOV-20 abc
40 12 20-NOV-20 abc ============= 方式一 开启全库审计 =============
优点:简单明了,审计信息详细
缺点:增加资源消耗,审计表数据增量大
需要定时对审计表做备份清理 alter system set audit_sys_operations=TRUE scope=spfile;
alter system set audit_trail=DB_EXTENDED scope=spfile; ---DB_EXTENDED sql语句记录 SQL> show parameter audit; NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string /oracle/app/oracle/admin/test/
adump
audit_sys_operations boolean TRUE
audit_syslog_level string
audit_trail string DB_EXTENDED == 指定表审计
SQL> AUDIT UPDATE,DELETE,INSERT ON TEST.TEST by access; == 表更改数据 ==
-->crt工具连接
SQL> insert into test values (10,12,'24-APR-21',120,'ab');
SQL> update test set ID=24 where id=23;
SQL> delete from test where id=24;
-->PLSQL连接
update test set id=24 where id=29; ==== 查询审计信息 ==
set lines 300
col EXTENDED_TIMESTAMP for a40
col SQL_TEXT for a60
col os_user for a18
col db_user for a12
col USERHOST for a18
set pagesize 1000
select to_char(EXTENDED_TIMESTAMP,'yyyy-mm-dd hh24:mi:ss'),SESSION_ID,os_user,DB_USER,USERHOST,SQL_TEXT
from DBA_COMMON_AUDIT_TRAIL ORDER BY EXTENDED_TIMESTAMP ASC;
--输出: TO_CHAR(EXTENDED_TI SESSION_ID OS_USER DB_USER USERHOST SQL_TEXT
------------------- ---------- ------------------ ------------ ------------------ ------------------------------------------------------
2021-04-24 20:28:15 4460757 oracle TEST test insert into test values (10,12,'24-APR-21',120,'ab')
2021-04-24 20:32:04 4460757 oracle TEST test update test set ID=24 where id=23
2021-04-24 20:35:36 4460757 oracle TEST test delete from test where id=24
2021-04-24 20:44:29 4460759 Administrator TEST WorkGroup\LZ-PC
2021-04-24 20:44:29 4460760 Administrator TEST WorkGroup\LZ-PC
2021-04-24 20:44:33 4460760 Administrator TEST WorkGroup\LZ-PC
2021-04-24 20:44:51 4460761 Administrator TEST WorkGroup\LZ-PC
2021-04-24 20:45:45 4460761 Administrator TEST WorkGroup\LZ-PC update test set id=24 where id=29 ================ 方式二、创建trigger审计 ============
tips:其他user创建trigger
优点:占用资源少,用户和空间可以自定义
缺点:没有全库审计记录的表审计信息详细 -->创建审计表
CREATE TABLE TEST.trig_sql
( "LT" DATE,
"SID" NUMBER,
"SERIAL#" NUMBER,
"USERNAME" VARCHAR2(30),
"OSUSER" VARCHAR2(64),
"MACHINE" VARCHAR2(32),
"TERMINAL" VARCHAR2(16),
"PROGRAM" VARCHAR2(64),
"SQLTEXT" VARCHAR2(2000),
"STATUS" VARCHAR2(30),
"CLIENT_IP" VARCHAR2(60)
); -->sys创建审计trigger 可以创建审计用户,trigger创建在指定用户下
create or replace trigger pri_test
after insert or update or delete on test.test
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
IF inserting THEN
INSERT INTO TEST.trig_sql
select sysdate,s.SID, s.SERIAL#, s.USERNAME, s.OSUSER,
s.MACHINE, s.TERMINAL, s.PROGRAM, q.sql_text line,
'INSERT',
sys_context('userenv','ip_address')
from v$sql q, v$session s
where s.audsid=(select userenv('SESSIONID') from dual)
and s.prev_sql_addr=q.address
AND s.PREV_HASH_VALUE = q.hash_value;
COMMIT;
ELSIF deleting then
INSERT INTO TEST.trig_sql
select sysdate,s.SID, s.SERIAL#, s.USERNAME, s.OSUSER,
s.MACHINE, s.TERMINAL, s.PROGRAM, q.sql_text line,
'DELETE',
sys_context('userenv','ip_address')
from v$sql q, v$session s
where s.audsid=(select userenv('SESSIONID') from dual)
and s.prev_sql_addr=q.address
AND s.PREV_HASH_VALUE = q.hash_value;
COMMIT;
ELSIF updating then
INSERT INTO TEST.trig_sql
select sysdate,s.SID, s.SERIAL#, s.USERNAME, s.OSUSER,
s.MACHINE, s.TERMINAL, s.PROGRAM, q.sql_text line,
'UPDATE',
sys_context('userenv','ip_address')
from v$sql q, v$session s
where s.audsid=(select userenv('SESSIONID') from dual)
and s.prev_sql_addr=q.address
AND s.PREV_HASH_VALUE = q.hash_value;
COMMIT;
END IF;
END;
/ -->表更改数据
CRT工具连接
SQL> insert into test values (66,22,'24-APR-21',666,'ab'); PLSQL连接
update test.test set id=24 where id=50; -->查询审计表信息
col USERNAME for a12
col OSUSER for a14
col MACHINE for a20
col SQLTEXT for a70
col status for a12
col CLIENT_IP for a20
select SID,USERNAME,OSUSER,MACHINE,SQLTEXT,STATUS,CLIENT_IP from TEST.trig_sql; SID USERNAME OSUSER MACHINE SQLTEXT STATUS CLIENT_IP
---- ------------ -------------- -------------------- ---------------------------------------------------------------------- ------------ --------------------
1 SYS oracle test select SID,USERNAME,OSUSER,MACHINE,SQLTEXT,STATUS from TEST.trig_sql UPDATE 192.168.154.1
38 SYS Administrator WorkGroup\LZ-PC begin :id := sys.dbms_transaction.local_transaction_id; end; UPDATE 192.168.154.1
39 SYS Administrator WorkGroup\LZ-PC begin :id := sys.dbms_transaction.local_transaction_id; end; UPDATE 192.168.154.1
40 SYS Administrator WorkGroup\LZ-PC select value from v$sesstat where sid = :sid order by statistic# UPDATE 192.168.154.1
40 SYS Administrator WorkGroup\LZ-PC select value from v$sesstat where sid = :sid order by statistic# UPDATE 192.168.154.1
41 SYS Administrator WorkGroup\LZ-PC begin :id := sys.dbms_transaction.local_transaction_id; end; UPDATE 192.168.154.1
41 TEST Administrator WorkGroup\LZ-PC begin :id := sys.dbms_transaction.local_transaction_id; end; UPDATE 192.168.154.1
37 TEST oracle test SELECT DECODE('A','A','1','2') FROM DUAL INSERT

oracle表ddl审计的更多相关文章

  1. 抓取oracle建表语句及获取建表ddl语句

    抓取oracle建表语句及获取建表ddl语句 1.抓取代码如下: 1.1.产生表的语法资料 DECLARE-- v_notPartTable VARCHAR2(1000):= '&2'; -- ...

  2. 数据库DDL审计

    一.为什么需要数据库DDL审计? DDL在生产系统中扮演非常重要的作用. 1)首先从业务角度来说,DDL可能意味着表结构变更,意味着新的版本即将发布,是个重要的时刻. 2)其次从运维角度来说,DDL尤 ...

  3. 【转】Oracle 表空间与数据文件

    --============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或 ...

  4. oracle中ddl的管理

    因为某些原因,Oracle的ddl权限不能开放给用户. 之前采取的方式是,创建用户的时候不为其赋予create table 的权限. 但是在使用过程中发现该用户还是拥有alter table的权限. ...

  5. Oracle 表空间与数据文件

    -============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或多 ...

  6. Oracle表结构转Mysql表结构

    1. fnc_table_to_mysql 主体程序 create or replace function fnc_table_to_mysql ( i_owner in string, i_tabl ...

  7. oracle表分区以及普表转分区表(转)

    概述 Oracle的表分区功能通过改善可管理性.性能和可用性,从而为各式应用程序带来了极大的好处.通常,分区可以使某些查询以及维护操作的性能大大提高.此外,分区还可以极大简化常见的管理任务,分区是构建 ...

  8. oracle表分区、表分析及oracle数据泵文件导入导出开心版

    1.先说oracle表分区是什么吧,这样吧我们来举个桃子,栗子太小,我们就不举了,我们来举个桃子. 你有500万份文件,你要把他存在磁盘上,好嘛,我们就一个文件夹,500万分文件在那儿杵着,我们想找到 ...

  9. Oracle 表连接

    Oracle 表之间的连接分为三种: 1. 内连接(自然连接) 2. 外连接 (1)左外连接 (左边的表不加限制)      (2)右外连接(右边的表不加限制)      (3)全外连接(左右两表都不 ...

随机推荐

  1. NetBIOS名称欺骗和LLMNR欺骗

    目录 LLMNR和NetBios 攻击原理 Responder 攻击过程 LLMNR和NetBios 什么是LLMNR和NetBIOS名称服务器广播? 当DNS名称服务器请求失败时,Microsoft ...

  2. 2021.02.21cf补题

    B. National Project 题意:总长度为n的公路进行维修,天气是有规律性的,连续g天的好天气,连续b天的坏天气,必须在好天气进行维护,问至少维护n的一半,那么至少需要多少天 思路:必须是 ...

  3. Redis 存储对象信息是用 Hash 还是 String

    Redis 内部使用一个 RedisObject 对象来表示所有的 key 和 value,RedisObject 中的 type,则是代表一个 value 对象具体是何种数据类型,它包含字符串(St ...

  4. Spring循环依赖问题的解决

    循环依赖问题 一个bean的创建分为如下步骤: 当创建一个简单对象的时候,过程如下: 先从单例池中获取bean,发现无 a 创建 a 的实例 为 a 赋值 把 a 放到单例池中 当创建一个对象并且其中 ...

  5. 数据流分析软件SQLFlow的高阶模式Job任务介绍

    SQLFlow是一个可视化的在线处理SQL对象依赖关系的工具,只需要上传你的SQL脚本,它可以自动分析SQL里的数据对象,包括database.schema.table.view.column.pro ...

  6. 24.Qt Quick QML-Canvas和Context2D详解

    1.Canvas介绍Canvas是一个允许绘制直线和曲线.简单和复杂的形状.图形和引用的图形图像.它还可以添加文本.颜色.阴影.渐变和图案,并执行低级别像素操作.Canvas输出可以另存为图像文件或序 ...

  7. JEP 尝鲜系列 3 - 使用虚线程进行同步网络 IO 的不阻塞原理

    相关 JEP: JEP 353 Reimplement the Legacy Socket API JEP 373 Reimplement the Legacy DatagramSocket API ...

  8. 查看当前目录下文件个数: $find ./ | wc -l

    2.1. 创建和删除 创建:mkdir 删除:rm 删除非空目录:rm -rf file目录 删除日志 rm *log (等价: $find ./ -name "*log" -ex ...

  9. DOCKER学习_013:Dockerfile配置指令ENTRYPOINT详解

    前面已经介绍了一些Dockerfile的一些指令,对于ENTRYPOINT和CMD也有介绍实验 一 ENTRYPOINT和CMD配置使用 ENTRYPOINT相当于CMD,是配置容器后的一个指令,但是 ...

  10. LTC4020锂电池充电模块开发记录

    前期不断的查找手册 翻译LTC4020的英文手册 同时在论坛上找帖子 参照比较多的帖子如下: http://adi.eefocus.com/module/forum/forum.php?mod=vie ...