華南理工大學《數據庫》(研究生)復習提綱2_第1頁
華南理工大學《數據庫》(研究生)復習提綱2_第2頁
華南理工大學《數據庫》(研究生)復習提綱2_第3頁
華南理工大學《數據庫》(研究生)復習提綱2_第4頁
華南理工大學《數據庫》(研究生)復習提綱2_第5頁
已閱讀5頁,還剩18頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、故障類型分為一下三種:1.事務失敗:包括邏輯錯誤(一個事務由于其內部錯誤,導致不能正常結束如是不內部的死循環)和系統錯誤(系統進入一個不良如死鎖等狀態,導致事務無法執行,但該事務在以后的某個時間是可以重新執行的);2.系統崩潰:如電源問題、其他軟硬件引起的系統停機,導致緩存、內存等易失存儲設備數據丟失,但是非易失存儲設備數據一般不會丟失;3.硬盤故障:人為或是自然災害等因素造成的硬盤損害導致數據的丟失。故障恢復策略:事務故障和系統故障的恢復方法是:撤銷故障發生時未完成事務對DB的所有影響,確保事務的原子性,重做已經成功提交的事務,實現事務的持久性,以上操作一般是由系統在重啟時自動完成,不需要用

2、戶干預。災難性或磁盤失敗恢復策略:使用歸檔存儲設備(通常是磁帶)上的數據庫備份進行恢復,并從備份日志重新應用或者重做已經提交的事務的操作來重構故障錢數據庫的最新狀態。緩存目錄:跟蹤哪些數據項在緩沖區中。臟位(dirty bit ) :每個緩沖區都和一個臟位相關聯,它用來指示該緩沖區是否有所修改。釘住拔去位(pin-unpin bit):即如果緩沖中的頁目前還不能寫回到磁盤,則稱該頁被釘住(該位的值為1)。X所在的緩沖塊Bx上的操作output(Bx)不需要在write(X)執行后立即執行,因為塊Bx可能包含其他仍在被訪問的數據項原位更新(in-place update):將緩沖區寫回磁盤原來的

3、位置,因而會覆蓋被修改的數據項在磁盤上的舊值(必須使用日志幫助);鏡像更新(Shadow update):將緩沖區寫到磁盤不同的位置,可以保存數據項的多個版本;非潛入(no-steal):緩存中被事務更新的某個頁在事務提交前不能寫回磁盤;潛入(steal):允許事務在提交前將已經更新的緩沖區寫回磁盤;強制(force):事務所有的已經更新的頁在事務提交時被立即寫回磁盤;非強制制(no-force):無事所有做的更新的頁在事務提交時不立即寫回磁盤。延遲更新(NO-UNDO/REDO 算法):所有事務的更新都記錄在局部事務的工作區(或緩存區),只有在事務到達提交點后才真正更新磁盤上的數據庫。 即時

4、更新:事務的某些操作達到提交點前被寫入數據庫,恢復時需要UNDO/REDO,如果事務在達到提交點前所有的更新已被寫入數據庫,需要算法UNDO/NO-REDOWAL是一個日志協議規則,明確定義了先寫日志的思想,內容如下:1先寫日志,無論是在緩沖區還是在磁盤等上面都這樣子,這是保證原子性的關鍵;2在事務提交前寫相關的所有日志記錄到穩定存儲介質,這是保證持久性的關鍵,確保我們能基于日志重建提交事務。一種日志是把寫操作記錄下來;另外一種日志形式中,把更新的東西取為一個物理塊,則一個日志記錄包含了三部分前像、后像、事務狀態檢查點是為了在系統恢復過程中不要每次撤銷和重做事務時從日志文件首條開始而在日志文件

5、中增加的檢查點標志記錄,使得系統恢復過程中的撤銷和重做事務都只是從最近的一個檢查地點開始做,可大量減小,降低恢復所需的時間和工作量,分為靜態檢查點(建立檢查點時不允許執行事務)和動態檢查點。ARIES ( Algorithm for Recovery and Isolation Exploiting Semantics )日志的恢復管理算法綜述1.采用基于潛入/非強制的公職模式;2.使用日志順序號LSN標志日志記錄,在數據庫頁中用LSN標志哪些更新已經在數據庫頁上實施過;3.使用臟頁表最大程度減少恢復時不必要的重做;4.使用模糊點檢查點機制,只記錄臟頁信息和關聯的信息,甚至不要求將臟頁寫到磁盤

