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问题是因为监听中的服务 ...
随机推荐
- JavaWeb-类加载器-注解-动态代理
(一)类加载器 1.什么是类加载器,作用是什么? 类加载器就加载字节码文件(.class) 2.类加载器的种类 类加载器有三种,不同类加载器加载不同的 1)BootStrap:引导类加载器:加载都是最 ...
- Liferay 7:Liferay DXP全套教程内附源码
分享是美德 都是英文教程,有不明白的问题可以随时咨询我. http://www.javasavvy.com/liferay-7-hooks-tutorials/
- 前端插件--swiper.js
使用swiper.js还要注意引入它的同时也要引入swiper.css样式文件: swiper官方文档:http://www.swiper.com.cn/api/effects/193.html 实例 ...
- Hackerrank--Divisibility of Power(Math)
题目链接 You are given an array A of size N. You are asked to answer Q queries. Each query is of the for ...
- MySQL语句错误及解决方案
1.group by查询错误 ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contai ...
- GIT → 00:GIT学习大纲
1. 学习版本控制的原因 1.1 没有版本控制出现的问题 1.2 版本控制的简介 1.3 版本控制工具 2. Git 和 Svn 比较 2.1 SVN介绍 2.1.1 SVN简介 2.1.2 SVN基 ...
- centos下彻底删除mysql
打算重新试试安装两个mysql,就把老的删除了. yum remove mysql mysql-server mysql-libs compat-mysql51 rm -rf /var/lib/mys ...
- HDU5583 Kingdom of Black and White
Kingdom of Black and White Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Ja ...
- Leetcode605.Can Place Flowers种花问题
假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花 ...
- Django基础内容整理