版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
ORACLE培訓(xùn)教材之第一講ORACLE公司自86年推出版本5開始,系統(tǒng)具有分布數(shù)據(jù)庫處理功能.88年推出版本6,ORACLERDBMS(V6.0)可帶事務(wù)處理選項(xiàng)(TPO),提高了事務(wù)處理的速度.1992年推出了版本7,在ORACLERDBMS中可帶過程數(shù)據(jù)庫選項(xiàng)(proceduraldatabaseoption)和并行服務(wù)器選項(xiàng)(parallelserveroption),稱為ORACLE7數(shù)據(jù)庫治理系統(tǒng),它開釋了開放的關(guān)系型系統(tǒng)的真正潛力。ORACLE7的協(xié)同開發(fā)環(huán)境提供了新一代集成的軟件生命周期開發(fā)環(huán)境,可用以實(shí)現(xiàn)高生產(chǎn)率、大型事務(wù)處理及客戶/服務(wù)器結(jié)構(gòu)的應(yīng)用系統(tǒng)。協(xié)同開發(fā)環(huán)境具有可移植性,支持多種數(shù)據(jù)來源、多種圖形用戶界面及多媒體、多民族語言、CASE等協(xié)同應(yīng)用系統(tǒng)。ORACLE系統(tǒng)ORACLE產(chǎn)品結(jié)構(gòu)及組成ORACLE系統(tǒng)是由以RDBMS為核心的一批軟件產(chǎn)品構(gòu)成,其產(chǎn)品結(jié)構(gòu)輪廓下圖所示:ORACLE*REPORTORACLE*FORMSSQL*PLUS用戶編制的程序SQL*CALCSQL*GRAPHICORACLE*REPORTORACLE*FORMSSQL*PLUS用戶編制的程序SQL*CALCSQL*GRAPHIC程序接口程序接口(SQL執(zhí)行程序)ORACLE內(nèi)核ORACLE內(nèi)核(RDBMS)操作系統(tǒng)操作系統(tǒng)數(shù)據(jù)字典DD數(shù)據(jù)字典DD數(shù)據(jù)庫DBORACLE系統(tǒng)特點(diǎn)ORACLE公司于1979年,第一推出基于SQL標(biāo)準(zhǔn)的關(guān)系數(shù)據(jù)庫產(chǎn)品,可在100多種硬件平臺上運(yùn)行(所括微機(jī)、工作站、小型機(jī)、中型機(jī)和大型機(jī)),支持專門多種操作系統(tǒng)。用戶的ORACLE應(yīng)用可方便地從一種運(yùn)算機(jī)配置移至另一種運(yùn)算機(jī)配置上。ORACLE的分布式結(jié)構(gòu)可將數(shù)據(jù)和應(yīng)用駐留在多臺運(yùn)算機(jī)上,而相互間的通信是透亮的。1992年6月ORACLE公司推出的ORACLE7協(xié)同服務(wù)器數(shù)據(jù)庫,使關(guān)系數(shù)據(jù)庫技術(shù)邁上了新臺階。依照IDG(國際數(shù)據(jù)集團(tuán))1992年全球UNIX數(shù)據(jù)庫市場報(bào)告,ORACLE占市場銷售量50%。它之因此倍受用戶喜愛是因?yàn)樗幸韵峦怀龅奶攸c(diǎn):支持大數(shù)據(jù)庫、多用戶的高性能的事務(wù)處理。ORACLE支持最大數(shù)據(jù)庫,其大小可到幾百千兆,可充分利用硬件設(shè)備。支持大量用戶同時(shí)在同一數(shù)據(jù)上執(zhí)行各種數(shù)據(jù)應(yīng)用,并使數(shù)據(jù)爭用最小,保證數(shù)據(jù)一致性。系統(tǒng)愛護(hù)具有高的性能,ORACLE每天可連續(xù)24小時(shí)工作,正常的系統(tǒng)操作(后備或個(gè)別運(yùn)算機(jī)系統(tǒng)故障)可不能中斷數(shù)據(jù)庫的使用。可操縱數(shù)據(jù)庫數(shù)據(jù)的可用性,可在數(shù)據(jù)庫級或在子數(shù)據(jù)庫級上操縱。ORACLE遵守?cái)?shù)據(jù)存取語言、操作系統(tǒng)、用戶接口和網(wǎng)絡(luò)通信協(xié)議的工業(yè)標(biāo)準(zhǔn)。因此它是一個(gè)開放系統(tǒng),愛護(hù)了用戶的投資。美國標(biāo)準(zhǔn)化和技術(shù)研究所(NIST)對ORACLE7SERVER進(jìn)行檢驗(yàn),100%地與ANSI/ISOSQL89標(biāo)準(zhǔn)的二級相兼容。實(shí)施安全性操縱和完整性操縱。ORACLE為限制各監(jiān)控?cái)?shù)據(jù)存取提供系統(tǒng)可靠的安全性。ORACLE實(shí)施數(shù)據(jù)完整性,為可同意的數(shù)據(jù)指定標(biāo)準(zhǔn)。支持分布式數(shù)據(jù)庫和分布處理。ORACLE為了充分利用運(yùn)算機(jī)系統(tǒng)和網(wǎng)絡(luò),承諾將處理分為數(shù)據(jù)庫服務(wù)器和客戶應(yīng)用程序,所有共享的數(shù)據(jù)治理由數(shù)據(jù)庫治理系統(tǒng)的運(yùn)算機(jī)處理,而運(yùn)行數(shù)據(jù)庫應(yīng)用的工作站集中于說明和顯示數(shù)據(jù)。通過網(wǎng)絡(luò)連接的運(yùn)算機(jī)環(huán)境,ORACLE將存放在多臺運(yùn)算機(jī)上的數(shù)據(jù)組合成一個(gè)邏輯數(shù)據(jù)庫,可被全部網(wǎng)絡(luò)用戶存取。分布式系統(tǒng)像集中式數(shù)據(jù)庫一樣具有透亮性和數(shù)據(jù)一致性。具有可移植性、可兼容性和可連接性。由于ORACLE軟件可在許多不同的操作系統(tǒng)上運(yùn)行,以致ORACLE上所開發(fā)的應(yīng)用可移植到任何操作系統(tǒng),只需專門少修改或不需修改。ORACLE軟件同工業(yè)標(biāo)準(zhǔn)相兼容,包括許多工業(yè)標(biāo)準(zhǔn)的操作系統(tǒng),所開發(fā)應(yīng)用系統(tǒng)可在任何操作系統(tǒng)上運(yùn)行。可連接性是指ORALCE承諾不同類型的運(yùn)算機(jī)和操作系統(tǒng)通過網(wǎng)絡(luò)可共享信息。ORACLE數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)ORACLE數(shù)據(jù)庫系統(tǒng)為具有治理ORACLE數(shù)據(jù)庫功能的運(yùn)算機(jī)系統(tǒng)。每一個(gè)運(yùn)行的ORACLE數(shù)據(jù)庫與一個(gè)ORACLE實(shí)例(INSTANCE)相聯(lián)系。一個(gè)ORACLE實(shí)例為存取和操縱一數(shù)據(jù)庫的軟件機(jī)制。每一次在數(shù)據(jù)庫服務(wù)器上啟動一數(shù)據(jù)庫時(shí),稱為系統(tǒng)全局區(qū)(SYSTEMGLOBALAREA)的一內(nèi)存區(qū)(簡稱SGA)被分配,有一個(gè)或多個(gè)ORACLE進(jìn)程被啟動。該SGA和ORACLE進(jìn)程的結(jié)合稱為一個(gè)ORACLE數(shù)據(jù)庫實(shí)例。一個(gè)實(shí)例的SGA和進(jìn)程為治理數(shù)據(jù)庫數(shù)據(jù)、為該數(shù)據(jù)庫一個(gè)或多個(gè)用戶服務(wù)而工作。在ORACLE系統(tǒng)中,第一是實(shí)例啟動,然后由實(shí)例裝配(MOUNT)一數(shù)據(jù)庫。在松耦合系統(tǒng)中,在具有ORACLEPARALLELSERVER選項(xiàng)時(shí),單個(gè)數(shù)據(jù)庫可被多個(gè)實(shí)例裝配,即多個(gè)實(shí)例共享同一物理數(shù)據(jù)庫。ORACLE實(shí)例的進(jìn)程結(jié)構(gòu)和內(nèi)存結(jié)構(gòu)進(jìn)程結(jié)構(gòu)進(jìn)程是操作系統(tǒng)中的一種機(jī)制,它可執(zhí)行一系列的操作步。在有些操作系統(tǒng)中使用作業(yè)(JOB)或任務(wù)(TASK)的術(shù)語。一個(gè)進(jìn)程通常有它自己的專用儲備區(qū)。ORACLE進(jìn)程的體系結(jié)構(gòu)設(shè)計(jì)使性能最大。ORACLE實(shí)例有兩種類型:單進(jìn)程實(shí)例和多進(jìn)程實(shí)例。單進(jìn)程ORACLE(又稱單用戶ORACLE)是一種數(shù)據(jù)庫系統(tǒng),一個(gè)進(jìn)程執(zhí)行全部ORACLE代碼。由于ORACLE部分和客戶應(yīng)用程序不能分別以進(jìn)程執(zhí)行,因此ORACLE的代碼和用戶的數(shù)據(jù)庫應(yīng)用是單個(gè)進(jìn)程執(zhí)行。在單進(jìn)程環(huán)境下的ORACLE實(shí)例,僅承諾一個(gè)用戶可存取。例如在MS-DOS上運(yùn)行ORACLE。多進(jìn)程ORACLE實(shí)例(又稱多用戶ORACLE)使用多個(gè)進(jìn)程來執(zhí)行ORACLE的不同部分,關(guān)于每一個(gè)連接的用戶都有一個(gè)進(jìn)程。在多進(jìn)程系統(tǒng)中,進(jìn)程分為兩類:用戶進(jìn)程和ORACLE進(jìn)程。當(dāng)一用戶運(yùn)行一應(yīng)用程序,如PRO*C程序或一個(gè)ORACLE工具(如SQL*PLUS),為用戶運(yùn)行的應(yīng)用建立一個(gè)用戶進(jìn)程。ORACLE進(jìn)程又分為兩類:服務(wù)器進(jìn)程和后臺進(jìn)程。服務(wù)器進(jìn)程用于處理連接到該實(shí)例的用戶進(jìn)程的要求。當(dāng)應(yīng)用和ORACELE是在同一臺機(jī)器上運(yùn)行,而不再通過網(wǎng)絡(luò),一樣將用戶進(jìn)程和它相應(yīng)的服務(wù)器進(jìn)程組合成單個(gè)的進(jìn)程,可降低系統(tǒng)開銷。然而,當(dāng)應(yīng)用和ORACLE運(yùn)行在不同的機(jī)器上時(shí),用戶進(jìn)程通過一個(gè)分離服務(wù)器進(jìn)程與ORACLE通信。它可執(zhí)行下列任務(wù):對應(yīng)用所發(fā)出的SQL語句進(jìn)行語法分析和執(zhí)行。從磁盤(數(shù)據(jù)文件)中讀入必要的數(shù)據(jù)塊到SGA的共享數(shù)據(jù)庫緩沖區(qū)(該塊不在緩沖區(qū)時(shí))。將結(jié)果返回給應(yīng)用程序處理。系統(tǒng)為了使性能最好和和諧多個(gè)用戶,在多進(jìn)程系統(tǒng)中使用一些附加進(jìn)程,稱為后臺進(jìn)程。在許多操作系統(tǒng)中,后臺進(jìn)程是在實(shí)例啟動時(shí)自動地建立。一個(gè)ORACLE實(shí)例能夠有許多后臺進(jìn)程,但它們不是一直存在。后臺進(jìn)程的名字為:DBWR數(shù)據(jù)庫寫入程序LGWR日志寫入程序CKPT檢查點(diǎn)SMON系統(tǒng)監(jiān)控PMON進(jìn)程監(jiān)控ARCH歸檔RECO復(fù)原LCKn封鎖Dnnn調(diào)度進(jìn)程Snnn服務(wù)器每個(gè)后臺進(jìn)程與ORACLE數(shù)據(jù)庫的不同部分交互。下面對后臺進(jìn)程的功能作簡單介紹:DBWR進(jìn)程:該進(jìn)程執(zhí)行將緩沖區(qū)寫入數(shù)據(jù)文件,是負(fù)責(zé)緩沖儲備區(qū)治理的一個(gè)ORACLE后臺進(jìn)程。當(dāng)緩沖區(qū)中的一緩沖區(qū)被修改,它被標(biāo)志為“弄臟”,DBWR的要緊任務(wù)是將“弄臟”的緩沖區(qū)寫入磁盤,使緩沖區(qū)保持“潔凈”。由于緩沖儲備區(qū)的緩沖區(qū)填入數(shù)據(jù)庫或被用戶進(jìn)程弄臟,未用的緩沖區(qū)的數(shù)目減少。當(dāng)未用的緩沖區(qū)下降到專門少,以致用戶進(jìn)程要從磁盤讀入塊到內(nèi)存儲備區(qū)時(shí)無法找到未用的緩沖區(qū)時(shí),DBWR將治理緩沖儲備區(qū),使用戶進(jìn)程總可得到未用的緩沖區(qū)。ORACLE采納LRU(LEASTRECENTLYUSED)算法(最近最少使用算法)保持內(nèi)存中的數(shù)據(jù)塊是最近使用的,使I/O最小。在下列情形預(yù)示DBWR要將弄臟的緩沖區(qū)寫入磁盤:當(dāng)一個(gè)服務(wù)器進(jìn)程將一緩沖區(qū)移入“弄臟”表,該弄臟表達(dá)到臨界長度時(shí),該服務(wù)進(jìn)程將通知DBWR進(jìn)行寫。該臨界長度是為參數(shù)DB-BLOCK-WRITE-BATCH的值的一半。當(dāng)一個(gè)服務(wù)器進(jìn)程在LRU表中查找DB-BLOCK-MAX-SCAN-CNT緩沖區(qū)時(shí),沒有查到未用的緩沖區(qū),它停止查找并通知DBWR進(jìn)行寫。顯現(xiàn)超時(shí)(每次3秒),DBWR將通知本身。當(dāng)顯現(xiàn)檢查點(diǎn)時(shí),LGWR將通知DBWR在前兩種情形下,DBWR將弄臟表中的塊寫入磁盤,每次可寫的塊數(shù)由初始化參數(shù)DB-BLOCK-WRITE-BATCH所指定。假如弄臟表中沒有該參數(shù)指定塊數(shù)的緩沖區(qū),DBWR從LUR表中查找另外一個(gè)弄臟緩沖區(qū)。假如DBWR在三秒內(nèi)未活動,則顯現(xiàn)超時(shí)。在這種情形下DBWR對LRU表查找指定數(shù)目的緩沖區(qū),將所找到任何弄臟緩沖區(qū)寫入磁盤。每當(dāng)顯現(xiàn)超時(shí),DBWR查找一個(gè)新的緩沖區(qū)組。每次由DBWR查找的緩沖區(qū)的數(shù)目是為寢化參數(shù)DB-BLOCK-WRITE-BATCH的值的二倍。假如數(shù)據(jù)庫空運(yùn)轉(zhuǎn),DBWR最終將全部緩沖區(qū)儲備區(qū)寫入磁盤。在顯現(xiàn)檢查點(diǎn)時(shí),LGWR指定一修改緩沖區(qū)表必須寫入到磁盤。DBWR將指定的緩沖區(qū)寫入磁盤。在有些平臺上,一個(gè)實(shí)例可有多個(gè)DBWR。在如此的實(shí)例中,一些塊可寫入一磁盤,另一些塊可寫入其它磁盤。參數(shù)DB-WRITERS操縱DBWR進(jìn)程個(gè)數(shù)。LGWR進(jìn)程:該進(jìn)程將日志緩沖區(qū)寫入磁盤上的一個(gè)日志文件,它是負(fù)責(zé)治理日志緩沖區(qū)的一個(gè)ORACLE后臺進(jìn)程。LGWR進(jìn)程將自上次寫入磁盤以來的全部日志項(xiàng)輸出,LGWR輸出:當(dāng)用戶進(jìn)程提交一事務(wù)時(shí)寫入一個(gè)提交記錄。每三秒將日志緩沖區(qū)輸出。當(dāng)日志緩沖區(qū)的1/3已滿時(shí)將日志緩沖區(qū)輸出。當(dāng)DBWR將修改緩沖區(qū)寫入磁盤時(shí)則將日志緩沖區(qū)輸出。LGWR進(jìn)程同步地寫入到活動的鏡象在線日志文件組。假如組中一個(gè)文件被刪除或不可用,LGWR 可連續(xù)地寫入該組的其它文件。日志緩沖區(qū)是一個(gè)循環(huán)緩沖區(qū)。當(dāng)LGWR將日志緩沖區(qū)的日志項(xiàng)寫入日志文件后,服務(wù)器進(jìn)程可將新的日志項(xiàng)寫入到該日志緩沖區(qū)。LGWR通常寫得專門快,可確保日志緩沖區(qū)總有空間可寫入新的日志項(xiàng)。注意:有時(shí)候當(dāng)需要更多的日志緩沖區(qū)時(shí),LWGR在一個(gè)事務(wù)提交前就將日志項(xiàng)寫出,而這些日志項(xiàng)僅當(dāng)在以后事務(wù)提交后才永久化。ORACLE使用快速提交機(jī)制,當(dāng)用戶發(fā)出COMMIT語句時(shí),一個(gè)COMMIT記錄趕忙放入日志緩沖區(qū),但相應(yīng)的數(shù)據(jù)緩沖區(qū)改變是被延遲,直到在更有效時(shí)才將它們寫入數(shù)據(jù)文件。當(dāng)一事務(wù)提交時(shí),被賦給一個(gè)系統(tǒng)修改號(SCN),它同事務(wù)日志項(xiàng)一起記錄在日志中。由于SCN記錄在日志中,以致在并行服務(wù)器選項(xiàng)配置情形下,復(fù)原操作能夠同步。CKPT進(jìn)程:該進(jìn)程在檢查點(diǎn)顯現(xiàn)時(shí),對全部數(shù)據(jù)文件的標(biāo)題進(jìn)行修改,指示該檢查點(diǎn)。在通常的情形下,該任務(wù)由LGWR執(zhí)行。然而,假如檢查點(diǎn)明顯地降低系統(tǒng)性能時(shí),可使CKPT進(jìn)程運(yùn)行,將原先由LGWR進(jìn)程執(zhí)行的檢查點(diǎn)的工作分離出來,由CKPT進(jìn)程實(shí)現(xiàn)。關(guān)于許多應(yīng)用情形,CKPT進(jìn)程是不必要的。只有當(dāng)數(shù)據(jù)庫有許多數(shù)據(jù)文件,LGWR在檢查點(diǎn)時(shí)明顯地降低性能才使CKPT運(yùn)行。CKPT進(jìn)程不將塊寫入磁盤,該工作是由DBWR完成的。初始化參數(shù)CHECKPOINT-PROCESS操縱CKPT進(jìn)程的使能或使不能。缺省時(shí)為FALSE,即為使不能。SMON進(jìn)程:該進(jìn)程實(shí)例啟動時(shí)執(zhí)行實(shí)例復(fù)原,還負(fù)責(zé)清理不再使用的臨時(shí)段。在具有并行服務(wù)器選項(xiàng)的環(huán)境下,SMON對有故障CPU或?qū)嵗M(jìn)行實(shí)例復(fù)原。SMON進(jìn)程有規(guī)律地被呼醒,檢查是否需要,或者其它進(jìn)程發(fā)覺需要時(shí)能夠被調(diào)用。PMON進(jìn)程:該進(jìn)程在用戶進(jìn)程顯現(xiàn)故障時(shí)執(zhí)行進(jìn)程復(fù)原,負(fù)責(zé)清理內(nèi)儲備區(qū)和開釋該進(jìn)程所使用的資源。例:它要重置活動事務(wù)表的狀態(tài),開釋封鎖,將該故障的進(jìn)程的ID從活動進(jìn)程表中移去。PMON還周期地檢查調(diào)度進(jìn)程(DISPATCHER)和服務(wù)器進(jìn)程的狀態(tài),假如已死,則重新啟動(不包括有意刪除的進(jìn)程)。PMON有規(guī)律地被呼醒,檢查是否需要,或者其它進(jìn)程發(fā)覺需要時(shí)能夠被調(diào)用。RECO進(jìn)程:該進(jìn)程是在具有分布式選項(xiàng)時(shí)所使用的一個(gè)進(jìn)程,自動地解決在分布式事務(wù)中的故障。一個(gè)結(jié)點(diǎn)RECO后臺進(jìn)程自動地連接到包含有懸而未決的分布式事務(wù)的其它數(shù)據(jù)庫中,RECO自動地解決所有的懸而不決的事務(wù)。任何相應(yīng)于已處理的懸而不決的事務(wù)的行將從每一個(gè)數(shù)據(jù)庫的懸掛事務(wù)表中刪去。當(dāng)一數(shù)據(jù)庫服務(wù)器的RECO后臺進(jìn)程試圖建立同一遠(yuǎn)程服務(wù)器的通信,假如遠(yuǎn)程服務(wù)器是不可用或者網(wǎng)絡(luò)連接不能建立時(shí),RECO自動地在一個(gè)時(shí)刻間隔之后再次連接。RECO后臺進(jìn)程僅當(dāng)在承諾分布式事務(wù)的系統(tǒng)中顯現(xiàn),而且DISTRIBUTED–TRANSACTIONS參數(shù)是大于0。ARCH進(jìn)程:該進(jìn)程將已填滿的在線日志文件拷貝到指定的儲備設(shè)備。當(dāng)日志是為ARCHIVELOG使用方式、并可自動地歸檔時(shí)ARCH進(jìn)程才存在。LCKn進(jìn)程:是在具有并行服務(wù)器選件環(huán)境下使用,可多至10個(gè)進(jìn)程(LCK0,LCK1……,LCK9),用于實(shí)例間的封鎖。Dnnn進(jìn)程(調(diào)度進(jìn)程):該進(jìn)程承諾用戶進(jìn)程共享有限的服務(wù)器進(jìn)程(SERVERPROCESS)。沒有調(diào)度進(jìn)程時(shí),每個(gè)用戶進(jìn)程需要一個(gè)專用服務(wù)進(jìn)程(DEDICATEDSERVERPROCESS)。關(guān)于多線索服務(wù)器(MULTI-THREADEDSERVER)可支持多個(gè)用戶進(jìn)程。假如在系統(tǒng)中具有大量用戶,多線索服務(wù)器可支持大量用戶,專門在客戶_服務(wù)器環(huán)境中。在一個(gè)數(shù)據(jù)庫實(shí)例中可建立多個(gè)調(diào)度進(jìn)程。對每種網(wǎng)絡(luò)協(xié)議至少建立一個(gè)調(diào)度進(jìn)程。數(shù)據(jù)庫治理員依照操作系統(tǒng)中每個(gè)進(jìn)程可連接數(shù)目的限制決定啟動的調(diào)度程序的最優(yōu)數(shù),在實(shí)例運(yùn)行時(shí)可增加或刪除調(diào)度進(jìn)程。多線索服務(wù)器需要SQL*NET版本2或更后的版本。在多線索服務(wù)器的配置下,一個(gè)網(wǎng)絡(luò)接收器進(jìn)程等待客戶應(yīng)用連接要求,并將每一個(gè)發(fā)送到一個(gè)調(diào)度進(jìn)程。假如不能將客戶應(yīng)用連接到一調(diào)度進(jìn)程時(shí),網(wǎng)絡(luò)接收器進(jìn)程將啟動一個(gè)專用服務(wù)器進(jìn)程。該網(wǎng)絡(luò)接收器進(jìn)程不是ORACLE實(shí)例的組成部分,它是處理與ORACLE有關(guān)的網(wǎng)絡(luò)進(jìn)程的組成部分。在實(shí)例啟動時(shí),該網(wǎng)絡(luò)接收器被打開,為用戶連接到ORACLE建立一通信路徑,然后每一個(gè)調(diào)度進(jìn)程把連接要求的調(diào)度進(jìn)程的地址給予于它的接收器。當(dāng)一個(gè)用戶進(jìn)程作連接要求時(shí),網(wǎng)絡(luò)接收器進(jìn)程分析要求并決定該用戶是否可使用一調(diào)度進(jìn)程。假如是,該網(wǎng)絡(luò)接收器進(jìn)程返回該調(diào)度進(jìn)程的地址,之后用戶進(jìn)程直截了當(dāng)連接到該調(diào)度進(jìn)程。有些用戶進(jìn)程不能調(diào)度進(jìn)程通信(假如使用SQL*NET往常的版本的用戶),網(wǎng)絡(luò)接收器進(jìn)程不能將如此用戶連接到一調(diào)度進(jìn)程。在這種情形下,網(wǎng)絡(luò)接收器建立一個(gè)專用服務(wù)器進(jìn)程,建立一種合適的連接。2)、ORACLE內(nèi)存結(jié)構(gòu)ORACLE在內(nèi)存儲備下列信息:執(zhí)行的程序代碼。連接的會話信息程序執(zhí)行期間所需數(shù)據(jù)和共享的信息儲備在外儲備上的緩沖信息。ORACLE具有下列差不多的內(nèi)存結(jié)構(gòu):軟件代碼區(qū)系統(tǒng)全局區(qū),包括數(shù)據(jù)庫緩沖儲備區(qū)、日志緩沖區(qū)和共享池.程序全局區(qū),包括棧區(qū)和數(shù)據(jù)區(qū).排序區(qū)軟件代碼區(qū)用于儲備正在執(zhí)行的或能夠執(zhí)行的程序代碼。軟件區(qū)是只讀,可安裝成共享或非共享。ORACLE系統(tǒng)程序是可共享的,以致多個(gè)ORACLE用戶可存取它,而不需要在內(nèi)存有多個(gè)副本。用戶程序能夠共享也能夠不共享。系統(tǒng)全局區(qū)為一組由ORACLE分配的共享的內(nèi)存結(jié)構(gòu),可包含一個(gè)數(shù)據(jù)庫實(shí)例的數(shù)據(jù)或操縱信息。假如多個(gè)用戶同時(shí)連接到同一實(shí)例時(shí),在實(shí)例的SGA中數(shù)據(jù)可為多個(gè)用戶所共享,因此又稱為共享全局區(qū)。當(dāng)實(shí)例起動時(shí),SGA的儲備自動地被分配;當(dāng)實(shí)例關(guān)閉時(shí),該儲備被回收。所有連接到多進(jìn)程數(shù)據(jù)庫實(shí)例的全部用戶可自動地被分配;當(dāng)實(shí)例關(guān)閉時(shí),該儲備被回收。所有連接到多進(jìn)程數(shù)據(jù)庫實(shí)例的全部用戶可使用其SGA中的信息,但僅僅有幾個(gè)進(jìn)程可寫入信息。在SGA中儲備信息將內(nèi)存劃分成幾個(gè)區(qū):數(shù)據(jù)庫緩沖儲備區(qū)、日志緩沖區(qū)、共享池、要求和響應(yīng)隊(duì)列、數(shù)據(jù)字典儲備區(qū)和其它各種信息。程序全局區(qū)PGA是一個(gè)內(nèi)存區(qū),包含單個(gè)進(jìn)程的數(shù)據(jù)和操縱信息,因此又稱為進(jìn)程全局區(qū)(PROCESSGLOBALAREA)。排序區(qū)排序需要內(nèi)存空間,ORACLE利用該內(nèi)存排序數(shù)據(jù),這部分空間稱為排序區(qū)。排序區(qū)存在于要求排序的用戶進(jìn)程的內(nèi)存中,該空間的大小為適就排序數(shù)據(jù)量的大小,可增長,但受初始化參數(shù)SORT-AREA-SIZER所限制。ORACLE的配置方案所有連接到ORACLE的用戶必須執(zhí)行兩個(gè)代碼模塊可存取一個(gè)ORACLE數(shù)據(jù)庫實(shí)例:應(yīng)用或ORACLE工具:一數(shù)據(jù)庫用戶執(zhí)行一數(shù)據(jù)庫應(yīng)用或一個(gè)ORACLE工具,可向ORACLE數(shù)據(jù)庫發(fā)出SQL語句。ORACLE服務(wù)器程序:負(fù)責(zé)說明和處理應(yīng)用中的SQL語句。在多進(jìn)程實(shí)例中,連接用戶的代碼可按下列三種方案之一配置:關(guān)于每一個(gè)用戶,其數(shù)據(jù)庫應(yīng)用程序和服務(wù)器程序組合成單個(gè)用戶進(jìn)程關(guān)于每一個(gè)用戶,其數(shù)據(jù)庫應(yīng)用是由用戶進(jìn)程所運(yùn)行,并有一個(gè)專用服務(wù)器進(jìn)程。執(zhí)行ORACLE服務(wù)器的代碼。如此的配置稱為專用服務(wù)器體系結(jié)構(gòu)執(zhí)行數(shù)據(jù)庫應(yīng)用的進(jìn)程不同于執(zhí)行ORACLE服務(wù)器代碼的進(jìn)程,而且每一個(gè)服務(wù)器進(jìn)程(執(zhí)行ORACLE服務(wù)器代碼)可服務(wù)于多個(gè)用戶進(jìn)程,如此的配置稱為多線索服務(wù)器體系結(jié)構(gòu)。USER/SERVER進(jìn)程相結(jié)合的結(jié)構(gòu)在這種配置下,數(shù)據(jù)庫應(yīng)用和ORACLE服務(wù)器程序是在同一個(gè)進(jìn)程中運(yùn)行,該進(jìn)程稱為用戶進(jìn)程。這種ORACLE配置有時(shí)稱為單任務(wù)ORACLE(single_taskORACLE),該配置適用于如此的操作系統(tǒng),它可在同一進(jìn)程中的數(shù)據(jù)庫應(yīng)用和ORACLE代碼之間愛護(hù)一個(gè)隔離,該隔離是為數(shù)據(jù)安全性和完整性所需。其中程序接口(programinterface)是負(fù)責(zé)ORACLE服務(wù)器代碼的隔離和愛護(hù),在數(shù)據(jù)庫應(yīng)用和ORACLE用戶程序之間傳送數(shù)據(jù)。使用專用服務(wù)器進(jìn)程的系統(tǒng)結(jié)構(gòu)使用專用服務(wù)器進(jìn)程的ORACLE系統(tǒng)在兩臺運(yùn)算機(jī)上運(yùn)行。在這種系統(tǒng)中,在一運(yùn)算機(jī)上用戶進(jìn)程執(zhí)行數(shù)據(jù)庫應(yīng)用,而在另一臺運(yùn)算機(jī)上的服務(wù)器進(jìn)程執(zhí)行相應(yīng)的ORACLE服務(wù)器代碼,這兩個(gè)進(jìn)程是分離的。為每個(gè)用戶進(jìn)程建立的不同的服務(wù)器進(jìn)程稱為專用服務(wù)器進(jìn)程,因?yàn)樵摲?wù)器進(jìn)程僅對相連的用戶進(jìn)程起作用。這種配置又稱為兩任務(wù)ORACLE。每一個(gè)連接到ORACLE的用戶進(jìn)程有一個(gè)相應(yīng)的專用服務(wù)進(jìn)程。這種系統(tǒng)結(jié)構(gòu)承諾客戶應(yīng)用是有工作站上執(zhí)行,通過網(wǎng)絡(luò)與運(yùn)行ORACLE的運(yùn)算機(jī)通信。當(dāng)客戶應(yīng)用和ORACLE服務(wù)器代碼是在同一臺運(yùn)算機(jī)上執(zhí)行時(shí),這種結(jié)構(gòu)也可用。多線索服務(wù)器的系統(tǒng)結(jié)構(gòu)多線索服務(wù)器配置承諾許多用戶進(jìn)程共享專門少服務(wù)器進(jìn)程。在沒有多線索服務(wù)器的配置中,每一個(gè)用戶進(jìn)程需要自己的專用服務(wù)器進(jìn)程。在具有多線索服務(wù)器的配置中,許多用戶進(jìn)程連接到調(diào)度進(jìn)程,由調(diào)度進(jìn)程將客戶要求發(fā)送到一個(gè)共享服務(wù)器進(jìn)程。多線索服務(wù)器配置的優(yōu)點(diǎn)是降低系統(tǒng)開銷,增加用戶個(gè)數(shù)。該系統(tǒng)中需要下列類型的進(jìn)程:網(wǎng)絡(luò)接收器進(jìn)程,將用戶進(jìn)程連接到調(diào)度進(jìn)程和專用服務(wù)器進(jìn)程。一個(gè)或多個(gè)調(diào)度進(jìn)程一個(gè)或多個(gè)共享服務(wù)器進(jìn)程其中網(wǎng)絡(luò)接收器進(jìn)程等待新來的連接要求,決定每一用戶進(jìn)程能否用共享服務(wù)器進(jìn)程。假如能夠使用,接收器進(jìn)程將一調(diào)度進(jìn)程的地址返回給用戶進(jìn)程。假如用戶進(jìn)程要求一專用服務(wù)器,該接收器進(jìn)程將建立一個(gè)專用服務(wù)器進(jìn)程,將用戶進(jìn)程連接到該專用服務(wù)器進(jìn)程。關(guān)于數(shù)據(jù)庫客戶機(jī)所使用的每種網(wǎng)絡(luò)協(xié)議至少配置一個(gè)調(diào)度進(jìn)程,并啟動它。當(dāng)用戶作一次調(diào)用時(shí),調(diào)度進(jìn)程將要求放置在SGA的要求隊(duì)列中,由可用的共享服務(wù)器進(jìn)程獵取。共享服務(wù)器進(jìn)程為完成每一個(gè)用戶進(jìn)程的要求作所有必要的數(shù)據(jù)庫調(diào)用。當(dāng)服務(wù)器完成要求時(shí),將結(jié)果返回到調(diào)度進(jìn)程的隊(duì)列,然后由調(diào)度進(jìn)程將完成的要求返回給用戶進(jìn)程。共享服務(wù)器進(jìn)程:除共享服務(wù)器進(jìn)程不是連接指定的用戶進(jìn)程外,共享服務(wù)器進(jìn)程和專用服務(wù)器進(jìn)程提供相同的功能,一個(gè)共享服務(wù)器進(jìn)程在多線索服務(wù)器的配置中可為任何客戶要求服務(wù)。一個(gè)共享服務(wù)器進(jìn)程的SGA不包含有與用戶相關(guān)的數(shù)據(jù),其信息可為所有共享服務(wù)器進(jìn)程存取,它僅包含棧空間、進(jìn)程指定變量。所有與會話有關(guān)的信息是包含有SGA中。每一個(gè)共享服務(wù)器進(jìn)程可存取全部會話的數(shù)據(jù)空間,以致任何服務(wù)進(jìn)程可處理任何會話的要求。關(guān)于每一個(gè)會話的數(shù)據(jù)空間是在SGA中分配空間。ORACLE依照要求隊(duì)列的長度可動態(tài)地調(diào)整共享服務(wù)器進(jìn)程??山⒌墓蚕矸?wù)器進(jìn)程將要求放到要求隊(duì)列。一個(gè)用戶要求是對數(shù)據(jù)庫的一次程序接口調(diào)用,為SQL語句。在SGA中要求隊(duì)列對實(shí)例的全部調(diào)度進(jìn)程是公用的。服務(wù)器進(jìn)程為新要求檢查公用要求隊(duì)列,按先進(jìn)先出的原則從隊(duì)列檢出一個(gè)要求,然后為完成該要求對數(shù)據(jù)庫作必要的調(diào)用。共享服務(wù)器進(jìn)程將響應(yīng)放在調(diào)度進(jìn)程的響應(yīng)隊(duì)列。每一個(gè)調(diào)度進(jìn)程在SGA中有自己的響應(yīng)隊(duì)列,每個(gè)調(diào)度進(jìn)程負(fù)責(zé)將完成的要求回送給相應(yīng)的用戶進(jìn)程。3.ORACLE運(yùn)行使用專用服務(wù)進(jìn)程的ORACLE的運(yùn)行在這種配置下,ORACLE運(yùn)行過程如下:數(shù)據(jù)庫服務(wù)器運(yùn)算機(jī)當(dāng)前正在運(yùn)行ORACLE(后臺進(jìn)程)。在一客戶工作站運(yùn)行一個(gè)數(shù)據(jù)庫應(yīng)用(為用戶進(jìn)程),如SQL*PLUS??蛻魬?yīng)用使用SQL*NETDRIVER建立對服務(wù)器的連接。數(shù)據(jù)庫服務(wù)器運(yùn)算機(jī)當(dāng)前正運(yùn)行合適的SQL*NETDRIVER,該機(jī)上接收器進(jìn)程檢出客戶數(shù)據(jù)庫應(yīng)用的連接要求,并在該機(jī)上為用戶進(jìn)程建立專用服務(wù)器進(jìn)程。用戶發(fā)出單個(gè)SQL語句。專用服務(wù)器進(jìn)程接收該語句,在此處有兩種方法處理SQL語句:假如在共享池一共享SQL區(qū)中包含有相同SQL語句時(shí),該服務(wù)器進(jìn)程可利用已存在的共享SQL區(qū)執(zhí)行客戶的SQL語句。假如在共享池中沒有一個(gè)SQL區(qū)包含有相同的SQL語句時(shí),在共享池中為該語句分配一新的共享SQL區(qū)。在每一種情形,在會話的PGA中建立一個(gè)專用SQL區(qū),專用服務(wù)器進(jìn)程檢查用戶對查詢數(shù)據(jù)的存取權(quán)限。(6)假如需要,服務(wù)器進(jìn)程從數(shù)據(jù)文件中檢索數(shù)據(jù)塊,或者可使用已儲備在實(shí)例SGA中的緩沖儲備區(qū)的數(shù)據(jù)塊。(7)服務(wù)器進(jìn)程執(zhí)行儲備在共享SQL區(qū)中的SQL語句。數(shù)據(jù)第一在SGA中修改,由DBWR進(jìn)程在最有效時(shí)將它寫入磁盤。LGWR進(jìn)程在在線日志文件中記錄用戶提交要求的事務(wù)。(8)假如要求成功,服務(wù)器將通過網(wǎng)絡(luò)發(fā)送一信息。假如要求不成功,將發(fā)送相應(yīng)的錯(cuò)誤信息。(9)在整個(gè)過程中,其它的后臺進(jìn)程是運(yùn)行的,同時(shí)注意需要干預(yù)的條件。另外,ORACLE治理其它事務(wù),防止不同事務(wù)之間要求同一數(shù)據(jù)的競爭。2)使用多線索服務(wù)器的ORACLE的運(yùn)行在這種配置下,ORACLE運(yùn)行過程如下:一數(shù)據(jù)庫服務(wù)器運(yùn)算機(jī)運(yùn)行使用多線索服務(wù)器配置的ORACLE。在一客戶工作站運(yùn)行一數(shù)據(jù)庫應(yīng)用(在一用戶進(jìn)程中)??蛻魬?yīng)用合適的SQL*NET驅(qū)動器試圖建立到數(shù)據(jù)庫服務(wù)器運(yùn)算機(jī)的連接。數(shù)據(jù)庫服務(wù)器運(yùn)算機(jī)當(dāng)前運(yùn)行合適的SQL*NET驅(qū)動器,它的網(wǎng)絡(luò)接收器進(jìn)程檢出用戶進(jìn)程的連接要求,并決定用戶進(jìn)程如何連接。假如用戶是使用SQL*NET版本2,該網(wǎng)絡(luò)接收器通知用戶進(jìn)程使用一個(gè)可用的調(diào)度進(jìn)程的地址重新連接。用戶發(fā)出單個(gè)SQL語句調(diào)度進(jìn)程將用戶進(jìn)程的要求放入要求隊(duì)列,該隊(duì)列位于SGA中,可為所有調(diào)度進(jìn)程共享。一個(gè)可用共享服務(wù)器檢驗(yàn)公用調(diào)度進(jìn)程要求隊(duì)列,并從隊(duì)列中檢出下一個(gè)SQL語句。然后處理該SQL語句,同前一(5),(6)和(7)。注意:會話的專用SQL區(qū)是建立在SGA中。一當(dāng)共享服務(wù)器進(jìn)程完成SQL處理,該進(jìn)程將結(jié)果放置發(fā)入該要求的調(diào)度進(jìn)程的響應(yīng)隊(duì)列。調(diào)度進(jìn)程檢查它的響應(yīng)隊(duì)列,并將完成的要求送回要求的用戶進(jìn)程。4.數(shù)據(jù)庫結(jié)構(gòu)和空間治理一個(gè)ORACLE數(shù)據(jù)庫是數(shù)據(jù)的集合,被處理成一個(gè)單位。一個(gè)ORACLE數(shù)據(jù)庫有一個(gè)物理結(jié)構(gòu)和一個(gè)邏輯結(jié)構(gòu)。物理數(shù)據(jù)庫結(jié)構(gòu)(physicaldatabasestructure)是由構(gòu)成數(shù)據(jù)庫的操作系統(tǒng)文件所決定。每一個(gè)ORACLE數(shù)據(jù)庫是由三種類型的文件組成:數(shù)據(jù)文件、日志文件和操縱文件。數(shù)據(jù)庫的文件為數(shù)據(jù)庫信息提供真正的物理儲備。邏輯數(shù)據(jù)庫結(jié)構(gòu)是用戶所涉及的數(shù)據(jù)庫結(jié)構(gòu)。一個(gè)ORACLE數(shù)據(jù)庫的邏輯結(jié)構(gòu)由下列因素決定:一個(gè)或多個(gè)表空間數(shù)據(jù)庫模式對象(即表、視圖、索引、集合、序列、儲備過程)邏輯儲備結(jié)構(gòu)如表空間(dataspace)、段(segment)和范疇將支配一個(gè)數(shù)據(jù)庫的物理空間如何使用。模式對象(schemaobject)用它們之間的聯(lián)系組成了一個(gè)數(shù)據(jù)庫的關(guān)系設(shè)計(jì)。物理結(jié)構(gòu)數(shù)據(jù)文件每一個(gè)ORACLE數(shù)據(jù)庫有一個(gè)或多個(gè)物理的數(shù)據(jù)文件(datafile)。一個(gè)數(shù)據(jù)庫的數(shù)據(jù)文件包含全部數(shù)據(jù)庫數(shù)據(jù)。邏輯數(shù)據(jù)庫結(jié)構(gòu)(如表、索引)的數(shù)據(jù)物理地儲備在數(shù)據(jù)庫的數(shù)據(jù)文件中。數(shù)據(jù)文件有下列特點(diǎn):一個(gè)數(shù)據(jù)文件僅與一個(gè)數(shù)據(jù)庫聯(lián)系。一旦建立,數(shù)據(jù)文件不能改變大小一個(gè)表空間(數(shù)據(jù)庫儲備的邏輯單位)由一個(gè)或多個(gè)數(shù)據(jù)文件組成。數(shù)據(jù)文件中的數(shù)據(jù)在需要時(shí)能夠讀取并儲備在ORACLE內(nèi)儲備區(qū)中。例如:用戶要存取數(shù)據(jù)庫一表的某些數(shù)據(jù),假如要求信息不在數(shù)據(jù)庫的內(nèi)存儲備區(qū)內(nèi),則從相應(yīng)的數(shù)據(jù)文件中讀取并儲備在內(nèi)存。當(dāng)修改和插入新數(shù)據(jù)時(shí),不必趕忙寫入數(shù)據(jù)文件。為了減少磁盤輸出的總數(shù),提高性能,數(shù)據(jù)儲備在內(nèi)存,然后由ORACLE后臺進(jìn)程DBWR決定如何將其寫入到相應(yīng)的數(shù)據(jù)文件。日志文件每一個(gè)數(shù)據(jù)庫有兩個(gè)或多個(gè)日志文件(redologfile)的組,每一個(gè)日志文件組用于收集數(shù)據(jù)庫日志。日志的要緊功能是記錄對數(shù)據(jù)所作的修改,因此對數(shù)據(jù)庫作的全部修改是記錄在日志中。在顯現(xiàn)故障時(shí),假如不能將修改數(shù)據(jù)永久地寫入數(shù)據(jù)文件,則可利用日志得到該修改,因此從可不能丟失已有操作成果。日志文件要緊是愛護(hù)數(shù)據(jù)庫以防止故障。為了防止日志文件本身的故障,ORACLE承諾鏡象日志(mirroredredolog),以致可在不同磁盤上愛護(hù)兩個(gè)或多個(gè)日志副本。日志文件中的信息僅在系統(tǒng)故障或介質(zhì)故障復(fù)原數(shù)據(jù)庫時(shí)使用,這些故障阻止將數(shù)據(jù)庫數(shù)據(jù)寫入到數(shù)據(jù)庫的數(shù)據(jù)文件。然而任何丟失的數(shù)據(jù)在下一次數(shù)據(jù)庫打開時(shí),ORACLE自動地應(yīng)用日志文件中的信息來復(fù)原數(shù)據(jù)庫數(shù)據(jù)文件。操縱文件每一ORACLE數(shù)據(jù)庫有一個(gè)操縱文件(controlfile),它記錄數(shù)據(jù)庫的物理結(jié)構(gòu),包含下列信息類型:數(shù)據(jù)庫名;數(shù)據(jù)庫數(shù)據(jù)文件和日志文件的名字和位置;數(shù)據(jù)庫建立日期。為了安全起見,承諾操縱文件被鏡象。每一次ORACLE數(shù)據(jù)庫的實(shí)例啟動時(shí),它的操縱文件用于標(biāo)識數(shù)據(jù)庫和日志文件,當(dāng)著手?jǐn)?shù)據(jù)庫操作時(shí)它們必須被打開。當(dāng)數(shù)據(jù)庫的物理組成更換時(shí),ORACLE自動更換該數(shù)據(jù)庫的操縱文件。數(shù)據(jù)復(fù)原時(shí),也要使用操縱文件。邏輯結(jié)構(gòu)數(shù)據(jù)庫邏輯結(jié)構(gòu)包含表空間、段、范疇(extent)、數(shù)據(jù)塊和模式對象。表空間一個(gè)數(shù)據(jù)庫劃分為一個(gè)或多個(gè)邏輯單位,該邏輯單位稱為表空間(TABLESPACE)。一個(gè)表空間可將相關(guān)的邏輯結(jié)構(gòu)組合在一起。DBA可利用表空間作下列工作:操縱數(shù)據(jù)庫數(shù)據(jù)的磁盤分配。將確定的空間份額分配給數(shù)據(jù)庫用戶。通過使單個(gè)表空間在線或離線,操縱數(shù)據(jù)的可用性。執(zhí)行部分?jǐn)?shù)據(jù)庫后備或復(fù)原操作。為提高性能,跨過設(shè)備分配數(shù)據(jù)儲備。數(shù)據(jù)庫、表空間和數(shù)據(jù)文件之間的關(guān)系如下圖所示:DatabaseSYSTEMDATATablespaceTablespaceSYSTEMDATATablespaceTablespaceDTATAFILE1(2MB)DATAFILE2(2MB)DATAFILE3(2MB)Driver1Driver2。每個(gè)數(shù)據(jù)庫可邏輯劃分為一個(gè)或多個(gè)表空間。每一個(gè)表空間是由一個(gè)或多個(gè)數(shù)據(jù)文件組成,該表空間物理地儲備表空間中全部邏輯結(jié)構(gòu)的數(shù)據(jù)。DBA能夠建立新的表空間,可為表空間增加數(shù)據(jù)文件或可刪除數(shù)據(jù)文件,設(shè)置或更換缺省的段儲備位置。每一個(gè)ORACLE數(shù)據(jù)庫包含有一個(gè)名為SYSTEM的表空間,在數(shù)據(jù)庫建立是自動建立。在該表空間中總包含有整個(gè)數(shù)據(jù)庫的數(shù)據(jù)字典表。最小的數(shù)據(jù)庫可只需要SYSTEM表空間。該表空間必須總是在線。表和儲備的PL/SQL程序單元(過程、函數(shù)、包和觸發(fā)器)的全部儲備數(shù)據(jù)是儲備在SYSTEM表空間中。假如這些PL/SQL對象是為數(shù)據(jù)庫建的,DBA在SYSTEM表空間中需要規(guī)劃這些對象所需要的空間。表空間利用增加數(shù)據(jù)文件擴(kuò)大表空間,表空間的大小為組成該表空間的數(shù)據(jù)文件大小的和。DBA能夠使ORACLE數(shù)據(jù)庫中任何表空間(除SYSTEM表空間外)在線(ONLINE)或離線(OFFLINE)。表空間通常是在線,以致它所包含的數(shù)據(jù)對數(shù)據(jù)庫用戶是可用的。當(dāng)表空間為離線時(shí),其數(shù)據(jù)不可使用。在下列情形下,DBA能夠使其離線。。使部分?jǐn)?shù)據(jù)不可用,而剩余的部分承諾正常存取。執(zhí)行離線的表空間后備。為了修改或愛護(hù)一應(yīng)用,使它和它的一組表臨時(shí)不可用。包含有正在活動的回滾段的表空間不能被離線,僅當(dāng)回滾段不正在使用時(shí),該表空間才可離線。在數(shù)據(jù)字典中記錄表空間的狀態(tài),在線依舊離線。假如在數(shù)據(jù)庫關(guān)閉時(shí)一表空間為離線,那么在下次數(shù)據(jù)庫裝配和重新打開后,它仍舊保持離線。當(dāng)顯現(xiàn)某些錯(cuò)誤時(shí),一個(gè)表空間可自動地由在線改變?yōu)殡x線。通過使用多個(gè)表空間,將不同類型的數(shù)據(jù)分開,更方便DBA來治理數(shù)據(jù)庫。ORACLE數(shù)據(jù)庫中一表空間是由一個(gè)或多個(gè)物理數(shù)據(jù)文件組成,一個(gè)數(shù)據(jù)文件只可與一個(gè)表空間想聯(lián)系。當(dāng)為一表空間建立一數(shù)據(jù)文件時(shí),ORACLE建立該文件,分配指定的磁盤空間容量。在數(shù)據(jù)文件初時(shí)建立后,所分配的磁盤不包含任何數(shù)據(jù)。表空間能夠在線或離線。在ORACLE中還承諾單獨(dú)數(shù)據(jù)文件在線或離線。段、范疇和數(shù)據(jù)塊ORACLE通過段、范疇和數(shù)據(jù)塊邏輯數(shù)據(jù)結(jié)構(gòu)可更細(xì)地操縱磁盤空間的使用。段段(SEGMENT)包含表空間中一種指定類型的邏輯儲備結(jié)構(gòu),是由一組范疇組成。在ORACLE數(shù)據(jù)庫中有幾種類型的段:數(shù)據(jù)段、牽引段、回滾段和臨時(shí)段。數(shù)據(jù)段:關(guān)于每一個(gè)非集合的表有一數(shù)據(jù)段,表的所有數(shù)據(jù)存放在該段。每一集合有一個(gè)數(shù)據(jù)段,集合中每一個(gè)表的數(shù)據(jù)儲備在該段中。索引段:每一個(gè)索引有一索引段,儲備索引數(shù)據(jù)。回滾段:是由DBA建立,用于臨時(shí)儲備要撤消的信息,這些信息用于生成讀一致性數(shù)據(jù)庫信息、在數(shù)據(jù)庫復(fù)原時(shí)使用、回滾未提交的事務(wù)。臨時(shí)段:當(dāng)一個(gè)SQL語句需要臨時(shí)工作區(qū)時(shí),由ORACLE建立。當(dāng)語句執(zhí)行完畢,臨時(shí)段的范疇退回給系統(tǒng)。ORACLE對所有段的空間分配,以范疇為單位。范疇一個(gè)范疇(EXTENT)是數(shù)據(jù)庫儲備空間分配的一個(gè)邏輯單位,它由連續(xù)數(shù)據(jù)塊所組成。每一個(gè)段是由一個(gè)或多個(gè)范疇組成。當(dāng)一段中間所有空間已完全使用時(shí),ORACLE為該段分配一個(gè)新的范疇。為了愛護(hù)的目的,在數(shù)據(jù)庫的每一段含有段標(biāo)題塊(segmentheaderblock)說明段的特點(diǎn)以及該段中的范疇名目。數(shù)據(jù)塊數(shù)據(jù)塊(datablock)是ORACLE治理數(shù)據(jù)文件中儲備空間的單位,為數(shù)據(jù)庫使用的I/O的最小單位,其大小可不同于操作系統(tǒng)的標(biāo)準(zhǔn)I/O塊大小。數(shù)據(jù)塊的格式:公用的變長標(biāo)題表名目行名目未用空間行數(shù)據(jù)模式和模式對象一個(gè)模式(schema)為模式對象(scehmaobject)的一個(gè)集合,每一個(gè)數(shù)據(jù)庫用戶對應(yīng)一個(gè)模式。模式對象為直截了當(dāng)引用數(shù)據(jù)庫數(shù)據(jù)的邏輯結(jié)構(gòu),模式對象包含如表、視圖、索引、集合、序列、同義詞、數(shù)據(jù)庫鏈、過程和包等結(jié)構(gòu)。模式對象是邏輯數(shù)據(jù)儲備結(jié)構(gòu),每一種模式對象在磁盤上沒有一個(gè)相應(yīng)文件儲備其信息。一個(gè)模式對象邏輯地儲備在數(shù)據(jù)庫的一個(gè)表空間中,每一個(gè)對象的數(shù)據(jù)物理地包含在表空間的一個(gè)或多個(gè)數(shù)據(jù)文件中。表表(table)為數(shù)據(jù)庫中數(shù)據(jù)儲備的差不多單位,其數(shù)據(jù)按行、列儲備。每個(gè)表具有一表名和列的集合。每一列有一個(gè)列名、數(shù)據(jù)類型、寬度或精度、比例。一行是對應(yīng)單個(gè)記錄的列信息的集合。視圖一個(gè)視圖(view)是由一個(gè)或多個(gè)表(或其他視圖)中的數(shù)據(jù)的一種定制的表示,是用一個(gè)查詢定義,因此可認(rèn)為是一個(gè)儲備的查詢(storedquery)或是一個(gè)虛表(virtualtable)。視圖可在使用表的許多地點(diǎn)使用。由于視圖是由表導(dǎo)出的,視圖和表存在許多類似,視圖象表最多可定義254列。視圖能夠被查詢,而在修改、插入或刪除時(shí)具有一定的限制,在視圖上執(zhí)行的全部操作真正地阻礙視圖的差不多表中的數(shù)據(jù),受到差不多表的完整性約束和觸發(fā)器的限制。視圖與表不同,一個(gè)視圖不分配任何儲備空間,視圖不真正地包含數(shù)據(jù)。由查詢定義的視圖相應(yīng)于視圖引用表中的數(shù)據(jù)。視圖只在數(shù)據(jù)字典中儲備其定義。引入視圖有下列好處:。通過限制對表的行預(yù)定義集合的存取,為表提供附加的安全性。隱藏?cái)?shù)據(jù)復(fù)雜性。。為用戶簡化命令。為差不多表的數(shù)據(jù)提供另一種觀點(diǎn)。??蓪?yīng)用隔離差不多表定義的修改。用于不用視圖無法表示的查詢。??捎糜趦Υ鎻?fù)雜查詢。集合集合(cluster)是儲備表數(shù)據(jù)的可選擇的方法。一個(gè)集合是一組表,將具有同一公共列值的行儲備在一起,同時(shí)它們經(jīng)常一起使用。這些公共列構(gòu)成集合碼。例如:EMP表各DEPT表共享DEPTNO列,因此EMP表和DEPT表可集合在一起,集合碼的列為DEPTNO列,該集合將每個(gè)部門的全部職工行各該部門的行物理地儲備在同一數(shù)據(jù)塊中。索引索引(index)是與表和集合相關(guān)的一種選擇結(jié)構(gòu)。索引是為提高數(shù)據(jù)檢索的性能而建立,利用它可快速地確定指定的信息。ORACLE索引為表數(shù)據(jù)提供快速存取路徑。索引適用于一范疇的行查詢或指定行的查詢。索引可建立在一表的一列或多列上,一旦建立,由ORACLE自動愛護(hù)和使用,對用戶是完全透亮的。索引是邏輯地和物理地獨(dú)立于數(shù)據(jù),它們的建立或刪除對表沒有阻礙,應(yīng)用可連續(xù)處理。索引數(shù)據(jù)的檢干脆能幾乎保持常數(shù),而當(dāng)一表上存在許多索引時(shí),修改、刪除和插入操作的性能會下降。索引有唯獨(dú)索引各非唯獨(dú)索引。唯獨(dú)索引保證表中沒有兩行在定義索引的列上具有重復(fù)值。ORACLE在唯獨(dú)碼上自動地定義唯獨(dú)索引實(shí)施UNIQUE完整性約束。組合索引是在表的某個(gè)列上所建立的一索引。組全索引可加快SELECT語句的檢索速度,在其WHERE子句中可引用組合索引的全部或要緊部分。因此在定義中給出列的次序,將經(jīng)常存取的或選擇最多的列放在首位。在建立索引時(shí),將在表空間自動地建立一索引段,索引段空間分配和保留空間的使用受下列方式操縱:索引段范疇的分配常駐該索引段的儲備參數(shù)操縱。其數(shù)據(jù)塊中未用空間可受該段的PCTFREE參數(shù)設(shè)置所操縱。序列生成器序列生成器(sequencegenerator)產(chǎn)生序列號。在多用戶環(huán)境下該序列生成器專門有用,可生成各返回序列號而不需要磁盤I/O或事務(wù)封鎖。序列號為ORACLE整數(shù),最多可有38個(gè)數(shù)字。一個(gè)序列定義指出一樣信息:序列的名字、上升或下降、序列號之間間距和其它信息。對所有序列的確的定義以行儲備在SYSTEM表空間中的數(shù)據(jù)字典表中,因此所有序列定義總是可用。由引用序列號的SQL語句使用序列號,可生成一個(gè)新的序列號或使用當(dāng)前序列號。一旦在用戶會話中的SQL語句生成一序列號,該序列號僅為該會話可用。序列號生成是獨(dú)立于表,因此同一序列生成器可用于一個(gè)和多個(gè)表。所生成序列號可用于生成唯獨(dú)的主碼。同義詞一個(gè)同義詞(synonym)為任何表、視圖、快照、序列、過程、函數(shù)或包的別名,其定義儲備在數(shù)據(jù)字典中。同義詞因安全性和方便緣故而經(jīng)常使用,可用于:可屏蔽對象的名字及其持有者。為分布式數(shù)據(jù)庫的遠(yuǎn)程對象提供位置透亮性。為用戶簡化SQL語句。有兩種同義詞:公用和專用。一個(gè)公用同義詞為命名為PUBLIC專門用戶組所持有,可為數(shù)據(jù)庫中每一個(gè)用戶所存取。一個(gè)專用同義詞是包含在指定用戶的模式中,僅為該用戶和授權(quán)的用戶所使用。雜湊雜湊(hashing)是儲備表數(shù)據(jù)一種可選擇的方法,用以改進(jìn)數(shù)據(jù)檢索的性能。要使用雜湊,就要建立雜湊集合,將表裝入到該集合。在驃湊集合中的表行依照雜湊函數(shù)的結(jié)果進(jìn)行物理學(xué)儲備和檢索。雜湊函數(shù)用于生成一個(gè)數(shù)值的分布,該數(shù)值稱為雜湊值,它是基于指定的集合碼值。程序單元程序單元(programunit)是指儲備過程、函數(shù)和包(PACKAGE)。一個(gè)過程和函數(shù),是由SQL語句和PL/SQL語句組合在一起,為執(zhí)行某一個(gè)任務(wù)的一個(gè)可執(zhí)行單位。一個(gè)過程或函數(shù)可被建立,在數(shù)據(jù)庫中儲備其編譯形式,可由用戶或數(shù)據(jù)庫應(yīng)用所執(zhí)行。過程和函數(shù)差別在函數(shù)總返回單個(gè)值給調(diào)用者,而過程沒有值返回給調(diào)用者。包提供相關(guān)的過程、函數(shù)、變量和其它包結(jié)構(gòu)封裝起來并存貯在一起的一種方法,承諾治理者和應(yīng)用開發(fā)者利用該方法組織如此的程序(routine),來提供更多的功能和提高性能。數(shù)據(jù)庫鏈數(shù)據(jù)庫鏈?zhǔn)且粋€(gè)命名的對象,說明從一數(shù)據(jù)庫到另一數(shù)據(jù)庫的一路徑(PATH)。在分布式數(shù)據(jù)庫中,對全局對象名引用時(shí),數(shù)據(jù)庫鏈隱式地使用。三、數(shù)據(jù)庫和實(shí)例的啟動和關(guān)閉一個(gè)ORACLE數(shù)據(jù)庫沒有必要對所有用戶總是可用,數(shù)據(jù)庫治理員可啟動數(shù)據(jù)庫,以致它被打開。在數(shù)據(jù)庫打開情形下,用戶可存取數(shù)據(jù)庫中的信息。當(dāng)數(shù)據(jù)庫不使用時(shí),DBA可關(guān)閉它,關(guān)閉后的數(shù)據(jù)庫,用戶不能存取其信息。數(shù)據(jù)庫的啟動和關(guān)閉是專門重要的治理功能,通過以INTERNAL連接到ORACLE的能力來愛護(hù)。以INTERNAL連接到ORACLE需要有下列先決條件:該用戶的操作系統(tǒng)賬號具有使用INTERNAL連接的操作系統(tǒng)特權(quán)。對INTERNAL數(shù)據(jù)庫有一口令,該用戶明白其口令。另外:當(dāng)用戶以INTERNAL連接時(shí),可連接到專用服務(wù)器,而且是安全連接。數(shù)據(jù)庫啟動啟動數(shù)據(jù)庫并使它可用有三步操作:啟動一個(gè)實(shí)例;裝配數(shù)據(jù)庫打開數(shù)據(jù)庫啟動一個(gè)實(shí)例啟動一實(shí)例的處理包含分配一個(gè)SGA(數(shù)據(jù)庫信息使用的內(nèi)存共享區(qū))和后臺進(jìn)程的建立。實(shí)例起動的執(zhí)行先于該實(shí)例裝配一數(shù)據(jù)庫。假如僅啟動實(shí)例,則沒有數(shù)據(jù)庫與內(nèi)儲備結(jié)構(gòu)和進(jìn)程相聯(lián)系。裝配一數(shù)據(jù)庫裝配數(shù)據(jù)庫是將一數(shù)據(jù)庫與已啟動的實(shí)例相聯(lián)。當(dāng)實(shí)例安裝一數(shù)據(jù)庫之后,該數(shù)據(jù)庫保持關(guān)閉,僅DBA可存取。打開一數(shù)據(jù)庫打開一數(shù)據(jù)庫是使數(shù)據(jù)庫能夠進(jìn)行正常數(shù)據(jù)庫操作的處理。當(dāng)一數(shù)據(jù)庫打開所有用戶可連接到該數(shù)據(jù)庫用存取其信息。在數(shù)據(jù)庫打開時(shí),在線數(shù)據(jù)文件和在線日志文件也被打開。假如一表空間在上一次數(shù)據(jù)庫關(guān)閉時(shí)為離線,在數(shù)據(jù)庫再次打開時(shí),該表空間與它所相聯(lián)的數(shù)據(jù)文件依舊離線的。數(shù)據(jù)庫和實(shí)例的關(guān)閉關(guān)閉一實(shí)例以及它所連接的數(shù)據(jù)庫也有三步操作:關(guān)閉數(shù)據(jù)庫數(shù)據(jù)庫停止的第一步是關(guān)閉數(shù)據(jù)庫。當(dāng)數(shù)據(jù)庫關(guān)閉后,所有在SGA中的數(shù)據(jù)庫數(shù)據(jù)和復(fù)原數(shù)據(jù)相應(yīng)地寫入到數(shù)據(jù)文件和日志文件。在這操作之后,所有聯(lián)機(jī)數(shù)據(jù)文件和聯(lián)機(jī)的日志文件也被關(guān)閉,任何離線表空間中數(shù)據(jù)文件夾是已關(guān)閉的。在數(shù)據(jù)庫關(guān)閉后但還安裝時(shí),操縱文件仍保持打開。卸下數(shù)據(jù)庫停止數(shù)據(jù)庫的第二步是從實(shí)例卸下數(shù)據(jù)庫。在數(shù)據(jù)庫卸下后,在運(yùn)算機(jī)內(nèi)存中僅保留實(shí)例。在數(shù)據(jù)庫卸下后,數(shù)據(jù)庫的操縱文件也被關(guān)閉。停止實(shí)例停止數(shù)據(jù)庫的最后一步是停止實(shí)例。當(dāng)實(shí)例停止后,SAG是從內(nèi)存中撤消,后臺進(jìn)程被中止。初始化參數(shù)文件在啟動一個(gè)實(shí)例時(shí),ORACLE必須讀入一初始化參數(shù)文件(initializationparameterfile),該參數(shù)文件是一個(gè)文本文件,包含有實(shí)例配置參數(shù)。這些參數(shù)置成專門值,用于初始ORACLE實(shí)例的許多內(nèi)存和進(jìn)程設(shè)置,該參數(shù)文件包含:一個(gè)實(shí)例所啟動的數(shù)據(jù)庫名字在SGA中儲備結(jié)構(gòu)使用多少內(nèi)存;在填滿在線日志文件后作什么;數(shù)據(jù)庫操縱文件的名字和位置;在數(shù)據(jù)庫中專用回滾段的名字。四、數(shù)據(jù)字典的使用數(shù)據(jù)字典是ORACLE數(shù)據(jù)庫的最重要的部分之一,是由一組只讀的表及其視圖所組成。它提供有關(guān)該數(shù)據(jù)庫的信息,可提供的信息如下:ORACLE用戶的名字;每一個(gè)用戶所授的特權(quán)和角色;模式對象的名字(表、視圖、快照、索引、集合、同義詞、序列、過程、函數(shù)、包及觸發(fā)器等);關(guān)于完整性約束的信息;列的缺省值;有關(guān)數(shù)據(jù)庫中對象的空間分布及當(dāng)前使用情形;審計(jì)信息(如誰存取或修改各種對象);其它一樣的數(shù)據(jù)庫信息。可用SQL存取數(shù)據(jù)字典,由于數(shù)據(jù)字典為只讀,承諾查詢。數(shù)據(jù)字典的結(jié)構(gòu)數(shù)據(jù)庫數(shù)據(jù)字典是由差不多表和用戶可存取的視圖組成。差不多表:數(shù)據(jù)字典的基礎(chǔ)是一組差不多表組成,儲備相關(guān)的數(shù)據(jù)庫的信息。這些信息僅由ORACLE讀和寫,它們專門少被ORACLE用戶直截了當(dāng)存取。用戶可存取視圖:數(shù)據(jù)字典包含用戶可存取視圖,可概括地點(diǎn)便地顯示數(shù)據(jù)字典的差不多表的信息。視圖將差不多表中信息解碼成可用信息。數(shù)據(jù)字典的使用當(dāng)數(shù)據(jù)庫打開時(shí),數(shù)據(jù)字典總是可用,它駐留在SYSTEM表空間中。數(shù)據(jù)字典包含視圖集,在許多情形下,每一視圖集有三種視圖包含有類似信息,彼此以前綴相區(qū)別,前綴USER、ALL和DBA。前綴為USER的視圖,為用視圖,是在用戶的模式內(nèi)。前綴為ALL的視圖,為擴(kuò)展的用戶視圖(為用戶可存取的視圖)。前綴為DBA的視圖為DBA的視圖(為全部用戶可存取的視圖)。在數(shù)據(jù)庫中ORACLE還愛護(hù)了一組虛表記錄當(dāng)前數(shù)據(jù)庫的活動,這些表稱為動態(tài)性能表。動態(tài)性能表不是真正的表,許多用戶不能存取,DBA可查詢這些表,能夠建立視圖,給其它用戶授予存取視圖權(quán)。五、事務(wù)治理事務(wù)一個(gè)事務(wù)為工作的一個(gè)邏輯單位,由一個(gè)或多個(gè)SQL語句組成。一個(gè)事務(wù)是一個(gè)原子單位,構(gòu)成事務(wù)的全部SQL語句的結(jié)果可被全部提交或者全部回滾。一個(gè)事務(wù)由第一個(gè)可執(zhí)行SQL語句開始,以提交或回滾終止,能夠是顯式的,也但是隱式的(執(zhí)行DDL語句)。在執(zhí)行一個(gè)SQL語句顯現(xiàn)錯(cuò)誤時(shí),該語句所有阻礙被回滾,看起來該語句沒有被執(zhí)行一樣,但它可不能引起當(dāng)前事務(wù)先前的工作的丟失。ORACLE的事務(wù)治理在ORACLE中一個(gè)事務(wù)是由一個(gè)可執(zhí)行的SQL語句開始,一個(gè)可執(zhí)行SQL語句產(chǎn)生對實(shí)例的調(diào)用。在事務(wù)開始時(shí),被賦給一個(gè)可用回滾段,記錄該事務(wù)的回滾項(xiàng)。一個(gè)事務(wù)以下列任何一個(gè)顯現(xiàn)而終止。當(dāng)COMMIT或ROLLBACK(沒有SAVEPOINT子句)語句發(fā)出。一個(gè)DDL語句被執(zhí)行。在DDL語句執(zhí)行前、后都隱式地提交。用戶撤消對ORACLE的連接(當(dāng)前事務(wù)提交)。用戶進(jìn)程專門中止(當(dāng)前事務(wù)回滾)。提交事務(wù)提交一事務(wù),立即在事務(wù)中由SQL語句所執(zhí)行的改變永久化。在提交前,ORACLE已有下列情形:在SGA的回滾段緩沖區(qū)已生成回滾段記錄,回滾信息包含有所修改值的老值。在SGA的日志緩沖區(qū)已生成日志項(xiàng)。這些改變在事務(wù)提交前可進(jìn)入磁盤。對SGA的數(shù)據(jù)庫緩沖區(qū)已作修改,這些修改在事務(wù)真正提交之前可進(jìn)入磁盤。在事務(wù)提交之后,有下列情形:關(guān)于與回滾段相關(guān)的內(nèi)部事務(wù)表記錄提交事務(wù),并賦給一個(gè)相應(yīng)的唯獨(dú)系統(tǒng)修改號(SCN),記錄在表中。在SGA的日志緩沖區(qū)中日志項(xiàng)由LGWR進(jìn)程寫入到在線日志文件,這是構(gòu)成提交事務(wù)的原子事務(wù)。在行上和表上的封鎖被開釋。該事務(wù)標(biāo)志為完成。注意:關(guān)于提交事務(wù)的數(shù)據(jù)修改不必由DBWR后臺進(jìn)程趕忙寫入數(shù)據(jù)文件,可連續(xù)儲備在SGA的數(shù)據(jù)庫緩沖區(qū)中,在最有效時(shí)將其寫入數(shù)據(jù)文件。回滾事務(wù)回滾事務(wù)的含義是撤消未提交事務(wù)中的SQL語句所作的對數(shù)據(jù)修改。ORALCE承諾撤消未提交的整個(gè)事務(wù),也承諾撤消部分。在回滾整個(gè)事務(wù)(沒有引用保留點(diǎn))時(shí),有下列情形:在事務(wù)中所有SQL語句作的全部修改,利用相應(yīng)的回滾段被撤消。所有數(shù)據(jù)的事務(wù)封鎖被開釋。事務(wù)終止。當(dāng)事務(wù)回滾到一保留點(diǎn)(具有SAVEPOINT)時(shí),有下列情形:僅在該保留點(diǎn)之后執(zhí)行的語句被撤消。該指定的保留點(diǎn)仍舊被保留,該保留點(diǎn)之后所建立的保留點(diǎn)被刪除。自該保留點(diǎn)之后所獵取的全部表封鎖和行封鎖被開釋,但指定的保留點(diǎn)往常所獵取的全部數(shù)據(jù)封鎖連續(xù)保持。該事務(wù)仍可連續(xù)。保留點(diǎn)保留點(diǎn)(savepoint)是在一事務(wù)范疇內(nèi)的中間標(biāo)志,經(jīng)常用于將一個(gè)長的事務(wù)劃分為小的部分。保留點(diǎn)可標(biāo)志長事務(wù)中的任何點(diǎn),承諾可回滾該點(diǎn)之后的工作。在應(yīng)用程序中經(jīng)常使用保留點(diǎn);例如一過程包含幾個(gè)函數(shù),在每個(gè)函數(shù)前可建立一個(gè)保留點(diǎn),假如函數(shù)失敗,專門容易返回到每一個(gè)函數(shù)開始的情形。在回滾到一個(gè)保留點(diǎn)之后,該保持點(diǎn)之后所獲得的數(shù)據(jù)封鎖被開釋。六、數(shù)據(jù)庫觸發(fā)器觸發(fā)器介紹數(shù)據(jù)庫觸發(fā)器(databasetrigger)是儲備在數(shù)據(jù)庫中的過程,當(dāng)表被修改時(shí)它隱式地被激發(fā)(執(zhí)行)。在ORACLE中承諾在對表發(fā)出INSERT、UPDATE或DELETE語句時(shí)隱式地執(zhí)行所定義的過程,這些過程稱為數(shù)據(jù)庫觸發(fā)器。觸發(fā)器儲備在數(shù)據(jù)庫中,并與所相關(guān)表分別儲備。觸發(fā)器僅可在表上定義。在許多情形中觸發(fā)器用于提供專門高級的專用數(shù)據(jù)庫治理系統(tǒng),來補(bǔ)充ORACLE的標(biāo)準(zhǔn)功能。觸發(fā)器一樣用于:自動地生成導(dǎo)出的列值;防止無效的事務(wù);實(shí)施更復(fù)雜的安全性檢查在分布式數(shù)據(jù)庫中實(shí)施跨過結(jié)點(diǎn)的引用完整性;實(shí)施復(fù)雜的事務(wù)規(guī)則;提供透亮事件日志;提供高級的審計(jì);愛護(hù)同步表復(fù)制;收集關(guān)于存取表的統(tǒng)計(jì)。注意:數(shù)據(jù)庫觸發(fā)器與SQL*FORMS觸發(fā)器之間的差別。數(shù)據(jù)庫觸發(fā)器是定義在表上,儲備在數(shù)據(jù)庫中,當(dāng)對表執(zhí)行INSERT、UPDATE或DELETE語句時(shí)被激發(fā),不管是誰或哪一應(yīng)用發(fā)出。而SQL*FORMS觸發(fā)器是SQL*FORM應(yīng)用的部分,僅當(dāng)在指定SQL*FORMS應(yīng)用中執(zhí)行一個(gè)指定觸發(fā)器點(diǎn)時(shí)才被激發(fā)。觸發(fā)器和說明性完整性約束都可用于約束數(shù)據(jù)的輸入,但它們之間有一定區(qū)別:說明性完整性約束是關(guān)于數(shù)據(jù)庫總是為“真”的語句。一個(gè)完整性約束應(yīng)用于表中已有數(shù)據(jù)和操縱表的任何語句。而觸發(fā)器約束事務(wù)不可應(yīng)用于在定義觸發(fā)器前已裝入的數(shù)據(jù),因此它不能保證表中全部數(shù)據(jù)服從該觸發(fā)器的規(guī)則。觸發(fā)器實(shí)施瞬時(shí)約束,即在數(shù)據(jù)改變時(shí)實(shí)施一約束。觸發(fā)器的組成:一個(gè)觸發(fā)器有三個(gè)差不多部件:觸發(fā)事件或語句、觸發(fā)器的限制、觸發(fā)器動作。觸發(fā)事件或語句:為引起觸發(fā)器激發(fā)的SQL語句,是對指定表INSERT、UPDATE或DELETE語句。觸發(fā)器限制:為一布爾表達(dá)式,當(dāng)觸發(fā)器激發(fā)時(shí)該條件必須為TRUE。觸發(fā)器的限制是用WHEN子句來指定。觸發(fā)器的動作:為一個(gè)PL/SQL塊(過程),由SQL語句和PL/SQL語句組成。當(dāng)觸發(fā)語句發(fā)出,觸發(fā)器的限制運(yùn)算得TRUE時(shí),它被執(zhí)行。在觸發(fā)器動作的語句中,可使用觸發(fā)器的處理的當(dāng)前行的列值(新值、老值),使用形式為:NEW.列名引用新值OLE.列名引用老值在定義觸發(fā)器時(shí)可指定觸發(fā)器動作執(zhí)行次數(shù):受觸發(fā)語句阻礙每一行執(zhí)行一次或是對觸發(fā)語句執(zhí)行一次。對每一觸發(fā)語句可有四種類型觸發(fā)器:行觸發(fā)器:對受觸發(fā)語句所阻礙的每一行,行觸發(fā)器激發(fā)一次。語句觸發(fā)器:該類型觸發(fā)器對觸發(fā)語句執(zhí)行一次,不管其受阻礙行數(shù)。定義觸發(fā)器能夠指定觸發(fā)時(shí)刻,指定激發(fā)器動作的執(zhí)行相關(guān)于觸發(fā)語句執(zhí)行之后或之前。BEFORE觸發(fā)器:該觸發(fā)器執(zhí)行觸發(fā)器動作是在觸發(fā)語句執(zhí)行之前。AFTER觸發(fā)器:該觸發(fā)器執(zhí)行觸發(fā)器動作是在觸發(fā)語句執(zhí)行之后。一個(gè)觸發(fā)器可處于兩種不同的方式:使能觸發(fā)器和使不能觸發(fā)器。使能觸發(fā)器:只要當(dāng)觸發(fā)語句發(fā)出,觸發(fā)器限制運(yùn)算為TRUE,這種類型的觸發(fā)器執(zhí)行其觸發(fā)動作。使不能觸發(fā)器:這種觸發(fā)器即使其觸發(fā)語句被發(fā)出,觸發(fā)器限制運(yùn)算為TRUE,也不執(zhí)行觸發(fā)器動作。觸發(fā)器的源代碼儲備在數(shù)據(jù)庫中,在第一次執(zhí)行時(shí),觸發(fā)器的源代碼被編譯,儲備在共享池中。假如觸發(fā)器從共享池中擠了,再使用時(shí)必須再重新編譯。七、分布處理和分布式數(shù)據(jù)庫簡介一個(gè)分布式數(shù)據(jù)庫在用戶面前為單個(gè)邏輯數(shù)據(jù)庫,但實(shí)際上是由儲備在多臺運(yùn)算機(jī)上的一組數(shù)據(jù)庫組成。在幾臺運(yùn)算機(jī)上的數(shù)據(jù)庫通過網(wǎng)絡(luò)可同時(shí)修改和存取,每一數(shù)據(jù)庫受它的局部的DBMS操縱。分布式數(shù)據(jù)庫中每一個(gè)數(shù)據(jù)庫服務(wù)器合作地愛護(hù)全局?jǐn)?shù)據(jù)庫的一致性。在系統(tǒng)中的每一臺運(yùn)算機(jī)稱為結(jié)點(diǎn)。假如一結(jié)點(diǎn)具有治理數(shù)據(jù)庫軟件,該結(jié)點(diǎn)稱為數(shù)據(jù)庫服務(wù)器。假如一個(gè)結(jié)點(diǎn)為要求服務(wù)器的信息的一應(yīng)用,該結(jié)點(diǎn)稱為客戶。在ORACLE客戶,執(zhí)行數(shù)據(jù)庫應(yīng)用,可存取數(shù)據(jù)信息和與用戶交互。在服務(wù)器,執(zhí)行ORACLE軟件,處理對ORACLE數(shù)據(jù)庫并發(fā)、共享數(shù)據(jù)存取。ORACLE承諾上述兩部分在同一臺運(yùn)算機(jī)上,但當(dāng)客戶部分和服務(wù)器部分是由網(wǎng)連接的不同運(yùn)算機(jī)上時(shí),更有效。分布處理是由多臺處理機(jī)分擔(dān)單個(gè)任務(wù)的處理。在ORACLE數(shù)據(jù)庫系統(tǒng)中分布處理的例子如:客戶和服務(wù)器是位于網(wǎng)絡(luò)連接的不同運(yùn)算機(jī)上。單臺運(yùn)算機(jī)上有多個(gè)處理器,不同處理器分別執(zhí)行客戶應(yīng)用。SQL*NET是ORACLE網(wǎng)絡(luò)接口,承諾運(yùn)行在網(wǎng)絡(luò)工作站的ORACLE工具和服務(wù)器上,可存取、修改、共享和儲備在其它服務(wù)器上的數(shù)據(jù)。SAQL*NET可被認(rèn)為是網(wǎng)絡(luò)通信的程序接口。SQL*NET利用通信協(xié)議和應(yīng)用程序接口(API)為OARCLE提供一個(gè)分布式數(shù)據(jù)庫和分布處理。SQL*NET驅(qū)動器為在數(shù)據(jù)庫服務(wù)器上運(yùn)行的ORACLE進(jìn)程與ORACLE工具的用戶進(jìn)程之間提供一個(gè)接口。參與分布式數(shù)據(jù)庫的每一服務(wù)器是分別地獨(dú)立地治理數(shù)據(jù)庫,好 像每一數(shù)據(jù)庫不是網(wǎng)絡(luò)化的數(shù)據(jù)庫。每一個(gè)數(shù)據(jù)庫獨(dú)立地被治理,稱為場地自治性。場地自治性有下列好處:系統(tǒng)的結(jié)點(diǎn)可反映公司的邏輯組織。由局部數(shù)據(jù)庫治理員操縱局部數(shù)據(jù),如此每一個(gè)數(shù)據(jù)庫治理員責(zé)任域要小一些,可更好治理。只要一個(gè)數(shù)據(jù)庫和網(wǎng)絡(luò)是可用,那么全局?jǐn)?shù)據(jù)庫可部分可用??刹荒芤蛞粋€(gè)數(shù)據(jù)庫的故障而停止全部操作或引起性能瓶頸。故障復(fù)原通常在單個(gè)結(jié)點(diǎn)上進(jìn)行。每個(gè)局部數(shù)據(jù)庫存在一個(gè)數(shù)據(jù)字典。結(jié)點(diǎn)可獨(dú)立地升級軟件??蓮姆植际綌?shù)據(jù)庫的所有結(jié)點(diǎn)存取
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版兒童托管所合伙人經(jīng)營管理協(xié)議示范文本3篇
- 二零二五版新能源汽車電池回收利用服務(wù)協(xié)議4篇
- 二零二五年度打樁工程信息化管理合同規(guī)范范本3篇
- 2025年鮮蛋電商運(yùn)營與數(shù)據(jù)分析合作協(xié)議3篇
- 二零二五年礦山承包經(jīng)營資源節(jié)約利用協(xié)議3篇
- 2025年度煤礦企業(yè)員工勞動合同范本(含加班補(bǔ)貼計(jì)算標(biāo)準(zhǔn))4篇
- 基于二零二五年度技術(shù)的香港電子合同制造成本降低協(xié)議3篇
- 個(gè)人電商運(yùn)營服務(wù)合同2024年度3篇
- erp合同管理系統(tǒng)
- 2025年度無人機(jī)精準(zhǔn)定位服務(wù)采購合同文本3篇
- 2025年上半年江蘇連云港灌云縣招聘“鄉(xiāng)村振興專干”16人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- DB3301T 0382-2022 公共資源交易開評標(biāo)數(shù)字見證服務(wù)規(guī)范
- 人教版2024-2025學(xué)年八年級上學(xué)期數(shù)學(xué)期末壓軸題練習(xí)
- 江蘇省無錫市2023-2024學(xué)年八年級上學(xué)期期末數(shù)學(xué)試題(原卷版)
- 俄語版:中國文化概論之中國的傳統(tǒng)節(jié)日
- 2022年湖南省公務(wù)員錄用考試《申論》真題(縣鄉(xiāng)卷)及答案解析
- 婦科一病一品護(hù)理匯報(bào)
- 2024年全國統(tǒng)一高考數(shù)學(xué)試卷(新高考Ⅱ)含答案
- 移動商務(wù)內(nèi)容運(yùn)營(吳洪貴)任務(wù)四 引起受眾傳播內(nèi)容要素的掌控
- 繪本《汪汪的生日派對》
- 助產(chǎn)護(hù)理畢業(yè)論文
評論
0/150
提交評論