6、;5.當系統崩潰會重啟時,恢復管理器將被激活,并按以下三個階段進行處理:a分析:鑒別系統崩潰時,緩沖區中的臟頁和當時仍在活躍的事務;b重做:重做從日志適當起點(比如被修改的最早臟頁表對應的日志記錄)開始的所有動作,恢復系統到崩潰時的DB狀態;c撤銷:撤銷上次崩潰時所有未提交的事務的動作效果,使DB只反映已經提交的事務的影響;d如果是重啟時再次崩潰,則會借助一共有五種日志類型,分別為:Update、Commit、Abort、End、CLRs。Update更新:需要寫更新;Commit提交:當事務決定提交,它將先強制寫一條類型為commit(內含該事務id)的日志記錄到日志尾,并執行一次刷新當前日

7、志尾到穩存的動作;Abort中止:當一個事務中止時,一條類型為abort(內含事務id)的日志記錄將被寫到日志尾,同時啟動一個撤銷該事務的Undo過程;End結束:當一個事務提交或是中止后,commit或是abort外,DBMS還將執行一些而外的動作步驟,當這些而外的動作都完成后,將會寫一條(包含事務id和、類型為end)日志記錄到穩存;CLR s補償:當由一條更新日志記錄U所記錄的改變被撤銷時,將會有一條類型為CLR的補償日志記錄C被寫到日志尾,其中undoNextLSN記錄同一事務被撤銷的下一條更新記錄LSN,一般與U的prevLSN同一值。與日志相關的其他數據結構:事務表Transact

8、ion Table:每個活躍事務占一個表項,(包括提交的中止的),每個表項中有事務id tranID,執行的最后一個日志頁lastLSN和事務狀態status;臟頁表Dirty Page Table:緩沖池中每個臟頁占一個表項,每個表項中有個物理頁idPageID和記錄同一個事務的最早的一個日志順序號recLSN(也即最小日志順序號LSN)。臟頁表有兩種用途。一為在系統正常運行過程中用作緩沖區(buffer pool)臟頁表,且系統在作檢查點(checkpoint 或 CHKPT)時,將該表包含在其記錄中。另一用途是作為重啟動(restart)臟頁表以記錄系統失效時可能的臟頁;頁面結構:頁數據

9、結構指在數據庫的每一頁辟出一塊小空間作為頁日志順序碼(Page-LSN)域,用以描述在該頁上所作的最近的更新或補償操作所對應的日志記錄的LSN.頁結構由單一的數據域頁日志順序碼組成。理解歸檔日志文件:oracle每有一個事務,首先會產生一條日志,這個日志里面包含了能夠還原這個事務的最少信息,這些日志會暫存在內存中,再由一個叫LGWR的進程將日志緩沖區的日志寫到硬盤上的日志文件上,這些日志文件一般在50兆左右,一般為3組。等一個日志文件寫滿了50兆的內容,它會斷開,LGWR繼續往下一個日志文件中寫日志;這3個日志文件輪流寫入(覆蓋寫入)。現在來講重做日志文件歸檔,就是將一個寫滿了日志的文件復制一

10、份到一個指定的文件夾中,可以將這些歷史日志文件都copy(歸檔)一份,而不會在輪循中被覆蓋,起到保護數據的功能。物理備份是指物理數據庫文件的副本,是備份恢復策略的主體。用戶可以使用recovery manager或是操作系統工具進行物理備份。(包括熱備份和冷備份)邏輯備份是使用oracle工具抽取邏輯數據(如表或是存儲過程等)并保存在二進制文件中,邏輯備份可以作為物理備份的補充冷備份:冷備份又稱為脫機備份,是在數據庫保持關閉,而且是mount的狀態下,把數據庫的配置文件、數據文件、控制文件、重做日志文件和歸檔日志文件復制到其他地方保存起來。冷備份可分為一致性備份和非一致性備份;熱備份:熱備份又

