第5章 數據庫備份和事務處理_第1頁
第5章 數據庫備份和事務處理_第2頁
第5章 數據庫備份和事務處理_第3頁
第5章 數據庫備份和事務處理_第4頁
第5章 數據庫備份和事務處理_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第第5章章 數據庫備份和事務處理數據庫備份和事務處理理論部分理論部分本章目標 掌握數據庫的導入和導出 掌握事務操作 了解數據庫鎖 掌握序列的使用 掌握視圖的使用 掌握索引的使用備份和恢復 為什么要備份u顯示工作中很多情況下可以造成數據丟失,造成數據丟失的原因 介質故障 用戶錯誤操作 服務器徹底崩潰 計算機病毒 不可預料的因素uORACLE故障類型 語句故障 用戶進行故障 實例故障 介質故障導出實用程序exp scott/tigerorcl file=scott_back owner=scott按用戶方式導出數據exp scott/tigeraccp tables=(emp, dept) fil

2、e=scott_back_tab按表方式導出數據exp system/aptechaccp tablespaces=(users) file=tbs_users按表空間方式導出數據導入實用程序 imp scott/tigerorcl file=item_back.dmp ignore=y full=y將整個文件導入數據庫imp system/aptechaccp file=scott_back fromuser=scott touser=martin tables=(emp,dept)將scott用戶的表導入到martin用戶事務 為什么需要事務u在對數據庫進行多次操作以后,如果要保證所有的操

3、作同時成功,或者同時失敗,必須使用事務 事務的特征u原子性u隔離性u一致性u持久性事務 事務的使用u事務控制語句 事務控制語句(TCL)有5個 COMMIT:提交事務 ROLLBACK:回滾事務 SAVEPOINT:在事務中創(chuàng)建存儲點 ROLLBACK TO:將事務回滾到存儲點 SET TRANSACTION:設置事務的屬性u如何使用事務 使用事務的步驟n 開啟事務n 進行多次數據庫操作n 結束事務l 數據提交l 數據被撤銷事務案例insert into dept values(50,a,null)insert into dept values(60,b,null)savepoint a;in

4、sert into dept values(70,c,null);rollback to savepoint a;-執(zhí)行步驟二;查看dept表,有50,60的部門select * from dept;-執(zhí)行步驟三;回滾rollback-執(zhí)行步驟四,查看deptselect *from dept;鎖的概念 鎖是數據庫用來控制共享資源并發(fā)訪問的機制。 鎖用于保護正在被修改的數據 直到提交或回滾了事務之后,其他用戶才可以更新數據鎖的概念修改表修改表拒絕訪問Toy_IDNamePriceT001Barbie20T002GI Joe45鎖定的優(yōu)點 一致性一致性 - 一次只允許一個用戶修改數據 完整性完整

5、性 - 為所有用戶提供正確的數據。如果一個用戶進行了修改并保存,所做的修改將反映給所有用戶q并行性 允許多個用戶訪問同一數據Toy_IDNamePriceT001Barbie 20T002GI Joe 45修改表中的數據查看表中的數據允許訪問表級鎖行級鎖鎖的類型鎖的類型行級鎖Toy_IDNamePriceT001Barbie20T002GI Joe45更新 T002 行更新 T001 行行被鎖定 對正在被修改的行進行鎖定。其他用戶可以訪問除被鎖定的行以外的行允許訪問行級鎖 行級鎖是一種排他鎖,防止其他事務修改此行 在使用以下語句時,Oracle會自動應用行級鎖:uINSERTuUPDATEuD

6、ELETEuSELECT FOR UPDATE SELECT FOR UPDATE語句允許用戶一次鎖定多條記錄進行更新 使用COMMIT或ROLLBACK語句釋放鎖行級鎖 SELECT FOR UPDATE語法:SELECT FOR UPDATE OF columnsWAIT n | NOWAIT;SQL SELECT * FROM order_master WHERE vencode=V002 FOR UPDATE OF odate, del_date;SQL UPDATE order_master SET del_date=28-8月-05 WHERE vencode=V002;SQL C

7、OMMIT;SQL SELECT * FROM order_master WHERE vencode=V002 FOR UPDATE NOWAIT;表級鎖Toy_IDNamePriceT001Barbie20T002GI Joe45修改表中的行 更新表 拒絕訪問鎖定整個表,限制其他用戶對表的訪問。17表級鎖表級鎖類型行共享行排他共享使用命令顯示地鎖定表,應用表級鎖的語法是: LOCK TABLE table_name IN mode MODE;共享行排他排他表級鎖 行共享 (ROW SHARE) 禁止排他鎖定表 行排他(ROW EXCLUSIVE) 禁止使用排他鎖和共享鎖 共享鎖(SHARE)

