PL/SQL編程及Oracle體系結(jié)構(gòu)_第1頁
PL/SQL編程及Oracle體系結(jié)構(gòu)_第2頁
PL/SQL編程及Oracle體系結(jié)構(gòu)_第3頁
PL/SQL編程及Oracle體系結(jié)構(gòu)_第4頁
PL/SQL編程及Oracle體系結(jié)構(gòu)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第八章PL/SQL編程及Oracle體系結(jié)構(gòu)第二單元本章相關(guān)學(xué)習(xí)資源《PL/SQL編程基礎(chǔ)》專題《Oracle體系結(jié)構(gòu)》專題《Web前端基礎(chǔ)及數(shù)據(jù)庫開發(fā)》第8章《PL/SQL編程及Oracle體系結(jié)構(gòu)》學(xué)習(xí)平臺“Oracle數(shù)據(jù)庫”課程學(xué)生用書第2頁/共36頁預(yù)習(xí)檢查什么是PL/SQL?舉例說明如何聲明變量。Oracle物理結(jié)構(gòu)包含哪些?Oracle邏輯結(jié)構(gòu)包含哪些?提問第3頁/共36頁本章任務(wù)任務(wù)1:使用PL/SQL處理雇員業(yè)務(wù)任務(wù)2:認(rèn)識Oracle體系結(jié)構(gòu)第4頁/共36頁理解PL/SQL組成及其體系結(jié)構(gòu)了解變量及其用法會使用控制語句進行編程理解Oracle體系結(jié)構(gòu)本章目標(biāo)點重點難點重能夠使用異常處理問題點難第5頁/共36頁講解:PL/SQL的體系結(jié)構(gòu)PL/SQL

是過程語言(ProceduralLanguage)與結(jié)構(gòu)化查詢語言(SQL)結(jié)合而成的編程語言PL/SQL

引擎駐留在Oracle

服務(wù)器中該引擎接受PL/SQL

塊并對其進行編譯執(zhí)行將PL/SQL

塊發(fā)送給Oracle服務(wù)器用戶執(zhí)行過程語句引擎將SQL語句發(fā)送給SQL語句執(zhí)行器Oracle服務(wù)器PL/SQL引擎SQL

語句

執(zhí)行器過程語句

執(zhí)行器執(zhí)行SQL語句將結(jié)果發(fā)送給用戶第6頁/共36頁講解:PL/SQL塊簡介PL/SQL塊是構(gòu)成PL/SQL

程序的基本單元將邏輯上相關(guān)的聲明和語句組合在一起PL/SQL

分為三個部分,聲明部分、可執(zhí)行部分和異常處理部分

第7頁/共36頁語法[DECLARE

declarations]

BEGINexecutablestatements[EXCEPTION

handlers]END;串講:變量和常量聲明變量時注意什么?變量有哪些賦值方法?網(wǎng)絡(luò)提問演示示例:變量和常量聲明賦值第8頁/共36頁講解:數(shù)據(jù)類型PL/SQL

支持的內(nèi)置數(shù)據(jù)類型數(shù)據(jù)類型LOB類型標(biāo)量類型屬性類型%ROWTYPE數(shù)字字符布爾型日期時間BFILEBLOBCLOBNCLOB%TYPE提供某個變量或數(shù)據(jù)庫表列的數(shù)據(jù)類型提供表示表中一行的記錄類型存儲非結(jié)構(gòu)化數(shù)據(jù)塊第9頁/共36頁講解:字符數(shù)據(jù)類型數(shù)據(jù)類型SQL類型PL/SQL類型CHAR1..20001..32767LONG1..2GB1..32760LONGRAW1..2GB1..32760RAW1..20001..32767VARCHAR21..40001..32767字符數(shù)據(jù)類型包括:CHARVARCHAR2LONGRAWLONGRAWPL/SQL

