/* 資料併發性和一致性 */
資料併發性是指多個使用者可以在同一時刻訪問相同的資料.
資料一致性是指在保證併發性的同時,每個使用者都能看到一致的資料檢視,包括使用者能夠看到自己或其它使用者的事務對資料所做出的更改.
可防止的三種讀現象:
* 髒讀:某個事務讀取了被其它未提交事務修改過的資料.
* 不可重複讀:在某個事務讀取一次資料後,其它事務修改了這些資料並進行了提交,這樣當該事務重新讀取這些資料時就會得到與前一次讀取不一致的結果.
* 假象讀:在某個事務執行第一次查詢時獲得了滿足查詢條件的乙個結果集,隨後其它事務又插入或刪除了一些滿足查詢條件的記錄,這樣當該事務重新執行相同的查詢時,就會得到與前一次查詢不一致的結果集.
各種隔離等級對可防止的讀現象的處理能力:
隔離等級 髒讀 不可重複讀 假象讀
-------------------------------------------
read un***mitted 可能發生 可能發生 可能發生
read ***mitted 不會發生 可能發生 可能發生
repeatable read 不會發生 不會發生 可能發生
serializable 不會發生 不會發生 不會發生
oracle提供read ***mitted和serializable兩種隔離等級,預設情況下,oracle使用的是read ***mitted事務隔離等級.
利用不同的隔離等級,oracle能夠實現兩種級別的讀一致性:
* 語句級讀一致性:查詢操作所讀取的資料都是在語句開始執行之前已經提交的資料,而不會包含任何未提交的資料或者在查詢語句開始執行之後才提交的資料.
* 事務級讀一致性:在事務執行的全過程中所讀取的資料都時在事務開始之前已經提交的資料,而不會包含任何未提交的資料或者在事務開始之後才提交的資料.
/* 資料完整性 */
關聯式資料庫的資料完整性主要包含三方面:實體完整性,參照完整性和使用者定義的完整性.這些完整性都可以在oracle中通過約束,觸發器等物件來實現.
oracle中可以建立如下五種型別的完整性約束:
* not null約束
* unique約束
* primary keyl約束
* foreign key約束
* check約束
/* 概要檔案 */
乙個資料庫使用者只能指定乙個概要檔案
1.通過概要檔案,可以對以下資料庫和系統資源進行限制:
cpu時間
邏輯讀使用者的併發會話數
空閒時間
連線時間
私有sga區
2.概要檔案還可以對使用者的口令策略進行控制
創造概要檔案
create profile accounting_user limit
sessions_per_user 6
connect_time 1440
idle_time 120
logical_reads_per_session unlimited
cpu_per_session unlimited
password_grace_time 30
failed_login_attempts 6;
指定概要檔案
alter user scott profile accounting_user;
修改概要檔案
alter profile accounting_user limit
cpu_per_call default;
刪除概要檔案
drop profile accounting_user cascade;
概要檔案資料字典
dba_profiles 包含所有概要檔案的基本資訊
/* 使用者 */
建立使用者
create user zhao
identified by password
default tablespace accounting_tbs
quota 100m/unlimited on accounting_tbs
quota 500k on indx
temporary tablespace temptbs
profile accounting_users
grant connect to zhao、
預設情況下,新建的使用者在任何表空間中都不具有任何配額
鎖定/解鎖使用者
alter user zhao account lock/unlock
修改使用者
alter user zhao
identified by aaaaaa
default tablespace users
刪除使用者(cascade關鍵字指定刪除使用者模式中所有的物件)
drop user zhao cascade
使用者資訊字典
all_users/dba_users/user_users 資料庫使用者的資訊
dba_ts_quotas/user_ts_quotas 使用者的表空間配額資訊
/* 許可權和角色 */
oracle中,許可權分為兩類:
系統許可權還可以分為兩類
1.針對資料庫中某一型別的資料庫物件
select any table,drop any index,......
2.針對某種資料庫級別的操作
alter system,......
如果在授予使用者系統許可權時使用了with admin option子句,被授予的使用者還可以將這項系統許可權再授予其它使用者
物件許可權一共有九類:
select(不能授予表中的字段,只能授予整個表)
update
delete
insert
execute(針對儲存過程,函式和包)
read(針對目錄)
index
references
alter
如果在授予使用者物件許可權時使用了with grant option子句,被授予的使用者還可以將這項物件許可權再授予其它使用者
建立角色(通過角色可以簡化許可權管理及進行動態的許可權管理)
預定義角色:
connect
resource
dbaexp_full_database
imp_full_database
.....
create role accts_role;
grant select on sal_history to accts_role;
grant insert,update on mount_entry to accts_role;
grant create view to accts_role;
授予許可權或角色
1.將系統許可權授予使用者
grant create any table to hanzo;
2.將物件許可權授予使用者
grant select,update on customer to felix;
其中insert,update和references可以授予表或檢視中的字段
grant update(name,email) on customer to felix;
可以使用關鍵字all將某個物件的所有物件許可權全部授予指定的使用者
grant all on customer to felix;
3.將角色授予使用者
grant accts_role to hanzo with admin option;
不能使用一條grant語句同時為使用者授予物件許可權和角色
**許可權和角色
revoke select,update on customer from felix;
revoke accts_role from hanzo;
revoke all on customer from hanzo;
許可權和角色資料字典
all/dba/user_tab_privs 包含所有物件已授予的物件許可權資訊
all/user_col_privs_made 包含由當前使用者授予的物件許可權資訊
dba/user_sys_privs 包含所有已授予的系統許可權資訊
session_privs 包含當前會話所具有的系統許可權資訊
all/dba/user_col_privs 包含所有欄位已授予的物件許可權資訊
dba_roles 包含資料庫中所有角色的描述資訊
dba/user_role_privs 包含為使用者或角色授予的角色資訊
role_role_privs 包含為角色授予的角色資訊
role_sys_privs 包含為角色授予的系統許可權資訊
role_tab_privs 包含為角色授予的物件許可權資訊
session_roles 包含當前會話所具有的角色資訊
資料庫安全保護
什麼是資料庫安全保護?防止資料意外丟失和不一致資料的產生,以及當資料庫遭受破壞後迅速恢復正常。dbms對資料庫的安全保護方功能是通過四方面實現的,即安全性控制 完整性控制 併發性控制和資料庫恢復。安全性控制 含義 盡可能地杜絕所有可能的資料庫非法訪問。例如 繞過dbms的授權機制,通過作業系統直接訪...
資料庫安全與保護 資料庫系統原理(本科)
一 完整性約束條件的作用物件 1 列級約束 列型別,取值範圍,精確度的約束 主鍵primary key 外來鍵foreign key 唯一unique 檢查check 預設default 非空not null 2 元組約束 各欄位之間相互約束,例如 開始日期小於結束日期 3 表級約束 若干元組之間 ...
保護資料庫安全從現在開始
我們都知道現在資料是核心資產,而資料基本上是儲存在資料庫中的。因此,保護資料庫就成為了保護資料的重要環節。其實,在考慮購買第三方的專業資料庫保護產品之前,有很多任務作是可以現在就開始做的,尤其是對於那些資料管理員 dba 而言。學習一些基本的資料庫安全知識對他們很有幫助。這篇文章就講述了其中一些要點...