8、u鎖定表,僅允許其他用戶查詢表中的行u禁止其他用戶插入、更新和刪除行u多個用戶可以同時在同一個表上應用此鎖 共享行排他(SHARE ROW EXCLUSIVE) 比共享鎖更多的限制,禁止使用共享鎖及更高的鎖 排他(EXCLUSIVE) 限制最強的表鎖,僅允許其他用戶查詢該表的行。禁止修改和鎖定表19死鎖 當兩個事務相互等待對方釋放資源時,就會形成死鎖 Oracle會自動檢測死鎖,并通過結束其中的一個事務來解決死鎖 右邊是一個死鎖的例子T1T2lock (D1)時間lock (D2)lock (D2)lock (D1)等待等待序列 序列是用于生成唯一的、連續(xù)序號的對象 序列可以是升序的,也可以是

9、降序的 使用CREATE SEQUENCE語句創(chuàng)建序列CREATE SEQUENCE sequence_nameSTART WITH numINCREMENT BY incrementMAXVALUE num|NOMAXVALUEMINVALUE num|NOMINVALUECYCLE|NOCYCLECACHE num|NOCACHE訪問序列 通過序列的偽列來訪問序列的值uNEXTVAL 返回序列的下一個值uCURRVAL 返回序列的當前值SQL INSERT INTO toys (toyid, toyname, toyprice) VALUES ( toys_seq.NEXTVAL, TWE

10、NTY, 25);SQL INSERT INTO toys (toyid, toyname, toyprice) VALUES ( toys_seq.NEXTVAL, MAGIC PENCIL, 75);SQL SELECT toys_seq.CURRVAL FROM dual;指定序列的下一個值檢索序列的當前值更改和刪除序列SQL ALTER SEQUENCE toys_seq MAXVALUE 5000 CYCLE;使用ALTER SEQUENCE語句修改序列,不能更改序列的START WITH參數使用DROP SEQUENCE語句刪除序列SQL DROP SEQUENCE toys_se

11、q;視圖 視圖以經過定制的方式顯示來自一個或多個表的數據 視圖可以視為“虛擬表”或“存儲的查詢” 創(chuàng)建視圖所依據的表稱為“基表” 視圖的優(yōu)點有:u提供了另外一種級別的表安全性u隱藏的數據的復雜性u簡化的用戶的SQL命令u隔離基表結構的改變u通過重命名列,從另一個角度提供數據24創(chuàng)建視圖studnostudnamestudmarkssubnostudcaste1Rob452Open2James334SC3Jesica405OpenStud_detailsStud_viewstudnostudnamesubno1Rob22James43Jesica5創(chuàng)建視圖CREATE VIEW stud_vie

12、wAS SELECT studno, studname, subnoFROM Stud_details;25創(chuàng)建視圖 創(chuàng)建視圖的語法: CREATE OR REPLACE FORCE VIEW view_name (alias, alias.) AS select_statement WITH CHECK OPTION WITH READ ONLY;聯接視圖StudnoStudnameSubmrksSubno1Rob4522James3343Jesica404SubnoSubname2English4Maths5ScienceStud_detailsSub_detailsStudnoStudn

13、ameSubmrksSubname1Rob45English2James33Maths3Jesica40MathsCREATE VIEW Stud_sub_view ASSELECT Studno, Studname, Submrks, SubnameFROM Stud_details, Sub_Details WHERE Stud_details.Subno=Sub_details.Subno;Stud_sub_view聯接視圖聯接視圖 創(chuàng)建外聯接視圖CREATE VIEW ven_ord_outj_view ASSELECT vm.vencode, venname, orderno, od

14、ate, ostatusFROM vendor_master vm, order_master omWHERE vm.vencode = om.vencode(+);SELECT vm.vencode, venname, orderno, odate, ostatusFROM vendor_master vm LEFT OUTER JOIN order_master omON vm.vencode = om.vencode;28 視圖中可以使用單行函數、分組函數和表達式 使用DROP VIEW語句刪除視圖視圖中的函數CREATE VIEW item_view AS SELECT itemcod

15、e, LOWER(itemdesc) item_descFROM itemfile; SQL DROP VIEW toys_view; 索引 索引是與表相關的一個可選結構 用以提高 SQL 語句執(zhí)行的性能 減少磁盤I/O 使用 CREATE INDEX 語句創(chuàng)建索引 在邏輯上和物理上都獨立于表的數據 Oracle 自動維護索引索引組合索引函數索引唯一索引位圖索引反鍵索引索引原理 索引原理索引字段索引字段( (姓名姓名) )記錄地址記錄地址AmyAmyAndyAndyBruceBruceCandyCandy索引表學生表學號學號姓名姓名班級班級3 36 611112323在索引中查找姓名為在索引中查找姓名為Candy的人的人然后根據然后根據Candy對應的對應的記錄地址,定位到數據記錄地址,定位到數據表的記錄表的記錄查找名稱為查找名稱為Candy的人員的信息的人員的信息索引的創(chuàng)建 創(chuàng)建索引create table TEMP_EMP( ID

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論