的數(shù)據(jù)類型與SQL數(shù)據(jù)類型的比較第10頁/共36頁串講:屬性類型用于引用數(shù)據(jù)庫列的數(shù)據(jù)類型,以及表示表中一行的記錄類型屬性類型有兩種:%TYPE-引用變量和數(shù)據(jù)庫列的數(shù)據(jù)類型%ROWTYPE-提供表示表中一行的記錄類型使用屬性類型的優(yōu)點:不需要知道被引用的表列的具體類型如果被引用對象的數(shù)據(jù)類型發(fā)生改變,PL/SQL變量的數(shù)據(jù)類型也隨之改變第11頁/共36頁串講:控制結(jié)構(gòu)PL/SQL支持的流程控制結(jié)構(gòu):條件控制IF

語句CASE

語句循環(huán)控制LOOP

循環(huán)WHILE

循環(huán)FOR

循環(huán)順序控制GOTO

語句NULL

語句演示示例:順序控制語句第12頁/共36頁講解:異常處理在運行程序時出現(xiàn)的錯誤叫做異常發(fā)生異常后,語句將停止執(zhí)行,控制權(quán)轉(zhuǎn)移到PL/SQL

塊的異常處理部分異常有三種類型:第13頁/共36頁預(yù)定義異常當(dāng)PL/SQL

程序違反Oracle

規(guī)則或超越系統(tǒng)限制時隱式引發(fā)用戶不需要在程序中定義非預(yù)定義異常當(dāng)PL/SQL

程序違反Oracle

規(guī)則或超越系統(tǒng)限制時隱式引發(fā)用戶需要在程序中定義用戶定義異常需要用戶在程序中定義顯式地在程序中將其引發(fā)串講:預(yù)定義異常處理異常處理程序的語法BEGINsequence_of_statements;EXCEPTION

WHEN<exception_name>THENsequence_of_statements;

WHENOTHERSTHENsequence_of_statements;END;語法第14頁/共36頁在PL/SQL塊的定義部分定義異常情況:將其定義好的異常情況,與標(biāo)準(zhǔn)的Oracle錯誤聯(lián)系起來,使用EXCEPTION_INIT

語句:

在PL/SQL塊的異常情況處理部分對異常情況做出相應(yīng)的處理。講解:非預(yù)定義異常處理問題實現(xiàn)步驟<異常情況>EXCEPTION;PRAGMAEXCEPTION_INIT(<異常情況>,<錯誤代碼>);演示示例:非預(yù)定義異常第15頁/共36頁實現(xiàn)修改編號為7788的雇員所屬的部門編號為99查詢編號為7788的雇員的福利補助(comm列)在PL/SQL塊的定義部分定義異常情況:拋出異常情況:

在PL/SQL塊的異常情況處理部分對異常情況做出相應(yīng)的處理。講解:用戶定義異常處理問題實現(xiàn)步驟<異常情況>EXCEPTION;RAISE<異常情況>;演示示例:用戶自定義異常第16頁/共36頁上機練習(xí)需求說明刪除部門表中部門編號為30的記錄部門編號要聲明成變量存儲完成時間:10分鐘共性問題集中講解練習(xí)關(guān)鍵代碼雇員表要建立與部門表之間的外鍵約束第17頁/共36頁小結(jié)PL/SQL

塊由哪3部分組成?PL/SQL中控制語句有哪些?闡述PL/SQL

的3種異常錯誤類型。提問第18頁/共36頁講解:Oracle體系結(jié)構(gòu)數(shù)據(jù)庫的體系結(jié)構(gòu)是指數(shù)據(jù)庫的組成、工作過程與原理,以及數(shù)據(jù)在數(shù)據(jù)庫中的組織與管理機制Oracle服務(wù)器提供開放、全面和綜合的信息管理,它由Oracle數(shù)據(jù)庫和Oracle實例組成Oracle服務(wù)器Oracle數(shù)據(jù)庫Oracle

