oracle表ddl审计
============= 表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审计的更多相关文章
- 抓取oracle建表语句及获取建表ddl语句
抓取oracle建表语句及获取建表ddl语句 1.抓取代码如下: 1.1.产生表的语法资料 DECLARE-- v_notPartTable VARCHAR2(1000):= '&2'; -- ...
- 数据库DDL审计
一.为什么需要数据库DDL审计? DDL在生产系统中扮演非常重要的作用. 1)首先从业务角度来说,DDL可能意味着表结构变更,意味着新的版本即将发布,是个重要的时刻. 2)其次从运维角度来说,DDL尤 ...
- 【转】Oracle 表空间与数据文件
--============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或 ...
- oracle中ddl的管理
因为某些原因,Oracle的ddl权限不能开放给用户. 之前采取的方式是,创建用户的时候不为其赋予create table 的权限. 但是在使用过程中发现该用户还是拥有alter table的权限. ...
- Oracle 表空间与数据文件
-============================== --Oracle 表空间与数据文件 --============================== /* 一.概念 表空间:是一个或多 ...
- Oracle表结构转Mysql表结构
1. fnc_table_to_mysql 主体程序 create or replace function fnc_table_to_mysql ( i_owner in string, i_tabl ...
- oracle表分区以及普表转分区表(转)
概述 Oracle的表分区功能通过改善可管理性.性能和可用性,从而为各式应用程序带来了极大的好处.通常,分区可以使某些查询以及维护操作的性能大大提高.此外,分区还可以极大简化常见的管理任务,分区是构建 ...
- oracle表分区、表分析及oracle数据泵文件导入导出开心版
1.先说oracle表分区是什么吧,这样吧我们来举个桃子,栗子太小,我们就不举了,我们来举个桃子. 你有500万份文件,你要把他存在磁盘上,好嘛,我们就一个文件夹,500万分文件在那儿杵着,我们想找到 ...
- Oracle 表连接
Oracle 表之间的连接分为三种: 1. 内连接(自然连接) 2. 外连接 (1)左外连接 (左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不 ...
随机推荐
- Linux文件共享服务之Samba
目录 Samba Samba的配置 Samba Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ...
- POJ2349二分+并查集,类似最小树的贪心
题意: 给你n个点,你的任务是构建一颗通讯树,然后给你一个s表示可以选出来s个点两两通讯不花钱,就是费用是0,其他的费用就是两点的距离,有个要求就是其他的费用中最大的那个最小. 思路: ...
- Windows PR提权
目录 提权利用的漏洞 PR提权 提权利用的漏洞 Microsoft Windows RPCSS服务隔离本地权限提升漏洞 RPCSS服务没有正确地隔离 NetworkService 或 LocalSer ...
- Portswigger web security academy:Cross-site request forgery (CSRF)
Portswigger web security academy:Cross-site request forgery (CSRF) 目录 Portswigger web security acade ...
- 每天一道面试题LeetCode 01 -- 两数之和
Two Sum 两数之和 Given an array of integers, find two numbers such that they add up to a specific target ...
- java面试一日一题:如何判断一个对象是否为垃圾对象
问题:请讲下在java中如何判断一个对象是否为垃圾 分析:该问题主要考察对java中的垃圾回收,用什么方式去识别一个对象是垃圾: 回答要点: 主要从以下几点去考虑, 1.GC回收的是什么,回收发生在内 ...
- 10.qml-组件、Loader、Component介绍
1.组件介绍 一个组件通常由一个qml文件定义(单独文件定义组件), 实际也可以在qml里面通过Component对象来嵌入式定义组件 (4小节讲解). Component对象封装的内容默认不会显示, ...
- 测试中常用的链接URL----方便自己查找
1.TesterHome:https://testerhome.com/ 2.selenium的操作手册:https://selenium-python.readthedocs.io/ 3.
- 技能Get·Windows10将任何格式文件固定到开始屏幕
阅文时长 | 0.6分钟 字数统计 | 960.8字符 主要内容 | 1.引言&背景 2.将文件加入到应用列表中 3.修改注册表法 4.声明与参考资料 『技能Get·Windows10将任何格 ...
- Powershell阻止确认
要阻止弹出确认提示,需要设置-Confirm为false, new-VM -Name $hostname -Template $template -VMHost 10.11.31.5 -OSCusto ...