11、稱為聯機備份或者歸檔備份,是在數據庫保持開放的狀態下對數據庫進行備份。熱備份的好處是不必關閉數據庫,不影響數據庫的正常運行,但是數據庫必須處于歸檔模式;一致性備份(consistent backup):是備份所包含的各個文件中的所有修改都具備相同的系統變化編號(system change number,SCN)。也就是說,備份所包含的各個文件中的所有數據均來自同一時間點,使用一致性數據庫完全備份進行復原后,不需要執行恢復操作。在NOARCHIVELOG(非歸檔)模式下,一致性數據庫完全備份是唯一有效的備份方案;非一致性備份:指在數據庫處于打開(open)狀態時,或數據庫異常關閉(shut do

12、wn abnormally)后,對一個或多個數據庫文件進行的備份,非一致性備份需要在還原之后進行恢復操作。對必須24*7 地工作的數據庫只能進行非一致性數據庫完全備份,也稱為熱備份簡述歸檔模式:Oracle數據庫有聯機重做日志,這個日志是記錄對數據庫所做的修改,比如插入,刪除,更新數據等,對這些操作都會記錄在聯機重做日志里。一般數據庫至少要有2個聯機重做日志組。當一個聯機重做日志組被寫滿的時候,就會發生日志切換,這時聯機重做日志組2成為當前使用的日志,當聯機重做日志組2寫滿的時候,又會發生日志切換,去寫聯機重做日志組1,就這樣反復進行。 如果數據庫處于非歸檔模式,聯機日志在切換時就會丟棄. 而

13、在歸檔模式下,當發生日志切換的時候,被切換的日志會進行歸檔。比如,當前在使用聯機重做日志1,當1寫滿的時候,發生日志切換,開始寫聯機重做日志2,這時聯機重做日志1的內容會被拷貝到另外一個指定的目錄下。這個目錄叫做歸檔目錄,拷貝的文件叫歸檔重做日志增量備份: RMAN可以做塊級增量備份 0級(level 0)備份是完全備份 在定義高一級備份之前必須有一個0級備份 類似于增量備份的另一種備份是累積備份(cumulative backup),累積備份備份的東西是大于當前最近一個level的最近的一個備份之后的東西,而增量備份是備份大于等于當前最近一個level的一個東西個人曲解:數據庫打開狀態下,數

14、據庫表空間各種數據包括重做日志文件都被假設為一直處于改變狀態,(歸檔重做日志除外),數據庫關閉狀態下,什么表呀信息呀都不變;歸檔重做日志文件,重做日志文件都是用于非一致性回復過程中撤銷和重做各種事務;一致性備份只能在數據庫關閉的時候做;可以根據數據庫是否打開,是否是歸檔模式來判斷究竟用哪種備份方式。系統調優的最終目標:是應用運行的更快;縮短查詢、事務的響應時間;提高事務的整體吞吐量查詢優化就是在眾多的查詢方案中選擇出最高效率的執行計劃的一種處理過程,包括代數優化和物理優化。代數優化:通過對關系代數表達式的等價變化來提高查詢效率,代數優化僅改變查詢語句中操作的次序和組合,不涉及底層的存取路徑;物

15、理優化:通過選擇高效合理的操作算法或是存取路徑,求得優化的查詢計劃。選擇操作:簡單的全表掃描方法、索引(或散列)掃描方法連接操作方法:嵌套循環方法(nested loop)、排序-合并方法(sort-merge join 或merge join)、索引連接(index join)方法、哈希連接(Hash Join)方法(先哈希后匹配連接)。查詢優化方法選擇的依據:基于規則(rule based): 根據某些規則從幾個備選的訪問路徑中進行選擇。所有的訪問路徑都被分配了一個排序值,具有最低排序值的路徑被選中基于代價(cost based) : 考慮了數據庫對象的最新的統計數據,總是要比老的基于規則

16、的方法執行得要快。Oracle使用CBO(Cost-Based Optimizer,基于成本的優化器)幫助用戶確定執行查詢的有效方法。Optimizer做些什么:SQL 轉換、選擇訪問路徑、選擇聯結方式、選擇聯結次序執行開銷集中式數據庫:磁盤存取塊數(I/O代價)(最主要的);處理機時間(CPU代價);查詢的內存開銷分布式數據庫: I/O代價+CPU代價+查詢的內存開銷+通信代價調優需要統計的信息:1.存儲統計:關于存儲分配成表空間、索引空間和緩沖區的統計數據;2.I/O和設備性能統計:磁盤盤區和磁盤熱點上的全部的讀寫活動(頁面調度);3.查詢/事務處理統計:查詢和事務的執行時間以及查詢優化所

17、需要的時間;4.關于加鎖/日志的統計:不同類型的鎖的使用頻率、事務的吞吐率,以及有關日志記錄的活動;5.索引統計:索引中的級數、不連續頁的頁面數等調優過程的輸入需要相關的統計信息調優 索引的調優:將索引和數據存放到不同的文件組,建立必要的索引,去除不必要的索引,必要的使用組合索引和非聚集索引,進一步改善原有的不合適的。 數據庫設計的調優:必要時對表進行水平劃分、垂直劃分、逆規范化,穩定的和穩定的表分開放存,索引和表分開放,大表放在兩個磁盤上,盡量用數字類型代替字母類型 查詢的調優:1.把not條件轉換為肯定表達式;2.可用連接替換使用in、=all、=any、=some的嵌入式select塊;