實例Oracle數(shù)據(jù)庫是一個數(shù)據(jù)的集合,該集合被視為一個邏輯單元管理數(shù)據(jù)庫的后臺進程和內(nèi)存結(jié)構(gòu)的集合稱為Oracle實例

第19頁/共36頁講解:Oracle主要組件實例內(nèi)存結(jié)構(gòu)后臺進程

PMONSMONDBWRLGWRCKPT其他

數(shù)據(jù)庫數(shù)據(jù)文件數(shù)據(jù)文件數(shù)據(jù)文件控制文件控制文件日志文件日志文件參數(shù)文件歸檔日志文件口令文件SGA系統(tǒng)全局區(qū)用戶進程服務(wù)器進程PGA程序全局區(qū)共享池數(shù)據(jù)緩沖區(qū)日志緩沖區(qū)第20頁/共36頁講解:Oracle實例Oracle實例是后臺進程和內(nèi)存結(jié)構(gòu)的集合Oracle實例系統(tǒng)全局區(qū)后臺進程分配啟動第21頁/共36頁講解:Oracle實例內(nèi)存結(jié)構(gòu)Oracle的內(nèi)存結(jié)構(gòu)包含以下內(nèi)存區(qū):系統(tǒng)全局區(qū)(SGA)程序全局區(qū)(PGA)Oracle實例啟動時分配系統(tǒng)全局區(qū)當(dāng)服務(wù)器進程啟動時分配程序全局區(qū)內(nèi)存區(qū)用戶全局區(qū)(UGA)用戶全局區(qū)為用戶進程存儲會話狀態(tài)第22頁/共36頁講解:系統(tǒng)全局區(qū)

數(shù)據(jù)庫信息存儲于SGA,由多個數(shù)據(jù)庫進程共享共享池數(shù)據(jù)緩沖區(qū)日志緩沖區(qū)SGA的內(nèi)存結(jié)構(gòu)第23頁/共36頁講解:系統(tǒng)全局區(qū)第24頁/共36頁共享池直接影響數(shù)據(jù)庫的性能共享池是對SQL、PL/SQL程序進行語法分析、編譯、執(zhí)行的內(nèi)存區(qū)域共享池由庫緩存和數(shù)據(jù)字典緩存組成數(shù)據(jù)緩沖區(qū)直接影響數(shù)據(jù)庫的讀取速度

用于存儲從磁盤數(shù)據(jù)文件中讀入的數(shù)據(jù),所有用戶共享服務(wù)器進程將讀入的數(shù)據(jù)保存在數(shù)據(jù)緩沖區(qū)中,當(dāng)后續(xù)的請求需要這些數(shù)據(jù)時可以在內(nèi)存中找到,不需要再從磁盤讀取,提高了讀取速度日志緩沖區(qū)數(shù)據(jù)庫的性能影響較小日志記錄數(shù)據(jù)庫的所有修改信息,日志信息首先產(chǎn)生于日志緩沖區(qū)當(dāng)日志緩沖區(qū)的日志數(shù)據(jù)達到一定數(shù)量時,由后臺進程將日志數(shù)據(jù)寫入日志文件中講解:程序全局區(qū)程序全局區(qū)(PGA)包含單個服務(wù)器進程所需的數(shù)據(jù)和控制信息PGA是在用戶進程連接到數(shù)據(jù)庫并創(chuàng)建一個會話時自動分配的,保存每個與Oracle數(shù)據(jù)庫連接的用戶進程所需的信息PGA為非共享區(qū),只能單個進程使用,當(dāng)一個用戶會話結(jié)束,PGA釋放第25頁/共36頁什么是程序全局區(qū)?問題講解:用戶全局區(qū)用戶全局區(qū)(UGA)為用戶進程存儲會話狀態(tài)UGA可以作為SGA或者PGA的一部分。具體位置取決于如何連接Oracle:如果通過一個共享服務(wù)器連接,UGA包含在SAG中如果通過一個專有服務(wù)器連接,UGA就包含在專有服務(wù)器的PGA中第26頁/共36頁什么是用戶全局區(qū)?問題講解:Oracle實例進程結(jié)構(gòu)Oracle

