標籤:select 一致性 oracle ble 外鍵 trail rac 瀏覽器 工作
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; audit
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
修改兩個參數
並發管理
讀寫衝突通過讀一致性解決:
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:s
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
《oracle管理6》