18、3.如果兩個表之間存在等值連接,在一個表中的連接屬性上的范圍謂詞(選擇條件)可以在另一個表中重復;4.可以使用多個列上的索引重寫where條件;5.在查詢時,返回的值應該是查詢需要的,不能過多的使用通配符;6在where子句中可以使用exist和not exist代替in和not in,應該盡量避免使用in、not in、or或者having;7盡量使用where子句而不是使用having子句;8使用union all關鍵字而不是union關鍵字;9.使用限定表(使用所有者限定表的名稱);10.在連接查詢中使用完全限定的列明引用;11.應盡量避免在where子句中使用!=或是<>操

19、作符,否則引擎將放棄使用索引而進行全表掃描;12.對于連續的數值,能用between就不要用in了;13.應盡量避免在where子句中對字段進行函數操作,這將導致引擎放棄使用索引而進行全表掃面;14.在使用索引字段作為條件時,如果該索引是符合索引,那么必須使用到該索引中的第一個字段作為條件是才能保證系統使用該索引;15.盡量使用varchar/nvarchar代替char/ncha 其他的查詢調優原則編寫有效的SQL: 有效的WHERE子句 使用提示影響執行計劃 選擇最佳的聯結方法: 避免笛卡爾聯結/ 選擇最佳的聯結次序 索引的策略: 查詢所檢索的行數超過表中總的行數的10%或15%,可能就不

20、需要索引, 對高選擇性的列、重要的外鍵、所有謂詞列等進行索引 監控索引的使用 使用相似的SQL語句 通過使用內嵌函數減少SQL開銷 使用綁定變量:使用綁定變量,變量值在查詢執行時提供 避免不合適的視圖使用 避免不必要的全表掃描數據庫安全的基本要求:confidentiality機密性、integrity完整性、availability可用性。數據庫的安全性措施:Access control訪問控制:明確說明誰可以訪問及怎么樣訪問;Inference control 推理控制:防止通過統計數據推導出機密性數據(統計數據庫的安全性);Flow control流的控制:防止信息向未授權的用戶流通;C

21、ryptographic control加密控制:保護放在不安全介質中的數據;數據庫審計:記錄應用到數據庫的所有更新操作和實施每個更新操作的餓特定用戶,一邊找出非法的或是未經過授權的操作并確定執行該操作的賬號;數據加密:使用一些編碼算法可以對數據進行編碼,未授權的用戶很難從已經編碼的數據中破解出原文。使用視圖用于訪問控制:假設需要限制對元祖子集的訪問,創建包含這些子集的視圖,然后授予對視圖的操作權限,而不授予對基表的操作權限。訪問控制策略:Discretionary Access Control (DAC,自主存取控制) 、Mandatory Access Control (MAC,強制存取控

22、制)、Role-Based Access Control (RBAC,基于角色的存取控制)自主訪問控制存在的問題以及解決方案:A問題一:訪問權限會因為grant option 而隨之擴散,難以控制,管理,回收等問題;解決方案:指定權限傳播的限定,用一個正整數i來限定水平傳播和垂直授權深度(包括自身);B問題二:由于僅僅通過對數據的存取權限來進行安全控制,而數據本身沒有安全性標記,可能存在數據的“無意泄露”;解決方案:對系統控制下的所有主客體實施強制存取控制策略。多級安全性的強制訪問控制(每對象分配一個安全級別,每個主體(用戶或進程)分配一個許可):A每個數據對象分配一個安全級別,每個主題、用戶

