oracle一些常见的问题
- 对于权限审计和大部分语句,by session无效,无论指定by session/by access还是不指定,审计都自动为by access。
- 审计的语句级可以指定ALL,但是ALL只包括大部分语句,它不包括下面这些语句。
ALTER SEQUENCE, ALTER TABLE, COMMENT TABLE, DELETE TABLE, EXECUTE PROCEDURE, GRANT DIRECTORY, GRANT PROCEDURE, GRANT SEQUENCE, GRANT TABLE, GRANT TYPE, INSERT TABLE, LOCK TABLE, SELECT SEQUENCE, SELECT TABLE, UPDATE TABLE
- 对于语句和权限审计,生效从执行语句后下一个登陆用户开始,当前的所有session不受影响。而对象的审计,则从审计语句开始后对当前所有的用户生效。
- 可以使用NOAUDIT ALL、NOAUDIT ALL PRIVILEGE取消所有的语句、权限的审计,但是如果在审计的时候指定了用户,则NOAUDIT ALL或NOAUDIT ALL PRIVILEGE的时候,不会取消这些明确用户的审计,必须在NOAUDIT的时候也明确的指出相应的用户。
例1.只有少数语句审计可以设置BY SESSION,其他的语句审计和所有权限审计都只能设置为BY ACCESS。
SQL> audit create table;
审计已成功。
SQL> audit create any table by session;
审计已成功。
SQL> audit create view by access;
审计已成功。
SQL> select user_name, privilege, success, failure from dba_priv_audit_opts;
USER_NAME PRIVILEGE SUCCESS FAILURE
-------------------- ---------------------------- ---------- --------
CREATE TABLE BY ACCESS BY ACCESS
CREATE ANY TABLE BY ACCESS BY ACCESS
CREATE VIEW BY ACCESS BY ACCESS
SQL> NOAUDIT ALL PRIVILEGE;
审计未成功。
SQL> AUDIT TABLE;
审计已成功。
SQL> AUDIT VIEW BY SESSION;
审计已成功。
SQL> AUDIT TRIGGER BY ACCESS;
审计已成功。
SQL> SELECT USER_NAME, AUDIT_OPTION, SUCCESS, FAILURE FROM DBA_STMT_AUDIT_OPTS;
USER_NAME AUDIT_OPTION SUCCESS FAILURE
----------------------- ----------------------- ---------- ----------
TRIGGER BY ACCESS BY ACCESS
TABLE BY ACCESS BY ACCESS
VIEW BY ACCESS BY ACCESS
SQL> AUDIT LOCK TABLE BY SESSION;
审计已成功。
SQL> SELECT USER_NAME, AUDIT_OPTION, SUCCESS, FAILURE FROM DBA_STMT_AUDIT_OPTS;
USER_NAME AUDIT_OPTION SUCCESS FAILURE
----------------------- ----------------------- ---------- ----------
TRIGGER BY ACCESS BY ACCESS
TABLE BY ACCESS BY ACCESS
VIEW BY ACCESS BY ACCESS
LOCK TABLE BY SESSION BY SESSION
通过测试,我们发现对于大部分的语句和权限,只能设置为BY ACCESS。
例2.接着上面的例子
我们取消对所有语句的审计,但是发现对于LOCK TABLE无效
SQL> NOAUDIT ALL;
审计未成功。
SQL> SELECT USER_NAME, AUDIT_OPTION, SUCCESS, FAILURE FROM DBA_STMT_AUDIT_OPTS;
USER_NAME AUDIT_OPTION SUCCESS FAILURE
---------------------- ---------------------- ---------- -------
LOCK TABLE BY SESSION BY SESSION
SQL> NOAUDIT LOCK TABLE;
审计未成功。
SQL> SELECT USER_NAME, AUDIT_OPTION, SUCCESS, FAILURE FROM DBA_STMT_AUDIT_OPTS;
未选定行
例3.
SQL> SELECT USER_NAME, AUDIT_OPTION, SUCCESS, FAILURE FROM DBA_STMT_AUDIT_OPTS;
未选定行
SQL> SELECT USERID, ACTION#, OBJ$NAME, PRIV$USED FROM SYS.AUD$;
未选定行
SQL> AUDIT TABLE;
审计已成功。
SQL> AUDIT CREATE ANY TABLE;
审计已成功。
SQL> AUDIT SELECT ON TEST;
审计已成功。
SQL> CREATE TABLE TEST_AUDIT (ID NUMBER);
表已创建。
SQL> CREATE TABLE TEST.TEST_AUDIT (ID NUMBER);
表已创建。
SQL> SELECT COUNT(*) FROM TEST;
COUNT(*)
----------
18651
SQL> SELECT USERID, ACTION#, OBJ$NAME, PRIV$USED FROM SYS.AUD$;
USERID ACTION# OBJ$NAME PRIV$USED
----------------------- ---------- ----------------------- ----------
YANGTK 103 TEST
SQL> DROP TABLE TEST_AUDIT;
表已丢弃。
SQL> DROP TABLE TEST.TEST_AUDIT;
表已丢弃。
SQL> SELECT USERID, ACTION#, OBJ$NAME, PRIV$USED FROM SYS.AUD$;
USERID ACTION# OBJ$NAME PRIV$USED
----------------------- ---------- ----------------------- ----------
YANGTK 103 TEST
我们发现只有对象审计生效了,要使语句级审计和权限级审计生效,必须重新登陆。
SQL> CONN YANGTK/YANGTK@TEST
已连接。
SQL> CREATE TABLE TEST_AUDIT (ID NUMBER);
表已创建。
SQL> CREATE TABLE TEST.TEST_AUDIT (ID NUMBER);
表已创建。
SQL> SELECT COUNT(*) FROM TEST;
COUNT(*)
----------
18651
SQL> SELECT USERID, ACTION#, OBJ$NAME, PRIV$USED FROM SYS.AUD$;
USERID ACTION# OBJ$NAME PRIV$USED
----------------------- ---------- ----------------------- ----------
YANGTK 1 TEST_AUDIT 41
YANGTK 103 TEST
YANGTK 103 TEST
YANGTK 1 TEST_AUDIT 40
例4.
SQL> NOAUDIT ALL;
审计未成功。
SQL> NOAUDIT ALL PRIVILEGE;
审计未成功。
SQL> NOAUDIT SELECT ON TEST;
审计未成功。
SQL> AUDIT TABLE;
审计已成功。
SQL> AUDIT VIEW BY YANGTK;
审计已成功。
SQL> AUDIT TABLE BY TEST;
审计已成功。
SQL> SELECT USER_NAME, AUDIT_OPTION, SUCCESS, FAILURE FROM DBA_STMT_AUDIT_OPTS;
USER_NAME AUDIT_OPTION SUCCESS FAILURE
----------------------- ----------------------- ---------- -------
TABLE BY ACCESS BY ACCESS
TEST TABLE BY ACCESS BY ACCESS
YANGTK VIEW BY ACCESS BY ACCESS
SQL> NOAUDIT ALL;
审计未成功。
SQL> SELECT USER_NAME, AUDIT_OPTION, SUCCESS, FAILURE FROM DBA_STMT_AUDIT_OPTS;
USER_NAME AUDIT_OPTION SUCCESS FAILURE
----------------------- ---------------------- ---------- --------
TEST TABLE BY ACCESS BY ACCESS
YANGTK VIEW BY ACCESS BY ACCESS
SQL> NOAUDIT TABLE BY TEST;
审计未成功。
SQL> NOAUDIT VIEW BY YANGTK;
审计未成功。
SQL> SELECT USER_NAME, AUDIT_OPTION, SUCCESS, FAILURE FROM DBA_STMT_AUDIT_OPTS;
未选定行
审计从审计表中不成功的删除
Audit delete on sys.aud$ whenever not successful;
利用下列sql语句来审计从所有表中不成功的删除
Audit not exists;
利用下列语句来审计有system用户所执行的过程上的所有授权和取消授权语句
Audit grant procedure by system;
oracle一些常见的问题的更多相关文章
- ORACLE中常见的几种锁
ORACLE中常见的几种锁: 0:none 1:null 空 2:Row-S 行共享(RS):共享表锁,sub share 3:Row-X 行独占(RX):用于行的修改,sub exclusive 4 ...
- Oracle数据库常见版本
Oracle数据库常见版本 在Oracle数据库的发展中,数据库一直处于不断升级状态,有以下几个版本: Oracle 8,Oracle 8i:Oracle 8i表示Oracle正式向Internet上 ...
- Oracle 字符集常见字符集及解决方案
Oracle 字符集常见字符集及解决方案 优先级别:alter session>环境变量>注册表>参数文件 一.查看字符集: 1.查询服务端字符集: select userenv(' ...
- Oracle之常见问题诊断方法
Oracle认证:常见问题诊断方法如下: 1.TNS-12154 Error 或ORA-12154 特征:SQL*NET没有找到连接串或别名 原因1:(1)没有找到TNSNAMES.ORA文件,该文件 ...
- Oracle中常见的33个等待事件小结
在Oracle 10g中的等待事件有872个,11g中等待事件1116个. 我们可以通过v$event_name 视图来查看等待事件的相关信息 一. 等待事件的相关知识 1.1 等待事件主要可 ...
- Oracle中常见的Hint(一)
Oracle中的Hint可以用来调整SQL的执行计划,提高SQL执行效率.下面分类介绍Oracle数据库中常见的Hint.这里描述的是Oracle11gR2中的常见Hint,Oracle数据库中各个版 ...
- Oracle数据库常见sql
-新建表:create table table_name( id varchar2(300) primary key, name varchar2(200) not null); --插入数据 ins ...
- 【Oracle】常见等待事件处理
1.查看数据库中需要关注的等待事件: select sw.seq#,sw.sid||','||s.serial# sids,s.username,sw.event,sw.P1,sw.p2,sw.p3, ...
- Oracle数据库常见的误操作恢复方法(上)
实验环境:Linux6.4 + Oracle 11g 面向读者:Oracle开发维护人员 概要: 1.误操作drop了emp表 2.误操作delete了emp表 3.误操作delete了emp表的部分 ...
- Oracle的常见错误及解决办法
ORA-12528: TNS:listener: all appropriate instances are blocking new connections ORA-12528问题是因为监听中的服务 ...
随机推荐
- 用windows命令解压chm文件
Windows里有这样一个工具:hh.exe.hh.exe最重要的功能就是用来关联CHM文件,当你运行一个chm文件的时候,系统就是用这个工具来打开的. 其实它还有另外一个功能——解压CHM文件在CM ...
- Leetcode463.Island Perimeter岛屿的周长
给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域. 网格中的格子水平和垂直方向相连(对角线方向不相连).整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地 ...
- ubuntn16.04指令
基础知识: ubuntn中的/表示根目录,包括bin,mnt等文件夹 /home表示家目录,/home/user表示用户下的家目录,/root表示root目录 常用指令: 进入root : sudo ...
- 理解es6箭头函数
箭头函数知识点很少,但是要理解清楚,不然看代码会很不适应的. 1. 最简单的写法 x => x*x 可以理解为 我的x要被转化为x*x,所以实际相当于下边的这个 function (x){ re ...
- CSS利用filter/opacity实现背景透明
先看看众所周知的解决方案 如果我们想要一个半透明背景,有两种实现方式: 1.利用CSS和opacity属性 .opacity { filter:alpha(opacity=);/*IE浏览器*/ op ...
- spring boot自动配置之jdbc(转)
1.DataSource配置 1.1 默认配置application.xml spring.datasource.url=jdbc:mysql://localhost/test spring.data ...
- 2019.9.27 csp-s模拟测试53 反思总结
这个起名方式居然还有后续?! 为什么起名不是连续的?! T1想了半天,搞出来了,结果数组开小[其实是没注意范围].T2概率期望直接跳,后来翻回来写发现自己整个理解错了期望的含义[何].T3错误想到赛道 ...
- Codevs2490 导弹防御塔
2490 导弹防御塔 2490 导弹防御塔 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 大师 Master 题目描述 Description Freda的城堡—— ...
- golang学习资料必备
核心资料库 https://github.com/yangwenmai/learning-golang
- linux常用目录介绍
bin:全称binary,含义是二进制,该目录中存放的都是一些二进制文件,这些文件都是可以被运行的. dev:该目录主要存放的是外接设备,例如:光盘等.注意:在其中的设备是不能被直接使用的,需要挂载( ...