zoukankan      html  css  js  c++  java
  • 20170810上课笔记

    审计

    标准审计

    在ORACLE中分别支持以下三种标准审计类型:

    u          语句审计,对某种类型的SQL语句审计,不指定结构或对象。

    u          特权审计,对执行相应动作的系统特权的使用审计。

    u          对象审计,对一特殊模式对象上的指定语句的审计。

    这三种标准审计类型分别对如下3方面进行审计:

    u          审计语句的成功执行、不成功执行,或者其两者。

    u          对每一用户会话审计语句执行一次或者对语句每次执行审计一次。

    u          对全部用户或指定用户的活动的审计。

    db //数据库字典表中

    xml//xml文件中

    none//log日志文件中

    audit

    开启开关参数:

    SQL> show parameter audit_trail

    设置审计选项:

    每次设置新的审计选项,测试用户需要重新连接

    sys准备工作:

    SQL> drop user user01 cascade;

    SQL> create user user01 identified by password;

    SQL> grant create session, create table, create any table to user01;

    审计系统权限:

    SQL> AUDIT CREATE ANY TABLE, CREATE TABLE BY USER01 BY ACCESS;

    user01测试:

    SQL> create table t1(x int);

    SQL> create table t1(x int);               失败

    SQL> create table hr.t1(x int);

    SQL> create table hr.t1(x int);          失败

    sys查看审计结果:

    SQL> desc aud$

    SQL> desc dba_audit_trail

    浏览器中查看

    sys添加审计条件:

    SQL> AUDIT SELECT ANY TABLE BY user01 BY ACCESS;

    SQL> grant select any table to user01;

    user01测试:

    SQL> select * from t1;

    SQL> select * from hr.t1;

    sys查看审计结果:

    浏览器中或者查看dba_audit_trail表

    删除审计选项:

    SQL> NOAUDIT CREATE ANY TABLE BY USER01;

    SQL> NOAUDIT CREATE TABLE BY USER01;

    SQL> NOAUDIT SELECT ANY TABLE BY user01;

    审计对象:

    sys设置审计选项:

    SQL> AUDIT SELECT ON hr.employees BY ACCESS;

    SQL> drop user user01 cascade;

    SQL> create user user01 identified by password;

    SQL> grant create session to user01;

    sys授权,每执行一个语句,user01就测试一次:

    SQL> grant select any table to user01;

    SQL> revoke select any table from user01;

    SQL> grant select on hr.employees to user01;

    user01测试(执行4次):

    SQL> select count(*) from hr.employees;

    默认不记录sys的行为:

    SQL> select count(*) from hr.employees;

    删除审计选项:

    SQL> NOAUDIT SELECT ON hr.employees;

    审计语句:

    sys设置审计选项:

    SQL> AUDIT TABLE BY user01 BY ACCESS;

    user01测试:

    SQL> create table t1(x int);      失败

    SQL> create table t1(x int);

    SQL> create table t1(y int);      失败

    SQL> drop table t1;

    sys查看结果:

    浏览器中,或DBA_AUDIT_OBJECT表中

    删除审计选项:

    SQL> NOAUDIT TABLE BY USER01

    审计sys的操作:

    SQL> show parameter audit

    修改两个参数

    并发

    并发管理

    事务:作用于某些数据的一个不可分割的操作

     

    锁:写锁、互斥锁(仅能被一个进程使用)      读锁、共享锁(可被多个进程使用)

     

    1、脏读取(dirty read):一个事务读取了被其他事务写入但还未提交的数据。

    2、不可重复读取(nonrepeatable read):一个事务再次读取其之前曾经读取过的数据时,发现数据已被其他已提交的事务修改或删除。

    3、不存在读取(phantom read):事务按照之前的条件重新查询时,返回的结果集中包含其他已提交事务插入的满足条件的新数据。

     

    读写冲突通过读一致性解决:

    sys准备工作:

    SQL> create user user01 identified by password;

    SQL> grant dba to user01;

    以下都用user01:

    SQL> conn user01/password

    Connected.

    SQL> create table t1(x int);

    SQL> insert into t1 values (1);

    SQL> commit;

    session1:

    SQL> update t1 set x=11 where x=1;

    SQL> select * from t1;

    session 2:

    SQL> select * from t1;

    session 1:

    SQL> commit;

    session 2:

    SQL> select * from t1;

    测试serializable:

    session1:

    SQL> alter session set isolation_level=serializable;

    重复上面的步骤

    写与写的冲突通过锁机制解决:

    session 1:

    SQL> update t1 set x=11 where x=1;

    浏览器中查看锁信息

    session 2:

    SQL> update t1 set x=111 where x=1;              被阻塞

    浏览器中查看锁信息

    session 1:

    SQL> rollback;

    浏览器中查看锁信息

    死锁:

    session1:

    SQL> select * from t1;

             X

    ----------

             1

             2

    SQL> update t1 set x=11 where x=1;

    session2:

    SQL> update t1 set x=22 where x=2;

    session1:

    SQL> update t1 set x=222 where x=2;              阻塞

    session2:

    SQL> update t1 set x=111 where x=1;              死锁

    ERROR at line 1:

    ORA-00060: deadlock detected while waiting for resource

    $ vi /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log

    锁和外键

    select … for update

  • 相关阅读:
    【AS3代码】AS调用JS
    【AS3代码】MP3音乐的播放/暂停/设定音量大小
    【AS3代码】在上下文菜单(右键菜单)中添加自定义项
    【AS3代码】更换鼠标箭头样式,并跟随鼠标!
    【AS3代码】创建动态文本
    【AS3代码】播放FLV视频流的三步骤!
    【AS3代码】Timer计时器用法
    【AS3代码】指定间隔时间运行函数 及 停止运行函数
    【AS3代码】Keyboard键盘操作!
    多线程_传送带我们到底能走多远系列(6)
  • 原文地址:https://www.cnblogs.com/guoxf/p/7344025.html
Copyright © 2011-2022 走看看