23、或進程分配一個許可;(安全級別分為絕密、機密、秘密、無分類)B強制存取控制的規則:簡單安全性除非class(s)>=class(o),主體s不能讀取客體o;性質:除非class(s)<=class(o),主體s不能寫客體o。基于角色的訪問控制(被命名的一組與數據庫操作相關的權限):角色是權限的集合、可以為一組具有相同權限的用戶創建一個角色、簡化授權的過程推理控制防備策略:A查詢控制:規則一查詢至少涉及N(N足夠大)個以上的記錄;規則2任意兩個查詢的相交數據項不能超過M;規則3任一用戶的查詢次數不能超過1+(N-2)/MB條目控制:抑制(包含敏感數據的查詢被拒絕)、隱藏(提供的答案是

24、接近的但不是準確的)關系數據庫的優勢:1. 從事數據庫研究與運用的人大多數熟悉關系數據庫2. 現有關系數據庫具有相當多的用戶和顧客,具有主流的商業市場3. 關系查詢語言具有很好的數學支撐,便于進一步研究和推廣4. 現有的關系數據庫語言具有廣泛使用的工業標準對象組成:A、名稱name,在方案內唯一標識一個對象類型B、屬性attribute,表示真實世界實體的結構與狀態。屬性可以是Oracle 內置數據類型,也可以是其他用戶定義類型。C、方法method,以PL/SQL 或Java編寫并存儲于數據庫中,或以C 之類的語言編寫并存儲于數據庫外部的過程或函數。方法可供應用程序調用以操作代表真實世界實體

25、的對象。列對象:表中的列值是用戶定義的對象類型;行對象:表中的每一行是用戶定義的對象類型;關系表和對象表區別:關系表中的每一行有一個或多個列,其中某些列可以是對象類型,但是沒有一個對象類型可以藐視整一行;對象表中的每一行都是具有一定屬性的行對象,整個行就是一個對象類型,行對象的屬性有有效的列名。XML特點:更多的結構和語義、可擴展性、自描述性、數據與顯示分離、簡潔性XML文檔常用語法及說明:XML說明:是對XML文檔處理的環境和要求說明,在文檔的第一行以“<?”開始,“?>”結束,例如<? xml version=”1.0” encoding=”UTF-8” standalo

26、ne=”no”?>元素:元素就是一對互相匹配的開始和結束標簽以及他們之間的文本,XML文檔必須有且只有一個獨立的根(root)元素來包含文檔中的所有其他元素屬性:屬性通常用來描述元素的有關信息,屬性名和屬性值在元素的起始標記中給出,一個元素可以有任意多個不同名字的屬性,屬性值并必須出現在單引號或是雙引號中名字空間:名字空間機制允許一些組織機構制定全球唯一的名字作為文檔中的元素標簽使用,在每個標簽或是屬性的前面加上通用資源標示符(比如網址),以區別別人定義的標簽和屬性,命名空間標準提供了一種定義標識符縮寫的方法,如<bank xmlns:FB=><FB:branch>

27、;<FB:branch_name>Downtown</FB:branch_name></FB:branch></bank>處理指令:是為使用一段特殊代碼而設計的標記,通常用來處理XML文檔的應用程序提供信息,格式為<?target data?>,如<?display table-view?>注釋:注釋以<!-開始,以->結束,這兩字符之間是注釋的文本內容,可以在XNL文檔的任何地方插入良構的XML文檔:只有一個根元素,至少包括一個元素(即根元素),所有起始標記都與之對應的終止標記,或是使用空元素速記法,所有的標

28、記都有正確的嵌套,每個元素的所有屬性具有不同的屬性名實體:XML文檔中對于重復使用的文檔內容可以使用實體來定義,格式為<!entity 實體名 “實體內容”> 例如:<!entity dw “Data Warehouse”>,引用實體的格式:&實體名文檔類型定義DTD:文檔類型定義是XML標準組成部分的第一種模式定義語言,用來描述XML文檔的結構,定義了XML文檔可以出現的元素、屬性、元素出現的次序、次數、如何相互嵌套以及其他詳細信息,包括定義元素和定義屬性;定義元素的格式:<!element 元素名(元素內容描述)>其中元素中的符號意思如下:#pc

29、data表示文本數據|或+一個或多個*零個或多個?指定一個可選的元素(零個或是一個)Empty元素沒有內容Any對這個元素的子元素沒有任何的限制定義屬性的格式:<!attlist 元素名(屬性名 屬性類型 缺省聲明)*>,屬性沒有順序之分,可以指定為類型cdata、id、idref或idrefs,其中CDATA表明這個屬性包含字符數據ID的屬性提供在這個元素的唯一標識符IDREF的屬性是對一個元素的引用IDREFS允許以空格分開的一個引用列表XPath是一種用于路徑表達式的語言,通過路徑表示式指向一個XML文檔的部分內容,XPath還可以使用“”符號訪問屬性值,可以在路徑的每一個操