實例有幾種不同類型的進程實例進程用戶進程服務(wù)器進程后臺進程用戶進程是一個需要與Oracle服務(wù)器進行交互的程序。當(dāng)用戶運行一個應(yīng)用程序準(zhǔn)備向數(shù)據(jù)庫服務(wù)器發(fā)送請求時,即創(chuàng)建了用戶進程服務(wù)器進程用于處理連接到該實例的用戶進程的請求。當(dāng)用戶連接至Oracle

數(shù)據(jù)庫實例創(chuàng)建會話時,即產(chǎn)生服務(wù)器進程后臺進程是Oracle數(shù)據(jù)庫為了保持最佳系統(tǒng)性能和協(xié)調(diào)多個用戶請求而設(shè)置的。Oracle實例啟動時即創(chuàng)建一系列后臺進程第27頁/共36頁講解:后臺進程后臺進程PMON實例的各種后臺進程是:SMONDBWRLGWRCKPT其他第28頁/共36頁講解:后臺進程第29頁/共36頁PMON

進程監(jiān)控進程清理出現(xiàn)故障的進程釋放所有當(dāng)前掛起的鎖定釋放故障進程使用的資源SMON

系統(tǒng)監(jiān)控進程在實例失敗之后,重新打開數(shù)據(jù)庫時自動恢復(fù)實例整理數(shù)據(jù)文件的自由空間,將相鄰區(qū)域結(jié)合起來釋放不再使用的臨時段DBWR

數(shù)據(jù)寫入進程管理數(shù)據(jù)緩沖區(qū),將最近使用過的塊保留在內(nèi)存中將修改后的緩沖區(qū)數(shù)據(jù)寫入數(shù)據(jù)文件中

LGWR

日志寫入進程負(fù)責(zé)將日志緩沖區(qū)中的日志數(shù)據(jù)寫入日志文件系統(tǒng)有多個日志文件,該進程以循環(huán)的方式將數(shù)據(jù)寫入文件講解:Oracle物理組件物理組件就是Oracle數(shù)據(jù)庫所使用的操作系統(tǒng)物理文件。物理文件可分為三類:物理組件數(shù)據(jù)文件控制文件日志文件數(shù)據(jù)文件用于存儲數(shù)據(jù)庫數(shù)據(jù),如表、索引數(shù)據(jù)等控制文件是記錄數(shù)據(jù)庫物理結(jié)構(gòu)的二進制文件日志文件記錄對數(shù)據(jù)庫的所有修改信息,用于故障恢復(fù)第30頁/共36頁講解:Oracle邏輯組件數(shù)據(jù)庫的邏輯結(jié)構(gòu)是從邏輯的角度分析數(shù)據(jù)庫的組成。Oracle的邏輯組件包括:數(shù)據(jù)庫表空間段區(qū)數(shù)據(jù)塊

模式第31頁/共36頁小結(jié)Oracle物理結(jié)構(gòu):(

)、(

)、(

)。Oracle

邏輯結(jié)構(gòu):(

)、(

)、(

)、(

)。Oracle

內(nèi)存結(jié)構(gòu):(

)、(

)、(

)。Oracle進程結(jié)構(gòu):(

)、(

)、()。提問控制文件

數(shù)據(jù)文件日志文件表空間

區(qū)塊系統(tǒng)全局區(qū)(SGA)

程序全局區(qū)(PGA)

用戶全局區(qū)(UGA)后臺進程

用戶進程

服務(wù)器進程

第32頁/共36頁答疑時間同學(xué)們請就以下方面的問題請教老師Oracle容易混淆的幾個概念(教員備課時自行填寫)第33頁

溫馨提示

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

評論

0/150

提交評論