30、作步驟中使用選擇謂詞。選擇謂詞包含在方括號中,如/bank/customer/customer_name、/bank/accountbalance>400XQuery:是查詢XML數據的標準語言,它的模型是仿照SQL而設計的,但由于它要處理嵌套XML數據,因此與SQL有明顯的差異,語法包括FLOWR表達式、連接、嵌套查詢、結果的排序、函數和類型FLOWR表達式包括五個部分,for(想sql中的from子句,指定在XPath表達式結果上變動的變量),let(允許直接將XPath表達式的結果賦值給變量名以簡化表達),where(相當于sql的where子句,對來自for子句的連接元組進行附加

31、的測試),order by(允許對結果進行排序),和return(允許構造XML形式的結果)連接在XQuery中指定連接與在SQL中指定連接很相似嵌套查詢Query FLOWR表達式可以嵌套在return子句中結果排序order by子句在XQuery中隊結果排序函數和類型XQuery提供很多內建函數,也支持用戶定義函數SQL/XML:定義了新的數據類型(XML數據類型)和一組函數(包括XMLElement函數、XMLAttributes函數、XMLNamespaces函數、XMLForest函數、XMLConcat函數、XMLAGG函數、ZMLComment函數、ZMLPI函數),實現了在S

32、QL中對XML的操作,(包括XML的構造、抽取,XML數據和關系數據之間的相互轉換等)使得XML數據可以存儲在關系數據庫中,可以用標準的查詢語言XQuery從中提取信息(包括XMLQUery函數、XMLTable函數、XMLExists函數),也可以將關系數據轉換成XML的形式呈現給用戶結構化存儲將結構化XML存儲實現為一組對象優點:A、結構化存儲上的XML操作有助于減少內存和存儲,因為沒有存儲XML 標記,而且存在更細粒度的數據檢索和使用。B、可通過表和索引設計提供更多的查詢和更新優化缺點:A、插入和檢索整個文檔需要更多開銷B、只能存儲匹配XMLSchema的文檔C、不保留文檔中的數據順序非

33、結構化存儲XMLType存儲為單個的LOB列優點:a、存儲數據匹配文檔的準確物理表示b、數據不經常更新,或者整個文檔(而非部分文檔)有大量的插入和讀取時比較高效缺點:A、對部分文檔的更新通常不如結構化數據那樣高效B、使用函數從CLOB 構造DOM 的XPath操作將使用大量的系統資源。C、SQL 約束無法實現D、內存管理效率不高相關的SQL語句啟動數據庫有三個步驟::Start an instance (啟動實例):Parameter file(參數文件) read、Instance startedMount the database (裝載數據庫):Control file opened f

34、or this instanceOpen the database (打開數據庫):All files opened as described by the control file for this instance(注意啟動數據庫必須先用管理員權限連到數據庫)能創建表的條件:1.用戶在表空間有配額CREATE USER USERNAMEIDENTIFIED BY PASSWORDDEFAULT TABLESPACE usersTEMPORARY TABLESPACE tempQUOTA 15m ON users;alter user hr quota 15m on TABLESPACE_n

35、ame;alter user ap quota unlimited on TABLESPACE_name;Grant unlimited tablespace to user_name; 2.用戶有創建表的權限Grant create table to USERNAME創建和使用用戶概要文件:create profile miser limitconnect_time 120fail_login_attempts 3idle_time 60session_per_user 2資源參數:􀂾CONNECT_TIME: 指定一個會話能保持連接到數據庫的總時間(以秒計)⣷

36、66; CPU_PER_CALL: 限制事務內每個調用使用的CPU時間􀂾 CPU_PER_SESSION: 限制會話中使用的總CPU時間􀂾􀂾SESSIONS_PER_USER: 指定用戶可打開的并發會話的最大數目.􀂾IDLE_TIME: 限制一個會話空閑的時間量.􀂾LOGICAL_READS_PER_SESSION: 限制數據塊讀取(從SGA內存區和磁盤讀取)的總數目􀂾 LOGICAL_READS_PER_CALL: 限制每個會話調用(分析、執行和取數據)的總的邏輯讀取數。⣷

37、66; PRIVATE_SGA:指定一個會話在SGA的共享區中分配的空間限制(僅適用于共享服務器體系結構的系統).􀂾 COMPOSITE_LIMIT: 對資源使用設置一個總的限制。密碼參數:􀂾FAILED_LOGIN_ATTEMPTS: 指定一個用戶在被鎖定之前可嘗試的登錄次數􀂾 PASSWORD_LIFE_TIME:.設置使用一個特定密碼的時間限制。如果在這個指定時間內不更改密碼,則密碼過期。􀂾 PASSWORD_GRACE_TIME: 設置一個時間段,在此時間段內將發出密碼已經過期的警告。在此寬限時間段后,用該密碼不能

38、連接數據庫。􀂾PASSWORD_LOCK_TIME: 指定在達到不成功登錄嘗試的最大次數后,用戶將被鎖定多少天。􀂾 PASSWORD_REUSE_TIME: 指定可重新使用相同密碼前要經過的天數。􀂾 PASSWORD_REUSE_MAX:. 確定在可以重新使用某個特定密碼前可更改該密碼多少次。􀂾PASSWORD_VERIFY_FUNCTION: 如果不希望使用Oracle提供的默認驗證函數,此參數允許你指定自己的密碼驗證函數。創建表空間teacher,并指定為用戶teacher的默認表空間create tablespace

39、 teacherdatafile 'e:/teacher.dbf'size 2M;alter user teacher1default tablespace teacher;-創建角色student并授權create role student;-授權角色student查看學生信息grant select on StudentInfo to student;-授權角色給用戶grant student to student_me;-創建ClassInfo外鍵約束條件alter table ClassInfo add constraint Class_Course_coursID_f

40、k1 foreign key(courseID) references CourseInfo(courseID) on delete cascade;修改表列屬性:alter table classinfo drop(classtime);alter table classinfo add(classtime data_huang)將某個表空間設為備份模式ALTER TABLESPACE name BEGIN BACKUP;使用操作系統命令將該表空間所有數據文件備份copy c:usersdisk1user01.orae:usersbackupuser01.ora結束該表空間的備份模式ALTE

41、R TABLESPACE name END BACKUP;產生一個控制文件的二進制拷貝ALTER DATABASE BACKUP CONTROLFILE TOd:backcontrol.bkp產生一個包含create controlfile 語句的文本文件 ALTER DATABASE BACKUP CONTROLFILE TO TRACE數據庫完全恢復步驟:1.確保數據庫已經關閉(使用ABORT操作)SHUTDOWN ABORT;2.使用最后的數據庫備份來恢復數據文件;3.如果當前的控制文件丟失,使用鏡像版本賦值到已經修好的磁盤中,或者重新創建控制文件;4.還原已經歸檔的所有日志;5.如果服

42、務器參數文件損壞,則利用備份的初始化參數文件創建服務器參數文件;CREATE SPFILE FROM PFILE;6.將數據庫啟動到MOUNT狀態;STARTUP MOUNT;使用RECOVER命令進行恢復RECOVER DATABASE;恢復完后,重新打開數據庫ALTER DATABASE OPEN;授予系統權限:GRANT system_privilege|role , system_privilege|role .TO user|role|PUBLIC , user|role|PUBLIC .WITH ADMIN OPTION授予對象權限:GRANT ALL PRIVILEGES|pri

43、vilege ,privilegeON TABLE tablename |viewnameTO PUBLIC|user-name, user-nameWITH GRANT OPTION你可以用REVOKE 語句收回已經授予用戶的權限用WITH GRANT OPTION 轉授出去的權限同時被收回,而系統權限卻收不回來用WITH ADMIN OPTION 轉授出去的權限。指定AUDIT_TRAIL 參數啟用審計􀂾 NONE: 禁用數據庫審計。這是默認值􀂾􀂾 OS: 將審計記錄寫到一個操作系統文件􀂾 DB: 將審計記錄寫到數據庫

44、審計跟蹤(存儲在SYS.AUD$表中)􀂾 DB, EXTENDED: 將審計記錄寫到數據庫審計跟蹤,還填充SQLBIND 和SQLTEXT CLOB 列􀂾 XML: 指定數據庫審計,進入OS文件的是XML格式的審計記錄􀂾 XML, EXTENDED: 與XML設置相同,而且還記錄所有的審計跟蹤列,包括SQLTEXT 和SQLBINDAUDIT UPDATE ANY TABLE;AUDIT SESSION BY SALAPATI;AUDIT SELECT,INSERT,UPDATE,DELETEON employees BY ACCESS W

45、HENEVER SUCCESSFUL;AUDIT ALL PRIVILEGES;在AUDIT的位置使用NO AUDIT就是關閉審計的意思A 建立帶有結構的表:objectobject公共的前提條件: (加as object) Object(方法一: 方法二: B建立具有無名稱的行類型的表的方法:create table customer_r (name row(firstname varchar(20),lastname varchar(20),address row(street varchar(20),city varchar(20),zipcode varchar(20),dateOfB

46、irth date)在結構類型上定義方法:create type CustomerType as object(name Name, address Address, dateOfBirth date) not finalmethod ageOnDate (onDate date)returns interval yearcreate instance method ageOnDate (onDate date)returns interval yearfor CustomerTypebeginreturn onDate - self.dateOfBirth;end查看:select name

47、.lastname, ageOnDate (current_date)from customer類型繼承:(一個類型可以被繼承,在聲明此類型時應使用NOT FINAL 關鍵字;在默認情況下類型的繼承屬性是FINAL;只能繼承自一個父類型)create type Person as object(name varchar(20),address varchar(20)表繼承:create table people of Personcreate table students of Studentunder peoplecreate type Studentunder Person(degree

48、varchar(20),department varchar(20)查看繼承類型:通過desc Student查看表結構時發現,后面創建的Student類型已經默認繼承了personinsert into booksvalues (Compilers, arraySmith,Jones,new Publisher (McGraw-Hill,New York),multiset parsing,analysis )數組和多重集合類型的建立,插入,查詢create type Publisher as(name varchar(20),branch varchar(20)select author-

49、array1, author-array2from bookswheredatabase in (unnest(keyword-set )select B.title, A.authorfrom books as B, unnest (B.author-array) as A (author )create type Book as(title varchar(20),author-array varchar(20) array 10,pub-date date,publisher Publisher,keyword-set varchar(20) multiset )create table

50、 books of Bookunnest with ordinality子句可以用于獲得元組中元素的順序信息select title, author, Publisher (pub_name,pub_branch ) as publisher,collect (keyword) as keyword_setfrom flat-booksgroup by title, author, publisherselect B.title, A.author, A.positionfrom books as B, unnest (B.author-array)with ordinality as A (

51、author, position )array:有序,存在主表,要同時說明最大元素個數Multiset:無序,存在主表,元素可重復出現建立自定義的數據類型data_huangcreate or replace type data_huang as OBJECT(classBegin date,classEnd date,classPlace VARCHAR2(50)創建一個ClassInfoTemp表,(其中classTime字段的類型用自定義類型data_huang代替) CREATE TABLE ClassInfoTemp ("CLASSID" NUMBER(10,0)

52、, "CLASSNAME" VARCHAR2(32 BYTE), "TEACHERID" VARCHAR2(18 BYTE), "COURSEID" VARCHAR2(8 BYTE), "DEPARTMENTCODE" VARCHAR2(5 BYTE), "CLASSYEAR" VARCHAR2(6 BYTE), "CLAEEPLACE" VARCHAR2(40 BYTE), "CLASSTIME" DATA_HUANG , PRIMARY KEY (&q

53、uot;CLASSID") )往上面這個表中插入25行記錄,并根據上課地點查詢該表所有記錄。insert into classinfotemp values(1111111111,'bingnan_1','133','2d4','c13','2011','aa', new data_huang ('2011-11-25 08:45:00','2011-11-25 10:25:00','503')建立包含上課時間地點信息也即(data_huan

54、g)類型的數據表classtimecreate table classtime of data_huang或是create type classtime as table of data_huang接著建立classinfo2表Select classtime1 from classinfo2Where classid =1;Select classid from classinfo2 cWhere 6<(select count(*) from table(c.classtime1) CREATE TABLE ClassInfo2 ("CLASSID" NUMBER

55、(10,0), "CLASSNAME" VARCHAR2(32 BYTE), "TEACHERID" VARCHAR2(18 BYTE), "COURSEID" VARCHAR2(8 BYTE), "DEPARTMENTCODE" VARCHAR2(5 BYTE), "CLASSYEAR" VARCHAR2(6 BYTE), "CLAEEPLACE" VARCHAR2(40 BYTE), "CLASSTIME1" classtime , PRIMARY K

56、EY ("CLASSID") ) nested table classtime1 store as classtime_tab插入一條包含兩條classtime信息的classinfo2行insert into classinfo2 values(1111111111,'bingnan_1','133','2d4','c13','2011','aa', classtime(data_huang('2011-11-25 08:45:00','2011-11-

57、25 10:25:00','503'), data_huang('2011-11-26 15:45:00','2011-11-26 17:15:00','503')(注意查詢的時候有varray、nested table就用表別名,保證不錯)Varray:有序,存在主表,要同時說明最大元素個數Nested table:單獨存放,無序XML使用:創建職工表employees表create table enployees( eid number(10) primary key, einfo sys.xmltype);向上面的表插入數據insert into enployeesvalues(2,sys.xmltype.createxml('<einfo> <name>小明</name> <gender>男</gender> <age>2

溫馨提示

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

評論

0/150

提交評論