亚洲精品成人18久久久久_日韩欧美色_江苏极品身材白嫩少妇自拍_曰本人做爰大片免费观看一老师_久草视频网_最近中文字幕MV高清在线视频

首頁(yè) > 考試輔導(dǎo) > 計(jì)算機(jī)考試 > Oracle認(rèn)證 > Oracle學(xué)習(xí) > ORACLE認(rèn)證基礎(chǔ):ORACLE系統(tǒng)概述

ORACLE認(rèn)證基礎(chǔ):ORACLE系統(tǒng)概述

 oracle公司自86年推出版本5開(kāi)始,系統(tǒng)具有分布數(shù)據(jù)庫(kù)處理功能.88年推出版本6,oracle rdbms(v6.0)可帶事務(wù)處理選項(xiàng)(tpo),提高了事務(wù)處理的速度.1992年推出了版本7,在oracle rdbms中可帶過(guò)程數(shù)據(jù)庫(kù)選項(xiàng)(procedural database option)和并行服務(wù)器選項(xiàng)(parallel server option),稱(chēng)為oracle7數(shù)據(jù)庫(kù)管理系統(tǒng),它釋放了開(kāi)放的關(guān)系型系統(tǒng)的真正潛力。oracle7的協(xié)同開(kāi)發(fā)環(huán)境提供了新一代集成的軟件生命周期開(kāi)發(fā)環(huán)境,可用以實(shí)現(xiàn)高生產(chǎn)率、大型事務(wù)處理及客戶(hù)/服務(wù)器結(jié)構(gòu)的應(yīng)用系統(tǒng)。協(xié)同開(kāi)發(fā)環(huán)境具有可移植性,支持多種數(shù)據(jù)來(lái)源、多種圖形用戶(hù)界面及多媒體、多民族語(yǔ)言、case等協(xié)同應(yīng)用系統(tǒng)。

    一、 oracle系統(tǒng)

    1.oracle產(chǎn)品結(jié)構(gòu)及組成

    oracle系統(tǒng)是由以rdbms為核心的一批軟件產(chǎn)品構(gòu)成.

    2. oracle系統(tǒng)特點(diǎn)

    oracle公司于1979年,首先推出基于sql標(biāo)準(zhǔn)的關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品,可在100多種硬件平臺(tái)上運(yùn)行(所括微機(jī)、工作站、小型機(jī)、中型機(jī)和大型機(jī)),支持很多種操作系統(tǒng)。用戶(hù)的oracle應(yīng)用可方便地從一種計(jì)算機(jī)配置移至另一種計(jì)算機(jī)配置上。oracle的分布式結(jié)構(gòu)可將數(shù)據(jù)和應(yīng)用駐留在多臺(tái)計(jì)算機(jī)上,而相互間的通信是透明的。1992年6月oracle公司推出的oracle7協(xié)同服務(wù)器數(shù)據(jù)庫(kù),使關(guān)系數(shù)據(jù)庫(kù)技術(shù)邁上了新臺(tái)階。根據(jù)idg(國(guó)際數(shù)據(jù)集團(tuán))1992年全球unix數(shù)據(jù)庫(kù)市場(chǎng)報(bào)告,oracle占市場(chǎng)銷(xiāo)售量50%。它之所以倍受用戶(hù)喜愛(ài)是因?yàn)樗幸韵峦怀龅奶攸c(diǎn):

    支持大數(shù)據(jù)庫(kù)、多用戶(hù)的高性能的事務(wù)處理。oracle支持最大數(shù)據(jù)庫(kù),其大小可到幾百千兆,可充分利用硬件設(shè)備。支持大量用戶(hù)同時(shí)在同一數(shù)據(jù)上執(zhí)行各種數(shù)據(jù)應(yīng)用,并使數(shù)據(jù)爭(zhēng)用最小,保證數(shù)據(jù)一致性。系統(tǒng)維護(hù)具有高的性能,oracle每天可連續(xù)24小時(shí)工作,正常的系統(tǒng)操作(后備或個(gè)別計(jì)算機(jī)系統(tǒng)故障)不會(huì)中斷數(shù)據(jù)庫(kù)的使用。可控制數(shù)據(jù)庫(kù)數(shù)據(jù)的可用性,可在數(shù)據(jù)庫(kù)級(jí)或在子數(shù)據(jù)庫(kù)級(jí)上控制。

    oracle遵守?cái)?shù)據(jù)存取語(yǔ)言、操作系統(tǒng)、用戶(hù)接口和網(wǎng)絡(luò)通信協(xié)議的工業(yè)標(biāo)準(zhǔn)。所以它是一個(gè)開(kāi)放系統(tǒng),保護(hù)了用戶(hù)的投資。美國(guó)標(biāo)準(zhǔn)化和技術(shù)研究所(nist)對(duì)oracle7 server進(jìn)行檢驗(yàn),100%地與ansi/iso sql89標(biāo)準(zhǔn)的二級(jí)相兼容。

    實(shí)施安全性控制和完整性控制。oracle為限制各監(jiān)控?cái)?shù)據(jù)存取提供系統(tǒng)可靠的安全性。oracle實(shí)施數(shù)據(jù)完整性,為可接受的數(shù)據(jù)指定標(biāo)準(zhǔn)。

    支持分布式數(shù)據(jù)庫(kù)和分布處理。oracle為了充分利用計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò),允許將處理分為數(shù)據(jù)庫(kù)服務(wù)器和客戶(hù)應(yīng)用程序,所有共享的數(shù)據(jù)管理由數(shù)據(jù)庫(kù)管理系統(tǒng)的計(jì)算機(jī)處理,而運(yùn)行數(shù)據(jù)庫(kù)應(yīng)用的工作站集中于解釋和顯示數(shù)據(jù)。通過(guò)網(wǎng)絡(luò)連接的計(jì)算機(jī)環(huán)境,oracle將存放在多臺(tái)計(jì)算機(jī)上的數(shù)據(jù)組合成一個(gè)邏輯數(shù)據(jù)庫(kù),可被全部網(wǎng)絡(luò)用戶(hù)存取。分布式系統(tǒng)像集中式數(shù)據(jù)庫(kù)一樣具有透明性和數(shù)據(jù)一致性。

    具有可移植性、可兼容性和可連接性。由于oracle軟件可在許多不同的操作系統(tǒng)上運(yùn)行,以致oracle上所開(kāi)發(fā)的應(yīng)用可移植到任何操作系統(tǒng),只需很少修改或不需修改。oracle軟件同工業(yè)標(biāo)準(zhǔn)相兼容,包括許多工業(yè)標(biāo)準(zhǔn)的操作系統(tǒng),所開(kāi)發(fā)應(yīng)用系統(tǒng)可在任何操作系統(tǒng)上運(yùn)行。可連接性是指oralce允許不同類(lèi)型的計(jì)算機(jī)和操作系統(tǒng)通過(guò)網(wǎng)絡(luò)可共享信息。

    二、 oracle數(shù)據(jù)庫(kù)系統(tǒng)的體系結(jié)構(gòu)

    oracle數(shù)據(jù)庫(kù)系統(tǒng)為具有管理oracle數(shù)據(jù)庫(kù)功能的計(jì)算機(jī)系統(tǒng)。每一個(gè)運(yùn)行的oracle數(shù)據(jù)庫(kù)與一個(gè)oracle實(shí)例(instance)相聯(lián)系。一個(gè)oracle實(shí)例為存取和控制一數(shù)據(jù)庫(kù)的軟件機(jī)制。每一次在數(shù)據(jù)庫(kù)服務(wù)器上啟動(dòng)一數(shù)據(jù)庫(kù)時(shí),稱(chēng)為系統(tǒng)全局區(qū)(system global area)的一內(nèi)存區(qū)(簡(jiǎn)稱(chēng)sga)被分配,有一個(gè)或多個(gè)oracle進(jìn)程被啟動(dòng)。該sga 和 oracle進(jìn)程的結(jié)合稱(chēng)為一個(gè)oracle數(shù)據(jù)庫(kù)實(shí)例。一個(gè)實(shí)例的sga和進(jìn)程為管理數(shù)據(jù)庫(kù)數(shù)據(jù)、為該數(shù)據(jù)庫(kù)一個(gè)或多個(gè)用戶(hù)服務(wù)而工作。

    在oracle系統(tǒng)中,首先是實(shí)例啟動(dòng),然后由實(shí)例裝配(mount)一數(shù)據(jù)庫(kù)。在松耦合系統(tǒng)中,在具有oracle parallel server 選項(xiàng)時(shí),單個(gè)數(shù)據(jù)庫(kù)可被多個(gè)實(shí)例裝配,即多個(gè)實(shí)例共享同一物理數(shù)據(jù)庫(kù)。

    1. oracle實(shí)例的進(jìn)程結(jié)構(gòu)和內(nèi)存結(jié)構(gòu)

    1) 進(jìn)程結(jié)構(gòu)

    進(jìn)程是操作系統(tǒng)中的一種機(jī)制,它可執(zhí)行一系列的操作步。在有些操作系統(tǒng)中使用作業(yè)(job)或任務(wù)(task)的術(shù)語(yǔ)。一個(gè)進(jìn)程通常有它自己的專(zhuān)用存儲(chǔ)區(qū)。oracle進(jìn)程的體系結(jié)構(gòu)設(shè)計(jì)使性能最大。

    oracle實(shí)例有兩種類(lèi)型:?jiǎn)芜M(jìn)程實(shí)例和多進(jìn)程實(shí)例。

    單進(jìn)程oracle(又稱(chēng)單用戶(hù)oracle)是一種數(shù)據(jù)庫(kù)系統(tǒng),一個(gè)進(jìn)程執(zhí)行全部oracle代碼。由于oracle部分和客戶(hù)應(yīng)用程序不能分別以進(jìn)程執(zhí)行,所以oracle的代碼和用戶(hù)的數(shù)據(jù)庫(kù)應(yīng)用是單個(gè)進(jìn)程執(zhí)行。

    在單進(jìn)程環(huán)境下的oracle 實(shí)例,僅允許一個(gè)用戶(hù)可存取。例如在ms-dos上運(yùn)行oracle 。

    多進(jìn)程oracle實(shí)例(又稱(chēng)多用戶(hù)oracle)使用多個(gè)進(jìn)程來(lái)執(zhí)行oracle的不同部分,對(duì)于每一個(gè)連接的用戶(hù)都有一個(gè)進(jìn)程。

    在多進(jìn)程系統(tǒng)中,進(jìn)程分為兩類(lèi):用戶(hù)進(jìn)程和oracle進(jìn)程。當(dāng)一用戶(hù)運(yùn)行一應(yīng)用程序,如pro*c程序或一個(gè)oracle工具(如sql*plus),為用戶(hù)運(yùn)行的應(yīng)用建立一個(gè)用戶(hù)進(jìn)程。oracle進(jìn)程又分為兩類(lèi):服務(wù)器進(jìn)程和后臺(tái)進(jìn)程。服務(wù)器進(jìn)程用于處理連接到該實(shí)例的用戶(hù)進(jìn)程的請(qǐng)求。當(dāng)應(yīng)用和oracele是在同一臺(tái)機(jī)器上運(yùn)行,而不再通過(guò)網(wǎng)絡(luò),一般將用戶(hù)進(jìn)程和它相應(yīng)的服務(wù)器進(jìn)程組合成單個(gè)的進(jìn)程,可降低系統(tǒng)開(kāi)銷(xiāo)。然而,當(dāng)應(yīng)用和oracle運(yùn)行在不同的機(jī)器上時(shí),用戶(hù)進(jìn)程經(jīng)過(guò)一個(gè)分離服務(wù)器進(jìn)程與oracle通信。它可執(zhí)行下列任務(wù):

    對(duì)應(yīng)用所發(fā)出的sql語(yǔ)句進(jìn)行語(yǔ)法分析和執(zhí)行。

    從磁盤(pán)(數(shù)據(jù)文件)中讀入必要的數(shù)據(jù)塊到sga的共享數(shù)據(jù)庫(kù)緩沖區(qū)(該塊不在緩沖區(qū)時(shí))。

    將結(jié)果返回給應(yīng)用程序處理。

    系統(tǒng)為了使性能最好和協(xié)調(diào)多個(gè)用戶(hù),在多進(jìn)程系統(tǒng)中使用一些附加進(jìn)程,稱(chēng)為后臺(tái)進(jìn)程。在許多操作系統(tǒng)中,后臺(tái)進(jìn)程是在實(shí)例啟動(dòng)時(shí)自動(dòng)地建立。一個(gè)oracle實(shí)例可以有許多后臺(tái)進(jìn)程,但它們不是一直存在。后臺(tái)進(jìn)程的名字為:

    dbwr  數(shù)據(jù)庫(kù)寫(xiě)入程序

    lgwr 日志寫(xiě)入程序

    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è)后臺(tái)進(jìn)程與oracle數(shù)據(jù)庫(kù)的不同部分交互。

    下面對(duì)后臺(tái)進(jìn)程的功能作簡(jiǎn)單介紹:

    dbwr進(jìn)程:該進(jìn)程執(zhí)行將緩沖區(qū)寫(xiě)入數(shù)據(jù)文件,是負(fù)責(zé)緩沖存儲(chǔ)區(qū)管理的一個(gè)oracle后臺(tái)進(jìn)程。當(dāng)緩沖區(qū)中的一緩沖區(qū)被修改,它被標(biāo)志為“弄臟”,dbwr的主要任務(wù)是將“弄臟”的緩沖區(qū)寫(xiě)入磁盤(pán),使緩沖區(qū)保持“干凈”。由于緩沖存儲(chǔ)區(qū)的緩沖區(qū)填入數(shù)據(jù)庫(kù)或被用戶(hù)進(jìn)程弄臟,未用的緩沖區(qū)的數(shù)目減少。當(dāng)未用的緩沖區(qū)下降到很少,以致用戶(hù)進(jìn)程要從磁盤(pán)讀入塊到內(nèi)存存儲(chǔ)區(qū)時(shí)無(wú)法找到未用的緩沖區(qū)時(shí),dbwr將管理緩沖存儲(chǔ)區(qū),使用戶(hù)進(jìn)程總可得到未用的緩沖區(qū)。

    oracle采用lru(least recently used)算法(最近最少使用算法)保持內(nèi)存中的數(shù)據(jù)塊是最近使用的,使i/o最小。在下列情況預(yù)示dbwr 要將弄臟的緩沖區(qū)寫(xiě)入磁盤(pán):

    當(dāng)一個(gè)服務(wù)器進(jìn)程將一緩沖區(qū)移入“弄臟”表,該弄臟表達(dá)到臨界長(zhǎng)度時(shí),該服務(wù)進(jìn)程將通知dbwr進(jìn)行寫(xiě)。該臨界長(zhǎng)度是為參數(shù)db-block-write-batch的值的一半。

    當(dāng)一個(gè)服務(wù)器進(jìn)程在lru表中查找db-block-max-scan-cnt緩沖區(qū)時(shí),沒(méi)有查到未用的緩沖區(qū),它停止查找并通知dbwr進(jìn)行寫(xiě)。

    出現(xiàn)超時(shí)(每次3秒),dbwr 將通知本身。

    當(dāng)出現(xiàn)檢查點(diǎn)時(shí),lgwr將通知dbwr

    在前兩種情況下,dbwr將弄臟表中的塊寫(xiě)入磁盤(pán),每次可寫(xiě)的塊數(shù)由初始化參數(shù)db-block-write-batch所指定。如果弄臟表中沒(méi)有該參數(shù)指定塊數(shù)的緩沖區(qū),dbwr從lur表中查找另外一個(gè)弄臟緩沖區(qū)。

    如果dbwr在三秒內(nèi)未活動(dòng),則出現(xiàn)超時(shí)。在這種情況下dbwr對(duì)lru表查找指定數(shù)目的緩沖區(qū),將所找到任何弄臟緩沖區(qū)寫(xiě)入磁盤(pán)。每當(dāng)出現(xiàn)超時(shí),dbwr查找一個(gè)新的緩沖區(qū)組。每次由dbwr查找的緩沖區(qū)的數(shù)目是為寢化參數(shù)db-block-write-batch的值的二倍。如果數(shù)據(jù)庫(kù)空運(yùn)轉(zhuǎn),dbwr最終將全部緩沖區(qū)存儲(chǔ)區(qū)寫(xiě)入磁盤(pán)。

    在出現(xiàn)檢查點(diǎn)時(shí),lgwr指定一修改緩沖區(qū)表必須寫(xiě)入到磁盤(pán)。dbwr將指定的緩沖區(qū)寫(xiě)入磁盤(pán)。

    在有些平臺(tái)上,一個(gè)實(shí)例可有多個(gè)dbwr。在這樣的實(shí)例中,一些塊可寫(xiě)入一磁盤(pán),另一些塊可寫(xiě)入其它磁盤(pán)。參數(shù)db-writers控制dbwr進(jìn)程個(gè)數(shù)。

    lgwr進(jìn)程:該進(jìn)程將日志緩沖區(qū)寫(xiě)入磁盤(pán)上的一個(gè)日志文件,它是負(fù)責(zé)管理日志緩沖區(qū)的一個(gè)oracle后臺(tái)進(jìn)程。lgwr進(jìn)程將自上次寫(xiě)入磁盤(pán)以來(lái)的全部日志項(xiàng)輸出,lgwr輸出:

    當(dāng)用戶(hù)進(jìn)程提交一事務(wù)時(shí)寫(xiě)入一個(gè)提交記錄。

    每三秒將日志緩沖區(qū)輸出。

    當(dāng)日志緩沖區(qū)的1/3已滿(mǎn)時(shí)將日志緩沖區(qū)輸出。

    當(dāng)dbwr將修改緩沖區(qū)寫(xiě)入磁盤(pán)時(shí)則將日志緩沖區(qū)輸出。

    lgwr進(jìn)程同步地寫(xiě)入到活動(dòng)的鏡象在線(xiàn)日志文件組。如果組中一個(gè)文件被刪除或不可用,lgwr 可繼續(xù)地寫(xiě)入該組的其它文件。

    日志緩沖區(qū)是一個(gè)循環(huán)緩沖區(qū)。當(dāng)lgwr將日志緩沖區(qū)的日志項(xiàng)寫(xiě)入日志文件后,服務(wù)器進(jìn)程可將新的日志項(xiàng)寫(xiě)入到該日志緩沖區(qū)。lgwr 通常寫(xiě)得很快,可確保日志緩沖區(qū)總有空間可寫(xiě)入新的日志項(xiàng)。

    注意:有時(shí)候當(dāng)需要更多的日志緩沖區(qū)時(shí),lwgr在一個(gè)事務(wù)提交前就將日志項(xiàng)寫(xiě)出,而這些日志項(xiàng)僅當(dāng)在以后事務(wù)提交后才永久化。

    oracle使用快速提交機(jī)制,當(dāng)用戶(hù)發(fā)出commit語(yǔ)句時(shí),一個(gè)commit記錄立即放入日志緩沖區(qū),但相應(yīng)的數(shù)據(jù)緩沖區(qū)改變是被延遲,直到在更有效時(shí)才將它們寫(xiě)入數(shù)據(jù)文件。當(dāng)一事務(wù)提交時(shí),被賦給一個(gè)系統(tǒng)修改號(hào)(scn),它同事務(wù)日志項(xiàng)一起記錄在日志中。由于scn記錄在日志中,以致在并行服務(wù)器選項(xiàng)配置情況下,恢復(fù)操作可以同步。

    ckpt進(jìn)程:該進(jìn)程在檢查點(diǎn)出現(xiàn)時(shí),對(duì)全部數(shù)據(jù)文件的標(biāo)題進(jìn)行修改,指示該檢查點(diǎn)。在通常的情況下,該任務(wù)由lgwr執(zhí)行。然而,如果檢查點(diǎn)明顯地降低系統(tǒng)性能時(shí),可使ckpt進(jìn)程運(yùn)行,將原來(lái)由lgwr進(jìn)程執(zhí)行的檢查點(diǎn)的工作分離出來(lái),由ckpt進(jìn)程實(shí)現(xiàn)。對(duì)于許多應(yīng)用情況,ckpt進(jìn)程是不必要的。只有當(dāng)數(shù)據(jù)庫(kù)有許多數(shù)據(jù)文件,lgwr在檢查點(diǎn)時(shí)明顯地降低性能才使ckpt運(yùn)行。ckpt進(jìn)程不將塊寫(xiě)入磁盤(pán),該工作是由dbwr完成的。

    初始化參數(shù)checkpoint-process控制ckpt進(jìn)程的使能或使不能。缺省時(shí)為false,即為使不能。

    smon進(jìn)程:該進(jìn)程實(shí)例啟動(dòng)時(shí)執(zhí)行實(shí)例恢復(fù),還負(fù)責(zé)清理不再使用的臨時(shí)段。在具有并行服務(wù)器選項(xiàng)的環(huán)境下,smon對(duì)有故障cpu或?qū)嵗M(jìn)行實(shí)例恢復(fù)。smon進(jìn)程有規(guī)律地被呼醒,檢查是否需要,或者其它進(jìn)程發(fā)現(xiàn)需要時(shí)可以被調(diào)用。

    pmon進(jìn)程:該進(jìn)程在用戶(hù)進(jìn)程出現(xiàn)故障時(shí)執(zhí)行進(jìn)程恢復(fù),負(fù)責(zé)清理內(nèi)存儲(chǔ)區(qū)和釋放該進(jìn)程所使用的資源。例:它要重置活動(dòng)事務(wù)表的狀態(tài),釋放封鎖,將該故障的進(jìn)程的id從活動(dòng)進(jìn)程表中移去。pmon還周期地檢查調(diào)度進(jìn)程(dispatcher)和服務(wù)器進(jìn)程的狀態(tài),如果已死,則重新啟動(dòng)(不包括有意刪除的進(jìn)程)。

    pmon有規(guī)律地被呼醒,檢查是否需要,或者其它進(jìn)程發(fā)現(xiàn)需要時(shí)可以被調(diào)用。

    reco進(jìn)程:該進(jìn)程是在具有分布式選項(xiàng)時(shí)所使用的一個(gè)進(jìn)程,自動(dòng)地解決在分布式事務(wù)中的故障。一個(gè)結(jié)點(diǎn)reco后臺(tái)進(jìn)程自動(dòng)地連接到包含有懸而未決的分布式事務(wù)的其它數(shù)據(jù)庫(kù)中,reco自動(dòng)地解決所有的懸而不決的事務(wù)。任何相應(yīng)于已處理的懸而不決的事務(wù)的行將從每一個(gè)數(shù)據(jù)庫(kù)的懸掛事務(wù)表中刪去。

    當(dāng)一數(shù)據(jù)庫(kù)服務(wù)器的reco后臺(tái)進(jìn)程試圖建立同一遠(yuǎn)程服務(wù)器的通信,如果遠(yuǎn)程服務(wù)器是不可用或者網(wǎng)絡(luò)連接不能建立時(shí),reco自動(dòng)地在一個(gè)時(shí)間間隔之后再次連接。

    reco后臺(tái)進(jìn)程僅當(dāng)在允許分布式事務(wù)的系統(tǒng)中出現(xiàn),而且distributed – transactions參數(shù)是大于0。

    arch進(jìn)程:該進(jìn)程將已填滿(mǎn)的在線(xiàn)日志文件拷貝到指定的存儲(chǔ)設(shè)備。當(dāng)日志是為archivelog使用方式、并可自動(dòng)地歸檔時(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)程允許用戶(hù)進(jìn)程共享有限的服務(wù)器進(jìn)程(server process)。沒(méi)有調(diào)度進(jìn)程時(shí),每個(gè)用戶(hù)進(jìn)程需要一個(gè)專(zhuān)用服務(wù)進(jìn)程(dedicatedserver process)。對(duì)于多線(xiàn)索服務(wù)器(multi-threaded server)可支持多個(gè)用戶(hù)進(jìn)程。如果在系統(tǒng)中具有大量用戶(hù),多線(xiàn)索服務(wù)器可支持大量用戶(hù),尤其在客戶(hù)_服務(wù)器環(huán)境中。

    在一個(gè)數(shù)據(jù)庫(kù)實(shí)例中可建立多個(gè)調(diào)度進(jìn)程。對(duì)每種網(wǎng)絡(luò)協(xié)議至少建立一個(gè)調(diào)度進(jìn)程。數(shù)據(jù)庫(kù)管理員根據(jù)操作系統(tǒng)中每個(gè)進(jìn)程可連接數(shù)目的限制決定啟動(dòng)的調(diào)度程序的最優(yōu)數(shù),在實(shí)例運(yùn)行時(shí)可增加或刪除調(diào)度進(jìn)程。多線(xiàn)索服務(wù)器需要sql*net版本2或更后的版本。在多線(xiàn)索服務(wù)器的配置下,一個(gè)網(wǎng)絡(luò)接收器進(jìn)程等待客戶(hù)應(yīng)用連接請(qǐng)求,并將每一個(gè)發(fā)送到一個(gè)調(diào)度進(jìn)程。如果不能將客戶(hù)應(yīng)用連接到一調(diào)度進(jìn)程時(shí),網(wǎng)絡(luò)接收器進(jìn)程將啟動(dòng)一個(gè)專(zhuān)用服務(wù)器進(jìn)程。該網(wǎng)絡(luò)接收器進(jìn)程不是oracle實(shí)例的組成部分,它是處理與oracle有關(guān)的網(wǎng)絡(luò)進(jìn)程的組成部分。在實(shí)例啟動(dòng)時(shí),該網(wǎng)絡(luò)接收器被打開(kāi),為用戶(hù)連接到oracle建立一通信路徑,然后每一個(gè)調(diào)度進(jìn)程把連接請(qǐng)求的調(diào)度進(jìn)程的地址給予于它的接收器。當(dāng)一個(gè)用戶(hù)進(jìn)程作連接請(qǐng)求時(shí),網(wǎng)絡(luò)接收器進(jìn)程分析請(qǐng)求并決定該用戶(hù)是否可使用一調(diào)度進(jìn)程。如果是,該網(wǎng)絡(luò)接收器進(jìn)程返回該調(diào)度進(jìn)程的地址,之后用戶(hù)進(jìn)程直接連接到該調(diào)度進(jìn)程。有些用戶(hù)進(jìn)程不能調(diào)度進(jìn)程通信(如果使用sql*net以前的版本的用戶(hù)),網(wǎng)絡(luò)接收器進(jìn)程不能將如此用戶(hù)連接到一調(diào)度進(jìn)程。在這種情況下,網(wǎng)絡(luò)接收器建立一個(gè)專(zhuān)用服務(wù)器進(jìn)程,建立一種合適的連接。

    2)、oracle內(nèi)存結(jié)構(gòu)

    oracle在內(nèi)存存儲(chǔ)下列信息:

    執(zhí)行的程序代碼。

    連接的會(huì)話(huà)信息

    程序執(zhí)行期間所需數(shù)據(jù)和共享的信息

    存儲(chǔ)在外存儲(chǔ)上的緩沖信息。

    oracle具有下列基本的內(nèi)存結(jié)構(gòu):

    軟件代碼區(qū)

    系統(tǒng)全局區(qū),包括數(shù)據(jù)庫(kù)緩沖存儲(chǔ)區(qū)、日志緩沖區(qū)和共享池.

    程序全局區(qū),包括棧區(qū)和數(shù)據(jù)區(qū).

    排序區(qū)

    軟件代碼區(qū)

    用于存儲(chǔ)正在執(zhí)行的或可以執(zhí)行的程序代碼。

    軟件區(qū)是只讀,可安裝成共享或非共享。oracle系統(tǒng)程序是可共享的,以致多個(gè)oracle用戶(hù)可存取它,而不需要在內(nèi)存有多個(gè)副本。用戶(hù)程序可以共享也可以不共享。

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

    為一組由oracle分配的共享的內(nèi)存結(jié)構(gòu),可包含一個(gè)數(shù)據(jù)庫(kù)實(shí)例的數(shù)據(jù)或控制信息。如果多個(gè)用戶(hù)同時(shí)連接到同一實(shí)例時(shí),在實(shí)例的sga中數(shù)據(jù)可為多個(gè)用戶(hù)所共享,所以又稱(chēng)為共享全局區(qū)。當(dāng)實(shí)例起動(dòng)時(shí),sga的存儲(chǔ)自動(dòng)地被分配;當(dāng)實(shí)例關(guān)閉時(shí),該存儲(chǔ)被回收。所有連接到多進(jìn)程數(shù)據(jù)庫(kù)實(shí)例的全部用戶(hù)可自動(dòng)地被分配;當(dāng)實(shí)例關(guān)閉時(shí),該存儲(chǔ)被回收。所有連接到多進(jìn)程數(shù)據(jù)庫(kù)實(shí)例的全部用戶(hù)可使用其sga中的信息,但僅僅有幾個(gè)進(jìn)程可寫(xiě)入信息。在sga中存儲(chǔ)信息將內(nèi)存劃分成幾個(gè)區(qū):數(shù)據(jù)庫(kù)緩沖存儲(chǔ)區(qū)、日志緩沖區(qū)、共享池、請(qǐng)求和響應(yīng)隊(duì)列、數(shù)據(jù)字典存儲(chǔ)區(qū)和其它各種信息。

    程序全局區(qū)

    pga是一個(gè)內(nèi)存區(qū),包含單個(gè)進(jìn)程的數(shù)據(jù)和控制信息,所以又稱(chēng)為進(jìn)程全局區(qū)(process global area)。

    排序區(qū)

    排序需要內(nèi)存空間,oracle利用該內(nèi)存排序數(shù)據(jù),這部分空間稱(chēng)為排序區(qū)。排序區(qū)存在于請(qǐng)求排序的用戶(hù)進(jìn)程的內(nèi)存中,該空間的大小為適就排序數(shù)據(jù)量的大小,可增長(zhǎng),但受初始化參數(shù)sort-area-sizer所限制。

    2. oracle的配置方案

    所有連接到oracle的用戶(hù)必須執(zhí)行兩個(gè)代碼模塊可存取一個(gè)oracle數(shù)據(jù)庫(kù)實(shí)例:

    應(yīng)用或oracle工具:一數(shù)據(jù)庫(kù)用戶(hù)執(zhí)行一數(shù)據(jù)庫(kù)應(yīng)用或一個(gè)oracle工具,可向oracle數(shù)據(jù)庫(kù)發(fā)出sql語(yǔ)句。
oracle服務(wù)器程序:負(fù)責(zé)解釋和處理應(yīng)用中的sql語(yǔ)句。

    在多進(jìn)程實(shí)例中,連接用戶(hù)的代碼可按下列三種方案之一配置:

    對(duì)于每一個(gè)用戶(hù),其數(shù)據(jù)庫(kù)應(yīng)用程序和服務(wù)器程序組合成單個(gè)用戶(hù)進(jìn)程

    對(duì)于每一個(gè)用戶(hù),其數(shù)據(jù)庫(kù)應(yīng)用是由用戶(hù)進(jìn)程所運(yùn)行,并有一個(gè)專(zhuān)用服務(wù)器進(jìn)程。執(zhí)行oracle服務(wù)器的代碼。這樣的配置稱(chēng)為專(zhuān)用服務(wù)器體系結(jié)構(gòu)

    執(zhí)行數(shù)據(jù)庫(kù)應(yīng)用的進(jìn)程不同于執(zhí)行oracle服務(wù)器代碼的進(jìn)程,而且每一個(gè)服務(wù)器進(jìn)程(執(zhí)行oracle服務(wù)器代碼)可服務(wù)于多個(gè)用戶(hù)進(jìn)程,這樣的配置稱(chēng)為多線(xiàn)索服務(wù)器體系結(jié)構(gòu)。

    1) user/server進(jìn)程相結(jié)合的結(jié)構(gòu)

    在這種配置下,數(shù)據(jù)庫(kù)應(yīng)用和oracle服務(wù)器程序是在同一個(gè)進(jìn)程中運(yùn)行,該進(jìn)程稱(chēng)為用戶(hù)進(jìn)程。

    這種oracle配置有時(shí)稱(chēng)為單任務(wù)oracle(single_task oracle),該配置適用于這樣的操作系統(tǒng),它可在同一進(jìn)程中的數(shù)據(jù)庫(kù)應(yīng)用和oracle代碼之間維護(hù)一個(gè)隔離,該隔離是為數(shù)據(jù)安全性和完整性所需。其中程序接口(program interface)是負(fù)責(zé)oracle服務(wù)器代碼的隔離和保護(hù),在數(shù)據(jù)庫(kù)應(yīng)用和oracle用戶(hù)程序之間傳送數(shù)據(jù)。

    2) 使用專(zhuān)用服務(wù)器進(jìn)程的系統(tǒng)結(jié)構(gòu)

    使用專(zhuān)用服務(wù)器進(jìn)程的oracle系統(tǒng)在兩臺(tái)計(jì)算機(jī)上運(yùn)行。在這種系統(tǒng)中,在一計(jì)算機(jī)上用戶(hù)進(jìn)程執(zhí)行數(shù)據(jù)庫(kù)應(yīng)用,而在另一臺(tái)計(jì)算機(jī)上的服務(wù)器進(jìn)程執(zhí)行相應(yīng)的oracle服務(wù)器代碼,這兩個(gè)進(jìn)程是分離的。為每個(gè)用戶(hù)進(jìn)程建立的不同的服務(wù)器進(jìn)程稱(chēng)為專(zhuān)用服務(wù)器進(jìn)程,因?yàn)樵摲⻊?wù)器進(jìn)程僅對(duì)相連的用戶(hù)進(jìn)程起作用。這種配置又稱(chēng)為兩任務(wù)oracle。每一個(gè)連接到oracle的用戶(hù)進(jìn)程有一個(gè)相應(yīng)的專(zhuān)用服務(wù)進(jìn)程。這種系統(tǒng)結(jié)構(gòu)允許客戶(hù)應(yīng)用是有工作站上執(zhí)行,通過(guò)網(wǎng)絡(luò)與運(yùn)行oracle的計(jì)算機(jī)通信。當(dāng)客戶(hù)應(yīng)用和oracle服務(wù)器代碼是在同一臺(tái)計(jì)算機(jī)上執(zhí)行時(shí),這種結(jié)構(gòu)也可用。

    3) 多線(xiàn)索服務(wù)器的系統(tǒng)結(jié)構(gòu)

    多線(xiàn)索服務(wù)器配置允許許多用戶(hù)進(jìn)程共享很少服務(wù)器進(jìn)程。在沒(méi)有多線(xiàn)索服務(wù)器的配置中,每一個(gè)用戶(hù)進(jìn)程需要自己的專(zhuān)用服務(wù)器進(jìn)程。在具有多線(xiàn)索服務(wù)器的配置中,許多用戶(hù)進(jìn)程連接到調(diào)度進(jìn)程,由調(diào)度進(jìn)程將客戶(hù)請(qǐng)求發(fā)送到一個(gè)共享服務(wù)器進(jìn)程。多線(xiàn)索服務(wù)器配置的優(yōu)點(diǎn)是降低系統(tǒng)開(kāi)銷(xiāo),增加用戶(hù)個(gè)數(shù)。

    該系統(tǒng)中需要下列類(lèi)型的進(jìn)程:

    網(wǎng)絡(luò)接收器進(jìn)程,將用戶(hù)進(jìn)程連接到調(diào)度進(jìn)程和專(zhuān)用服務(wù)器進(jìn)程。

    一個(gè)或多個(gè)調(diào)度進(jìn)程

    一個(gè)或多個(gè)共享服務(wù)器進(jìn)程

    其中網(wǎng)絡(luò)接收器進(jìn)程等待新來(lái)的連接請(qǐng)求,決定每一用戶(hù)進(jìn)程能否用共享服務(wù)器進(jìn)程。如果可以使用,接收器進(jìn)程將一調(diào)度進(jìn)程的地址返回給用戶(hù)進(jìn)程。如果用戶(hù)進(jìn)程請(qǐng)求一專(zhuān)用服務(wù)器,該接收器進(jìn)程將建立一個(gè)專(zhuān)用服務(wù)器進(jìn)程,將用戶(hù)進(jìn)程連接到該專(zhuān)用服務(wù)器進(jìn)程。對(duì)于數(shù)據(jù)庫(kù)客戶(hù)機(jī)所使用的每種網(wǎng)絡(luò)協(xié)議至少配置一個(gè)調(diào)度進(jìn)程,并啟動(dòng)它。

    當(dāng)用戶(hù)作一次調(diào)用時(shí),調(diào)度進(jìn)程將請(qǐng)求放置在sga的請(qǐng)求隊(duì)列中,由可用的共享服務(wù)器進(jìn)程獲取。共享服務(wù)器進(jìn)程為完成每一個(gè)用戶(hù)進(jìn)程的請(qǐng)求作所有必要的數(shù)據(jù)庫(kù)調(diào)用。當(dāng)服務(wù)器完成請(qǐng)求時(shí),將結(jié)果返回到調(diào)度進(jìn)程的隊(duì)列,然后由調(diào)度進(jìn)程將完成的請(qǐng)求返回給用戶(hù)進(jìn)程。

    共享服務(wù)器進(jìn)程:除共享服務(wù)器進(jìn)程不是連接指定的用戶(hù)進(jìn)程外,共享服務(wù)器進(jìn)程和專(zhuān)用服務(wù)器進(jìn)程提供相同的功能,一個(gè)共享服務(wù)器進(jìn)程在多線(xiàn)索服務(wù)器的配置中可為任何客戶(hù)請(qǐng)求服務(wù)。一個(gè)共享服務(wù)器進(jìn)程的sga不包含有與用戶(hù)相關(guān)的數(shù)據(jù),其信息可為所有共享服務(wù)器進(jìn)程存取,它僅包含棧空間、進(jìn)程指定變量。所有與會(huì)話(huà)有關(guān)的信息是包含有sga中。每一個(gè)共享服務(wù)器進(jìn)程可存取全部會(huì)話(huà)的數(shù)據(jù)空間,以致任何服務(wù)進(jìn)程可處理任何會(huì)話(huà)的請(qǐng)求。對(duì)于每一個(gè)會(huì)話(huà)的數(shù)據(jù)空間是在sga中分配空間。

    oracle根據(jù)請(qǐng)求隊(duì)列的長(zhǎng)度可動(dòng)態(tài)地調(diào)整共享服務(wù)器進(jìn)程。可建立的共享服務(wù)器進(jìn)程將請(qǐng)求放到請(qǐng)求隊(duì)列。一個(gè)用戶(hù)請(qǐng)求是對(duì)數(shù)據(jù)庫(kù)的一次程序接口調(diào)用,為sql語(yǔ)句。在sga中請(qǐng)求隊(duì)列對(duì)實(shí)例的全部調(diào)度進(jìn)程是公用的。服務(wù)器進(jìn)程為新請(qǐng)求檢查公用請(qǐng)求隊(duì)列,按先進(jìn)先出的原則從隊(duì)列檢出一個(gè)請(qǐng)求,然后為完成該請(qǐng)求對(duì)數(shù)據(jù)庫(kù)作必要的調(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é)將完成的請(qǐng)求回送給相應(yīng)的用戶(hù)進(jìn)程。

    3.oracle運(yùn)行

   1) 使用專(zhuān)用服務(wù)進(jìn)程的oracle的運(yùn)行

   在這種配置下,oracle運(yùn)行過(guò)程如下:

   (1) 數(shù)據(jù)庫(kù)服務(wù)器計(jì)算機(jī)當(dāng)前正在運(yùn)行oracle(后臺(tái)進(jìn)程)。

   (2) 在一客戶(hù)工作站運(yùn)行一個(gè)數(shù)據(jù)庫(kù)應(yīng)用(為用戶(hù)進(jìn)程),如sql*plus。客戶(hù)應(yīng)用使用sql*net driver建立對(duì)服務(wù)器的連接。

   (3) 數(shù)據(jù)庫(kù)服務(wù)器計(jì)算機(jī)當(dāng)前正運(yùn)行合適的sql*net driver,該機(jī)上接收器進(jìn)程檢出客戶(hù)數(shù)據(jù)庫(kù)應(yīng)用的連接請(qǐng)求,并在該機(jī)上為用戶(hù)進(jìn)程建立專(zhuān)用服務(wù)器進(jìn)程。

   (4) 用戶(hù)發(fā)出單個(gè)sql語(yǔ)句。

   (5) 專(zhuān)用服務(wù)器進(jìn)程接收該語(yǔ)句,在此處有兩種方法處理sql語(yǔ)句:

    如果在共享池一共享sql區(qū)中包含有相同sql語(yǔ)句時(shí),該服務(wù)器進(jìn)程可利用已存在的共享sql區(qū)執(zhí)行客戶(hù)的sql語(yǔ)句。

  ?如果在共享池中沒(méi)有一個(gè)sql區(qū)包含有相同的sql語(yǔ)句時(shí),在共享池中為該語(yǔ)句分配一新的共享sql區(qū)。

    在每一種情況,在會(huì)話(huà)的pga中建立一個(gè)專(zhuān)用sql區(qū),專(zhuān)用服務(wù)器進(jìn)程檢查用戶(hù)對(duì)查詢(xún)數(shù)據(jù)的存取權(quán)限。
 
    (6) 如果需要,服務(wù)器進(jìn)程從數(shù)據(jù)文件中檢索數(shù)據(jù)塊,或者可使用已存儲(chǔ)在實(shí)例sga中的緩沖存儲(chǔ)區(qū)的數(shù)據(jù)塊。

   (7) 服務(wù)器進(jìn)程執(zhí)行存儲(chǔ)在共享sql區(qū)中的sql語(yǔ)句。數(shù)據(jù)首先在sga中修改,由dbwr進(jìn)程在最有效時(shí)將它寫(xiě)入磁盤(pán)。lgwr進(jìn)程在在線(xiàn)日志文件中記錄用戶(hù)提交請(qǐng)求的事務(wù)。

   (8)如果請(qǐng)求成功,服務(wù)器將通過(guò)網(wǎng)絡(luò)發(fā)送一信息。如果請(qǐng)求不成功,將發(fā)送相應(yīng)的錯(cuò)誤信息。

   (9)在整個(gè)過(guò)程中,其它的后臺(tái)進(jìn)程是運(yùn)行的,同時(shí)注意需要干預(yù)的條件。另外,oracle管理其它事務(wù),防止不同事務(wù)之間請(qǐng)求同一數(shù)據(jù)的競(jìng)爭(zhēng)。

   2) 使用多線(xiàn)索服務(wù)器的oracle的運(yùn)行

   在這種配置下,oracle運(yùn)行過(guò)程如下:

   (1) 一數(shù)據(jù)庫(kù)服務(wù)器計(jì)算機(jī)運(yùn)行使用多線(xiàn)索服務(wù)器配置的oracle。

    (2) 在一客戶(hù)工作站運(yùn)行一數(shù)據(jù)庫(kù)應(yīng)用(在一用戶(hù)進(jìn)程中)。客戶(hù)應(yīng)用合適的sql*net驅(qū)動(dòng)器試圖建立到數(shù)據(jù)庫(kù)服務(wù)器計(jì)算機(jī)的連接。

    (3) 數(shù)據(jù)庫(kù)服務(wù)器計(jì)算機(jī)當(dāng)前運(yùn)行合適的sql*net驅(qū)動(dòng)器,它的網(wǎng)絡(luò)接收器進(jìn)程檢出用戶(hù)進(jìn)程的連接請(qǐng)求,并決定用戶(hù)進(jìn)程如何連接。如果用戶(hù)是使用sql*net版本2,該網(wǎng)絡(luò)接收器通知用戶(hù)進(jìn)程使用一個(gè)可用的調(diào)度進(jìn)程的地址重新連接。

    (4) 用戶(hù)發(fā)出單個(gè)sql語(yǔ)句

    (5) 調(diào)度進(jìn)程將用戶(hù)進(jìn)程的請(qǐng)求放入請(qǐng)求隊(duì)列,該隊(duì)列位于sga中,可為所有調(diào)度進(jìn)程共享。

    (6) 一個(gè)可用共享服務(wù)器檢驗(yàn)公用調(diào)度進(jìn)程請(qǐng)求隊(duì)列,并從隊(duì)列中檢出下一個(gè)sql語(yǔ)句。然后處理該sql語(yǔ)句,同前一(5),(6)和(7)。注意:會(huì)話(huà)的專(zhuān)用sql區(qū)是建立在sga中。

    (7) 一當(dāng)共享服務(wù)器進(jìn)程完成sql處理,該進(jìn)程將結(jié)果放置發(fā)入該請(qǐng)求的調(diào)度進(jìn)程的響應(yīng)隊(duì)列。

    (8) 調(diào)度進(jìn)程檢查它的響應(yīng)隊(duì)列,并將完成的請(qǐng)求送回請(qǐng)求的用戶(hù)進(jìn)程。

    4.數(shù)據(jù)庫(kù)結(jié)構(gòu)和空間管理

    一個(gè)oracle數(shù)據(jù)庫(kù)是數(shù)據(jù)的集合,被處理成一個(gè)單位。一個(gè)oracle數(shù)據(jù)庫(kù)有一個(gè)物理結(jié)構(gòu)和一個(gè)邏輯結(jié)構(gòu)。

    物理數(shù)據(jù)庫(kù)結(jié)構(gòu)(physical database structure)是由構(gòu)成數(shù)據(jù)庫(kù)的操作系統(tǒng)文件所決定。每一個(gè)oracle數(shù)據(jù)庫(kù)是由三種類(lèi)型的文件組成:數(shù)據(jù)文件、日志文件和控制文件。數(shù)據(jù)庫(kù)的文件為數(shù)據(jù)庫(kù)信息提供真正的物理存儲(chǔ)。

    邏輯數(shù)據(jù)庫(kù)結(jié)構(gòu)是用戶(hù)所涉及的數(shù)據(jù)庫(kù)結(jié)構(gòu)。一個(gè)oracle數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)由下列因素決定:

    一個(gè)或多個(gè)表空間

    數(shù)據(jù)庫(kù)模式對(duì)象(即表、視圖、索引、聚集、序列、存儲(chǔ)過(guò)程)

    邏輯存儲(chǔ)結(jié)構(gòu)如表空間(dataspace)、段(segment)和范圍將支配一個(gè)數(shù)據(jù)庫(kù)的物理空間如何使用。模式對(duì)象(schema object)用它們之間的聯(lián)系組成了一個(gè)數(shù)據(jù)庫(kù)的關(guān)系設(shè)計(jì)。

    1) 物理結(jié)構(gòu)

    (1) 數(shù)據(jù)文件

    每一個(gè)oracle數(shù)據(jù)庫(kù)有一個(gè)或多個(gè)物理的數(shù)據(jù)文件(data file)。一個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)文件包含全部數(shù)據(jù)庫(kù)數(shù)據(jù)。邏輯數(shù)據(jù)庫(kù)結(jié)構(gòu)(如表、索引)的數(shù)據(jù)物理地存儲(chǔ)在數(shù)據(jù)庫(kù)的數(shù)據(jù)文件中。數(shù)據(jù)文件有下列特征:

    一個(gè)數(shù)據(jù)文件僅與一個(gè)數(shù)據(jù)庫(kù)聯(lián)系。

   一旦建立,數(shù)據(jù)文件不能改變大小

    一個(gè)表空間(數(shù)據(jù)庫(kù)存儲(chǔ)的邏輯單位)由一個(gè)或多個(gè)數(shù)據(jù)文件組成。

    數(shù)據(jù)文件中的數(shù)據(jù)在需要時(shí)可以讀取并存儲(chǔ)在oracle內(nèi)存儲(chǔ)區(qū)中。例如:用戶(hù)要存取數(shù)據(jù)庫(kù)一表的某些數(shù)據(jù),如果請(qǐng)求信息不在數(shù)據(jù)庫(kù)的內(nèi)存存儲(chǔ)區(qū)內(nèi),則從相應(yīng)的數(shù)據(jù)文件中讀取并存儲(chǔ)在內(nèi)存。當(dāng)修改和插入新數(shù)據(jù)時(shí),不必立刻寫(xiě)入數(shù)據(jù)文件。為了減少磁盤(pán)輸出的總數(shù),提高性能,數(shù)據(jù)存儲(chǔ)在內(nèi)存,然后由oracle后臺(tái)進(jìn)程dbwr決定如何將其寫(xiě)入到相應(yīng)的數(shù)據(jù)文件。

    (2) 日志文件

    每一個(gè)數(shù)據(jù)庫(kù)有兩個(gè)或多個(gè)日志文件(redo log file)的組,每一個(gè)日志文件組用于收集數(shù)據(jù)庫(kù)日志。日志的主要功能是記錄對(duì)數(shù)據(jù)所作的修改,所以對(duì)數(shù)據(jù)庫(kù)作的全部修改是記錄在日志中。在出現(xiàn)故障時(shí),如果不能將修改數(shù)據(jù)永久地寫(xiě)入數(shù)據(jù)文件,則可利用日志得到該修改,所以從不會(huì)丟失已有操作成果。

   日志文件主要是保護(hù)數(shù)據(jù)庫(kù)以防止故障。為了防止日志文件本身的故障,oracle允許鏡象日志(mirrored redo log),以致可在不同磁盤(pán)上維護(hù)兩個(gè)或多個(gè)日志副本。

    日志文件中的信息僅在系統(tǒng)故障或介質(zhì)故障恢復(fù)數(shù)據(jù)庫(kù)時(shí)使用,這些故障阻止將數(shù)據(jù)庫(kù)數(shù)據(jù)寫(xiě)入到數(shù)據(jù)庫(kù)的數(shù)據(jù)文件。然而任何丟失的數(shù)據(jù)在下一次數(shù)據(jù)庫(kù)打開(kāi)時(shí),oracle自動(dòng)地應(yīng)用日志文件中的信息來(lái)恢復(fù)數(shù)據(jù)庫(kù)數(shù)據(jù)文件。

    (3) 控制文件

    每一oracle數(shù)據(jù)庫(kù)有一個(gè)控制文件(control file),它記錄數(shù)據(jù)庫(kù)的物理結(jié)構(gòu),包含下列信息類(lèi)型:

    數(shù)據(jù)庫(kù)名;

    數(shù)據(jù)庫(kù)數(shù)據(jù)文件和日志文件的名字和位置;

 ? 數(shù)據(jù)庫(kù)建立日期。

    為了安全起見(jiàn),允許控制文件被鏡象。

    每一次oracle數(shù)據(jù)庫(kù)的實(shí)例啟動(dòng)時(shí),它的控制文件用于標(biāo)識(shí)數(shù)據(jù)庫(kù)和日志文件,當(dāng)著手?jǐn)?shù)據(jù)庫(kù)操作時(shí)它們必須被打開(kāi)。當(dāng)數(shù)據(jù)庫(kù)的物理組成更改時(shí),oracle自動(dòng)更改該數(shù)據(jù)庫(kù)的控制文件。數(shù)據(jù)恢復(fù)時(shí),也要使用控制文件。

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

   數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)包含表空間、段、范圍(extent)、數(shù)據(jù)塊和模式對(duì)象。

   (1) 表空間

   一個(gè)數(shù)據(jù)庫(kù)劃分為一個(gè)或多個(gè)邏輯單位,該邏輯單位稱(chēng)為表空間(tablespace)。一個(gè)表空間可將相關(guān)的邏輯結(jié)構(gòu)組合在一起。dba可利用表空間作下列工作:

    控制數(shù)據(jù)庫(kù)數(shù)據(jù)的磁盤(pán)分配。

    將確定的空間份額分配給數(shù)據(jù)庫(kù)用戶(hù)。

    通過(guò)使單個(gè)表空間在線(xiàn)或離線(xiàn),控制數(shù)據(jù)的可用性。

    執(zhí)行部分?jǐn)?shù)據(jù)庫(kù)后備或恢復(fù)操作。

    為提高性能,跨越設(shè)備分配數(shù)據(jù)存儲(chǔ)。

    數(shù)據(jù)庫(kù)、表空間和數(shù)據(jù)文件之間的關(guān)系如下圖所示:

                                         database



                         dtatafile1                

                         (2mb)              datafile2          

                                            (2mb)              datafile3

                                                               (2mb)

                             driver1               driver2

    每個(gè)數(shù)據(jù)庫(kù)可邏輯劃分為一個(gè)或多個(gè)表空間

    每一個(gè)表空間是由一個(gè)或多個(gè)數(shù)據(jù)文件組成,該表空間物理地存儲(chǔ)表空間中全部邏輯結(jié)構(gòu)的數(shù)據(jù)。dba可以建立新的表空間,可為表空間增加數(shù)據(jù)文件或可刪除數(shù)據(jù)文件,設(shè)置或更改缺省的段存儲(chǔ)位置。

    每一個(gè)oracle數(shù)據(jù)庫(kù)包含有一個(gè)名為system的表空間,在數(shù)據(jù)庫(kù)建立是自動(dòng)建立。在該表空間中總包含有整個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)字典表。最小的數(shù)據(jù)庫(kù)可只需要system表空間。該表空間必須總是在線(xiàn)。表和存儲(chǔ)的pl/sql程序單元(過(guò)程、函數(shù)、包和觸發(fā)器)的全部存儲(chǔ)數(shù)據(jù)是存儲(chǔ)在system表空間中。如果這些pl/sql對(duì)象是為數(shù)據(jù)庫(kù)建的,dba在system表空間中需要規(guī)劃這些對(duì)象所需要的空間。

    表空間利用增加數(shù)據(jù)文件擴(kuò)大表空間,表空間的大小為組成該表空間的數(shù)據(jù)文件大小的和。

    dba可以使oracle數(shù)據(jù)庫(kù)中任何表空間(除system表空間外)在線(xiàn)(online)或離線(xiàn)(offline)。表空間通常是在線(xiàn),以致它所包含的數(shù)據(jù)對(duì)數(shù)據(jù)庫(kù)用戶(hù)是可用的。當(dāng)表空間為離線(xiàn)時(shí),其數(shù)據(jù)不可使用。在下列情況下,dba可以使其離線(xiàn)。

    使部分?jǐn)?shù)據(jù)不可用,而剩余的部分允許正常存取

執(zhí)行離線(xiàn)的表空間后備

    為了修改或維護(hù)一應(yīng)用,使它和它的一組表臨時(shí)不可用。

    包含有正在活動(dòng)的回滾段的表空間不能被離線(xiàn),僅當(dāng)回滾段不正在使用時(shí),該表空間才可離線(xiàn)。

    在數(shù)據(jù)字典中記錄表空間的狀態(tài),在線(xiàn)還是離線(xiàn)。如果在數(shù)據(jù)庫(kù)關(guān)閉時(shí)一表空間為離線(xiàn),那么在下次數(shù)據(jù)庫(kù)裝配和重新打開(kāi)后,它仍然保持離線(xiàn)。

    當(dāng)出現(xiàn)某些錯(cuò)誤時(shí),一個(gè)表空間可自動(dòng)地由在線(xiàn)改變?yōu)殡x線(xiàn)。通過(guò)使用多個(gè)表空間,將不同類(lèi)型的數(shù)據(jù)分開(kāi),更方便dba來(lái)管理數(shù)據(jù)庫(kù)。

    oracle數(shù)據(jù)庫(kù)中一表空間是由一個(gè)或多個(gè)物理數(shù)據(jù)文件組成,一個(gè)數(shù)據(jù)文件只可與一個(gè)表空間想聯(lián)系。當(dāng)為一表空間建立一數(shù)據(jù)文件時(shí),oracle建立該文件,分配指定的磁盤(pán)空間容量。在數(shù)據(jù)文件初時(shí)建立后,所分配的磁盤(pán)不包含任何數(shù)據(jù)。表空間可以在線(xiàn)或離線(xiàn)。在oracle中還允許單獨(dú)數(shù)據(jù)文件在線(xiàn)或離線(xiàn)。

   (2) 段、范圍和數(shù)據(jù)塊

    oracle通過(guò)段、范圍和數(shù)據(jù)塊邏輯數(shù)據(jù)結(jié)構(gòu)可更細(xì)地控制磁盤(pán)空間的使用。



    段(segment)包含表空間中一種指定類(lèi)型的邏輯存儲(chǔ)結(jié)構(gòu),是由一組范圍組成。在oracle數(shù)據(jù)庫(kù)中有幾種類(lèi)型的段:數(shù)據(jù)段、牽引段、回滾段和臨時(shí)段。

    數(shù)據(jù)段:對(duì)于每一個(gè)非聚集的表有一數(shù)據(jù)段,表的所有數(shù)據(jù)存放在該段。每一聚集有一個(gè)數(shù)據(jù)段,聚集中每一個(gè)表的數(shù)據(jù)存儲(chǔ)在該段中。

    索引段:每一個(gè)索引有一索引段,存儲(chǔ)索引數(shù)據(jù)。

    回滾段:是由dba建立,用于臨時(shí)存儲(chǔ)要撤消的信息,這些信息用于生成讀一致性數(shù)據(jù)庫(kù)信息、在數(shù)據(jù)庫(kù)恢復(fù)時(shí)使用、回滾未提交的事務(wù)。

    臨時(shí)段:當(dāng)一個(gè)sql語(yǔ)句需要臨時(shí)工作區(qū)時(shí),由oracle建立。當(dāng)語(yǔ)句執(zhí)行完畢,臨時(shí)段的范圍退回給系統(tǒng)。

   oracle對(duì)所有段的空間分配,以范圍為單位。

    范圍

    一個(gè)范圍(extent)是數(shù)據(jù)庫(kù)存儲(chǔ)空間分配的一個(gè)邏輯單位,它由連續(xù)數(shù)據(jù)塊所組成。每一個(gè)段是由一個(gè)或多個(gè)范圍組成。當(dāng)一段中間所有空間已完全使用時(shí),oracle為該段分配一個(gè)新的范圍。

    為了維護(hù)的目的,在數(shù)據(jù)庫(kù)的每一段含有段標(biāo)題塊(segment header block)說(shuō)明段的特征以及該段中的范圍目錄。

    數(shù)據(jù)塊

    數(shù)據(jù)塊(data block)是oracle管理數(shù)據(jù)文件中存儲(chǔ)空間的單位,為數(shù)據(jù)庫(kù)使用的i/o的最小單位,其大小可不同于操作系統(tǒng)的標(biāo)準(zhǔn)i/o塊大小。



    數(shù)據(jù)塊的格式:

    公用的變長(zhǎng)標(biāo)題

    表目錄

    行目錄

    未用空間

    行數(shù)據(jù)

    (3) 模式和模式對(duì)象

    一個(gè)模式(schema)為模式對(duì)象(scehma object)的一個(gè)集合,每一個(gè)數(shù)據(jù)庫(kù)用戶(hù)對(duì)應(yīng)一個(gè)模式。模式對(duì)象為直接引用數(shù)據(jù)庫(kù)數(shù)據(jù)的邏輯結(jié)構(gòu),模式對(duì)象包含如表、視圖、索引、聚集、序列、同義詞、數(shù)據(jù)庫(kù)鏈、過(guò)程和包等結(jié)構(gòu)。模式對(duì)象是邏輯數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),每一種模式對(duì)象在磁盤(pán)上沒(méi)有一個(gè)相應(yīng)文件存儲(chǔ)其信息。一個(gè)模式對(duì)象邏輯地存儲(chǔ)在數(shù)據(jù)庫(kù)的一個(gè)表空間中,每一個(gè)對(duì)象的數(shù)據(jù)物理地包含在表空間的一個(gè)或多個(gè)數(shù)據(jù)文件中。

    表

    表(table)為數(shù)據(jù)庫(kù)中數(shù)據(jù)存儲(chǔ)的基本單位,其數(shù)據(jù)按行、列存儲(chǔ)。每個(gè)表具有一表名和列的集合。每一列有一個(gè)列名、數(shù)據(jù)類(lèi)型、寬度或精度、比例。一行是對(duì)應(yīng)單個(gè)記錄的列信息的集合。

    視圖

    一個(gè)視圖(view)是由一個(gè)或多個(gè)表(或其他視圖)中的數(shù)據(jù)的一種定制的表示,是用一個(gè)查詢(xún)定義,所以可認(rèn)為是一個(gè)存儲(chǔ)的查詢(xún)(stored query)或是一個(gè)虛表(virtual table)。視圖可在使用表的許多地方使用。

    由于視圖是由表導(dǎo)出的,視圖和表存在許多類(lèi)似,視圖象表最多可定義254列。視圖可以被查詢(xún),而在修改、插入或刪除時(shí)具有一定的限制,在視圖上執(zhí)行的全部操作真正地影響視圖的基本表中的數(shù)據(jù),受到基本表的完整性約束和觸發(fā)器的限制。

    視圖與表不同,一個(gè)視圖不分配任何存儲(chǔ)空間,視圖不真正地包含數(shù)據(jù)。由查詢(xún)定義的視圖相應(yīng)于視圖引用表中的數(shù)據(jù)。視圖只在數(shù)據(jù)字典中存儲(chǔ)其定義。

    引入視圖有下列好處:

   。通過(guò)限制對(duì)表的行預(yù)定義集合的存取,為表提供附加的安全性

   。隱藏?cái)?shù)據(jù)復(fù)雜性。

   。為用戶(hù)簡(jiǎn)化命令

   。為基本表的數(shù)據(jù)提供另一種觀點(diǎn)。

   。可將應(yīng)用隔離基本表定義的修改

   。用于不用視圖無(wú)法表示的查詢(xún)。

   。可用于保存復(fù)雜查詢(xún)。

    聚集

    聚集(cluster)是存儲(chǔ)表數(shù)據(jù)的可選擇的方法。一個(gè)聚集是一組表,將具有同一公共列值的行存儲(chǔ)在一起,并且它們經(jīng)常一起使用。這些公共列構(gòu)成聚集碼。例如:emp表各dept表共享deptno列,所以emp表和dept表可聚集在一起,聚集碼的列為deptno列,該聚集將每個(gè)部門(mén)的全部職工行各該部門(mén)的行物理地存儲(chǔ)在同一數(shù)據(jù)塊中。

    索引

    索引(index)是與表和聚集相關(guān)的一種選擇結(jié)構(gòu)。索引是為提高數(shù)據(jù)檢索的性能而建立,利用它可快速地確定指定的信息。oracle索引為表數(shù)據(jù)提供快速存取路徑。索引適用于一范圍的行查詢(xún)或指定行的查詢(xún)。

    索引可建立在一表的一列或多列上,一旦建立,由oracle自動(dòng)維護(hù)和使用,對(duì)用戶(hù)是完全透明的。索引是邏輯地和物理地獨(dú)立于數(shù)據(jù),它們的建立或刪除對(duì)表沒(méi)有影響,應(yīng)用可繼續(xù)處理。索引數(shù)據(jù)的檢索性能幾乎保持常數(shù),而當(dāng)一表上存在許多索引時(shí),修改、刪除和插入操作的性能會(huì)下降。

    索引有唯一索引各非唯一索引。唯一索引保證表中沒(méi)有兩行在定義索引的列上具有重復(fù)值。oracle在唯一碼上自動(dòng)地定義唯一索引實(shí)施unique完整性約束。

    組合索引是在表的某個(gè)列上所建立的一索引。組全索引可加快select語(yǔ)句的檢索速度,在其where子句中可引用組合索引的全部或主要部分 。所以在定義中給出列的次序,將經(jīng)常存取的或選擇最多的列放在首位。

    在建立索引時(shí),將在表空間自動(dòng)地建立一索引段,索引段空間分配和保留空間的使用受下列方式控制:

    索引段范圍的分配常駐該索引段的存儲(chǔ)參數(shù)控制。

    其數(shù)據(jù)塊中未用空間可受該段的pctfree參數(shù)設(shè)置所控制。

    序列生成器

    序列生成器(sequence generator)產(chǎn)生序列號(hào)。在多用戶(hù)環(huán)境下該序列生成器特別有用,可生成各返回序列號(hào)而不需要磁盤(pán)i/o或事務(wù)封鎖。

    序列號(hào)為oracle整數(shù),最多可有38個(gè)數(shù)字。一個(gè)序列定義指出一般信息:序列的名字、上升或下降、序列號(hào)之間間距和其它信息。對(duì)所有序列的確的定義以行存儲(chǔ)在system表空間中的數(shù)據(jù)字典表中,所以所有序列定義總是可用。由引用序列號(hào)的sql語(yǔ)句使用序列號(hào),可生成一個(gè)新的序列號(hào)或使用當(dāng)前序列號(hào)。一旦在用戶(hù)會(huì)話(huà)中的sql語(yǔ)句生成一序列號(hào),該序列號(hào)僅為該會(huì)話(huà)可用。序列號(hào)生成是獨(dú)立于表,所以同一序列生成器可用于一個(gè)和多個(gè)表。所生成序列號(hào)可用于生成唯一的主碼。

    同義詞

    一個(gè)同義詞(synonym)為任何表、視圖、快照、序列、過(guò)程、函數(shù)或包的別名,其定義存儲(chǔ)在數(shù)據(jù)字典中。同義詞因安全性和方便原因而經(jīng)常使用,可用于:

    可屏蔽對(duì)象的名字及其持有者。

    為分布式數(shù)據(jù)庫(kù)的遠(yuǎn)程對(duì)象提供位置透明性。

    為用戶(hù)簡(jiǎn)化sql語(yǔ)句。

    有兩種同義詞:公用和專(zhuān)用。一個(gè)公用同義詞為命名為public特殊用戶(hù)組所持有,可為數(shù)據(jù)庫(kù)中每一個(gè)用戶(hù)所存取。一個(gè)專(zhuān)用同義詞是包含在指定用戶(hù)的模式中,僅為該用戶(hù)和授權(quán)的用戶(hù)所使用。

    雜湊

    雜湊(hashing)是存儲(chǔ)表數(shù)據(jù)一種可選擇的方法,用以改進(jìn)數(shù)據(jù)檢索的性能。要使用雜湊,就要建立雜湊聚集,將表裝入到該聚集。在驃湊聚集中的表行根據(jù)雜湊函數(shù)的結(jié)果進(jìn)行物理學(xué)存儲(chǔ)和檢索。雜湊函數(shù)用于生成一個(gè)數(shù)值的分布,該數(shù)值稱(chēng)為雜湊值,它是基于指定的聚集碼值。

    程序單元

   程序單元(program unit)是指存儲(chǔ)過(guò)程、函數(shù)和包(package)。一個(gè)過(guò)程和函數(shù),是由sql語(yǔ)句和pl/sql語(yǔ)句組合在一起,為執(zhí)行某一個(gè)任務(wù)的一個(gè)可執(zhí)行單位。一個(gè)過(guò)程或函數(shù)可被建立,在數(shù)據(jù)庫(kù)中存儲(chǔ)其編譯形式,可由用戶(hù)或數(shù)據(jù)庫(kù)應(yīng)用所執(zhí)行。過(guò)程和函數(shù)差別在函數(shù)總返回單個(gè)值給調(diào)用者,而過(guò)程沒(méi)有值返回給調(diào)用者。

    包提供相關(guān)的過(guò)程、函數(shù)、變量和其它包結(jié)構(gòu)封裝起來(lái)并存貯在一起的一種方法,允許管理者和應(yīng)用開(kāi)發(fā)者利用該方法組織如此的程序(routine),來(lái)提供更多的功能和提高性能。

    數(shù)據(jù)庫(kù)鏈

    數(shù)據(jù)庫(kù)鏈?zhǔn)且粋(gè)命名的對(duì)象,說(shuō)明從一數(shù)據(jù)庫(kù)到另一數(shù)據(jù)庫(kù)的一路徑(path)。在分布式數(shù)據(jù)庫(kù)中,對(duì)全局對(duì)象名引用時(shí),數(shù)據(jù)庫(kù)鏈隱式地使用。

    三、數(shù)據(jù)庫(kù)和實(shí)例的啟動(dòng)和關(guān)閉

    一個(gè)oracle數(shù)據(jù)庫(kù)沒(méi)有必要對(duì)所有用戶(hù)總是可用,數(shù)據(jù)庫(kù)管理員可啟動(dòng)數(shù)據(jù)庫(kù),以致它被打開(kāi)。在數(shù)據(jù)庫(kù)打開(kāi)情況下,用戶(hù)可存取數(shù)據(jù)庫(kù)中的信息。當(dāng)數(shù)據(jù)庫(kù)不使用時(shí),dba可關(guān)閉它,關(guān)閉后的數(shù)據(jù)庫(kù),用戶(hù)不能存取其信息。

    數(shù)據(jù)庫(kù)的啟動(dòng)和關(guān)閉是非常重要的管理功能,通過(guò)以internal連接到oracle的能力來(lái)保護(hù)。以internal 連接到oracle需要有下列先決條件:

    該用戶(hù)的操作系統(tǒng)賬號(hào)具有使用internal連接的操作系統(tǒng)特權(quán)。

    對(duì)internal數(shù)據(jù)庫(kù)有一口令,該用戶(hù)知道其口令。

    另外:當(dāng)用戶(hù)以internal連接時(shí),可連接到專(zhuān)用服務(wù)器,而且是安全連接。

    1. 數(shù)據(jù)庫(kù)啟動(dòng)

    啟動(dòng)數(shù)據(jù)庫(kù)并使它可用有三步操作:

    啟動(dòng)一個(gè)實(shí)例;

    裝配數(shù)據(jù)庫(kù)

    打開(kāi)數(shù)據(jù)庫(kù)

    1) 啟動(dòng)一個(gè)實(shí)例

    啟動(dòng)一實(shí)例的處理包含分配一個(gè)sga(數(shù)據(jù)庫(kù)信息使用的內(nèi)存共享區(qū))和后臺(tái)進(jìn)程的建立。實(shí)例起動(dòng)的執(zhí)行先于該實(shí)例裝配一數(shù)據(jù)庫(kù)。如果僅啟動(dòng)實(shí)例,則沒(méi)有數(shù)據(jù)庫(kù)與內(nèi)存儲(chǔ)結(jié)構(gòu)和進(jìn)程相聯(lián)系。

    2) 裝配一數(shù)據(jù)庫(kù)

    裝配數(shù)據(jù)庫(kù)是將一數(shù)據(jù)庫(kù)與已啟動(dòng)的實(shí)例相聯(lián)。當(dāng)實(shí)例安裝一數(shù)據(jù)庫(kù)之后,該數(shù)據(jù)庫(kù)保持關(guān)閉,僅dba可存取。

    3) 打開(kāi)一數(shù)據(jù)庫(kù)

    打開(kāi)一數(shù)據(jù)庫(kù)是使數(shù)據(jù)庫(kù)可以進(jìn)行正常數(shù)據(jù)庫(kù)操作的處理。當(dāng)一數(shù)據(jù)庫(kù)打開(kāi)所有用戶(hù)可連接到該數(shù)據(jù)庫(kù)用存取其信息。在數(shù)據(jù)庫(kù)打開(kāi)時(shí),在線(xiàn)數(shù)據(jù)文件和在線(xiàn)日志文件也被打開(kāi)。如果一表空間在上一次數(shù)據(jù)庫(kù)關(guān)閉時(shí)為離線(xiàn),在數(shù)據(jù)庫(kù)再次打開(kāi)時(shí),該表空間與它所相聯(lián)的數(shù)據(jù)文件還是離線(xiàn)的。

    2. 數(shù)據(jù)庫(kù)和實(shí)例的關(guān)閉

    關(guān)閉一實(shí)例以及它所連接的數(shù)據(jù)庫(kù)也有三步操作:

    1) 關(guān)閉數(shù)據(jù)庫(kù)

    數(shù)據(jù)庫(kù)停止的第一步是關(guān)閉數(shù)據(jù)庫(kù)。當(dāng)數(shù)據(jù)庫(kù)關(guān)閉后,所有在sga中的數(shù)據(jù)庫(kù)數(shù)據(jù)和恢復(fù)數(shù)據(jù)相應(yīng)地寫(xiě)入到數(shù)據(jù)文件和日志文件。在這操作之后,所有聯(lián)機(jī)數(shù)據(jù)文件和聯(lián)機(jī)的日志文件也被關(guān)閉,任何離線(xiàn)表空間中數(shù)據(jù)文件夾是已關(guān)閉的。在數(shù)據(jù)庫(kù)關(guān)閉后但還安裝時(shí),控制文件仍保持打開(kāi)。

2) 卸下數(shù)據(jù)庫(kù)

    停止數(shù)據(jù)庫(kù)的第二步是從實(shí)例卸下數(shù)據(jù)庫(kù)。在數(shù)據(jù)庫(kù)卸下后,在計(jì)算機(jī)內(nèi)存中僅保留實(shí)例。在數(shù)據(jù)庫(kù)卸下后,數(shù)據(jù)庫(kù)的控制文件也被關(guān)閉。

    3) 停止實(shí)例

    停止數(shù)據(jù)庫(kù)的最后一步是停止實(shí)例。當(dāng)實(shí)例停止后,sag是從內(nèi)存中撤消,后臺(tái)進(jìn)程被中止。

    3. 初始化參數(shù)文件

    在啟動(dòng)一個(gè)實(shí)例時(shí),oracle必須讀入一初始化參數(shù)文件(initialization parameter file),該參數(shù)文件是一個(gè)文本文件,包含有實(shí)例配置參數(shù)。這些參數(shù)置成特殊值,用于初始o(jì)racle實(shí)例的許多內(nèi)存和進(jìn)程設(shè)置,該參數(shù)文件包含:

    一個(gè)實(shí)例所啟動(dòng)的數(shù)據(jù)庫(kù)名字

    在sga中存儲(chǔ)結(jié)構(gòu)使用多少內(nèi)存;

    在填滿(mǎn)在線(xiàn)日志文件后作什么;

    數(shù)據(jù)庫(kù)控制文件的名字和位置;

    在數(shù)據(jù)庫(kù)中專(zhuān)用回滾段的名字。

    四、數(shù)據(jù)字典的使用

    數(shù)據(jù)字典是oracle數(shù)據(jù)庫(kù)的最重要的部分之一,是由一組只讀的表及其視圖所組成。它提供有關(guān)該數(shù)據(jù)庫(kù)的信息,可提供的信息如下:

    oracle用戶(hù)的名字;

    每一個(gè)用戶(hù)所授的特權(quán)和角色;

    模式對(duì)象的名字(表、視圖、快照、索引、聚集、同義詞、序列、過(guò)程、函數(shù)、包及觸發(fā)器等);

    關(guān)于完整性約束的信息;

    列的缺省值;

    有關(guān)數(shù)據(jù)庫(kù)中對(duì)象的空間分布及當(dāng)前使用情況;

    審計(jì)信息(如誰(shuí)存取或修改各種對(duì)象);

    其它一般的數(shù)據(jù)庫(kù)信息。

    可用sql存取數(shù)據(jù)字典,由于數(shù)據(jù)字典為只讀,允許查詢(xún)。

    1. 數(shù)據(jù)字典的結(jié)構(gòu)

    數(shù)據(jù)庫(kù)數(shù)據(jù)字典是由基本表和用戶(hù)可存取的視圖組成。

    基本表:數(shù)據(jù)字典的基礎(chǔ)是一組基本表組成,存儲(chǔ)相關(guān)的數(shù)據(jù)庫(kù)的信息。這些信息僅由oracle讀和寫(xiě),它們很少被oracle用戶(hù)直接存取。

    用戶(hù)可存取視圖:數(shù)據(jù)字典包含用戶(hù)可存取視圖,可概括地方便地顯示數(shù)據(jù)字典的基本表的信息。視圖將基本表中信息解碼成可用信息。

    2. 數(shù)據(jù)字典的使用

    當(dāng)數(shù)據(jù)庫(kù)打開(kāi)時(shí),數(shù)據(jù)字典總是可用,它駐留在system表空間中。數(shù)據(jù)字典包含視圖集,在許多情況下,每一視圖集有三種視圖包含有類(lèi)似信息,彼此以 前綴 相區(qū)別,前綴 user、all和dba。

  ?前綴為user的視圖,為用 視圖,是在用戶(hù)的模式內(nèi)。

  ?前綴為all的視圖,為擴(kuò)展的用戶(hù)視圖(為用戶(hù)可存取的視圖)。

  ?前綴為dba的視圖為dba的視圖(為全部用戶(hù)可存取的視圖)。

    在數(shù)據(jù)庫(kù)中oracle還維護(hù)了一組虛表記錄當(dāng)前數(shù)據(jù)庫(kù)的活動(dòng),這些表稱(chēng)為動(dòng)態(tài)性能表。動(dòng)態(tài)性能表不是真正的表,許多用戶(hù)不能存取,dba可查詢(xún)這些表,可以建立視圖,給其它用戶(hù)授予存取視圖權(quán)。

    五、事務(wù)管理

    1. 事務(wù)

    一個(gè)事務(wù)為工作的一個(gè)邏輯單位,由一個(gè)或多個(gè)sql語(yǔ)句組成。一個(gè)事務(wù)是一個(gè)原子單位,構(gòu)成事務(wù)的全部sql語(yǔ)句的結(jié)果可被全部提交或者全部回滾。一個(gè)事務(wù)由第一個(gè)可執(zhí)行sql語(yǔ)句開(kāi)始,以提交或回滾結(jié)束,可以是顯式的,也可是隱式的(執(zhí)行ddl語(yǔ)句)。

    在執(zhí)行一個(gè)sql語(yǔ)句出現(xiàn)錯(cuò)誤時(shí),該語(yǔ)句所有影響被回滾,好像該語(yǔ)句沒(méi)有被執(zhí)行一樣,但它不會(huì)引起當(dāng)前事務(wù)先前的工作的丟失。

    2. oracle的事務(wù)管理

    在oracle中一個(gè)事務(wù)是由一個(gè)可執(zhí)行的sql語(yǔ)句開(kāi)始,一個(gè)可執(zhí)行sql語(yǔ)句產(chǎn)生對(duì)實(shí)例的調(diào)用。在事務(wù)開(kāi)始時(shí),被賦給一個(gè)可用回滾段,記錄該事務(wù)的回滾項(xiàng)。一個(gè)事務(wù)以下列任何一個(gè)出現(xiàn)而結(jié)束。

    當(dāng)commit或rollback(沒(méi)有savepoint子句)語(yǔ)句發(fā)出。

    一個(gè)ddl語(yǔ)句被執(zhí)行。在ddl語(yǔ)句執(zhí)行前、后都隱式地提交。

    用戶(hù)撤消對(duì)oracle的連接(當(dāng)前事務(wù)提交)。

    用戶(hù)進(jìn)程異常中止(當(dāng)前事務(wù)回滾)。

    1) 提交事務(wù)

    提交一事務(wù),即將在事務(wù)中由sql語(yǔ)句所執(zhí)行的改變永久化。在提交前,oracle已有下列情況:

    在sga的回滾段緩沖區(qū)已生成回滾段記錄,回滾信息包含有所修改值的老值。

    在sga的日志緩沖區(qū)已生成日志項(xiàng)。這些改變?cè)谑聞?wù)提交前可進(jìn)入磁盤(pán)。

    對(duì)sga的數(shù)據(jù)庫(kù)緩沖區(qū)已作修改,這些修改在事務(wù)真正提交之前可進(jìn)入磁盤(pán)。

    在事務(wù)提交之后,有下列情況:

    對(duì)于與回滾段相關(guān)的內(nèi)部事務(wù)表記錄提交事務(wù),并賦給一個(gè)相應(yīng)的唯一系統(tǒng)修改號(hào)(scn),記錄在表中。

    在sga的日志緩沖區(qū)中日志項(xiàng)由lgwr進(jìn)程寫(xiě)入到在線(xiàn)日志文件, 這是構(gòu)成提交事務(wù)的原子事務(wù)。

    在行上和表上的封鎖被釋放。

    該事務(wù)標(biāo)志為完成 。

    注意:對(duì)于提交事務(wù)的數(shù)據(jù)修改不必由dbwr后臺(tái)進(jìn)程立即寫(xiě)入數(shù)據(jù)文件,可繼續(xù)存儲(chǔ)在sga的數(shù)據(jù)庫(kù)緩沖區(qū)中,在最有效時(shí)將其寫(xiě)入數(shù)據(jù)文件。

    2) 回滾事務(wù)

    回滾事務(wù)的含義是撤消未提交事務(wù)中的sql語(yǔ)句所作的對(duì)數(shù)據(jù)修改。oralce允許撤消未提交的整個(gè)事務(wù),也允許撤消部分。

    在回滾整個(gè)事務(wù)(沒(méi)有引用保留點(diǎn))時(shí),有下列情況:

    在事務(wù)中所有sql語(yǔ)句作的全部修改,利用相應(yīng)的回滾段被撤消。

    所有數(shù)據(jù)的事務(wù)封鎖被釋放。

    事務(wù)結(jié)束。

    當(dāng)事務(wù)回滾到一保留點(diǎn)(具有savepoint)時(shí),有下列情況:

    僅在該保留點(diǎn)之后執(zhí)行的語(yǔ)句被撤消。

    該指定的保留點(diǎn)仍然被保留,該保留點(diǎn)之后所建立的保留點(diǎn)被刪除。

    自該保留點(diǎn)之后所獲取的全部表封鎖和行封鎖被釋放,但指定的保留點(diǎn)以前所獲取的全部數(shù)據(jù)封鎖繼續(xù)保持。

   該事務(wù)仍可繼續(xù)。

    3) 保留點(diǎn)

    保留點(diǎn)(savepoint)是在一事務(wù)范圍內(nèi)的中間標(biāo)志,經(jīng)常用于將一個(gè)長(zhǎng)的事務(wù)劃分為小的部分。保留點(diǎn)可標(biāo)志長(zhǎng)事務(wù)中的任何點(diǎn),允許可回滾該點(diǎn)之后的工作。在應(yīng)用程序中經(jīng)常使用保留點(diǎn);例如一過(guò)程包含幾個(gè)函數(shù),在每個(gè)函數(shù)前可建立一個(gè)保留點(diǎn),如果函數(shù)失敗,很容易返回到每一個(gè)函數(shù)開(kāi)始的情況。在回滾到一個(gè)保留點(diǎn)之后,該保持點(diǎn)之后所獲得的數(shù)據(jù)封鎖被釋放。

    六、數(shù)據(jù)庫(kù)觸發(fā)器

    1. 觸發(fā)器介紹

    數(shù)據(jù)庫(kù)觸發(fā)器(database trigger)是存儲(chǔ)在數(shù)據(jù)庫(kù)中的過(guò)程,當(dāng)表被修改時(shí)它隱式地被激發(fā)(執(zhí)行)。在oracle中允許在對(duì)表發(fā)出insert、update或delete語(yǔ)句時(shí)隱式地執(zhí)行所定義的過(guò)程,這些過(guò)程稱(chēng)為數(shù)據(jù)庫(kù)觸發(fā)器。觸發(fā)器存儲(chǔ)在數(shù)據(jù)庫(kù)中,并與所相關(guān)表分別存儲(chǔ)。觸發(fā)器僅可在表上定義。在許多情況中觸發(fā)器用于提供很高級(jí)的專(zhuān)用數(shù)據(jù)庫(kù)管理系統(tǒng),來(lái)補(bǔ)充oracle的標(biāo)準(zhǔn)功能。觸發(fā)器一般用于:

    自動(dòng)地生成導(dǎo)出的列值;

    防止無(wú)效的事務(wù);

    實(shí)施更復(fù)雜的安全性檢查

    在分布式數(shù)據(jù)庫(kù)中實(shí)施跨越結(jié)點(diǎn)的引用完整性;

    實(shí)施復(fù)雜的事務(wù)規(guī)則;

    提供透明事件日志;

    提供高級(jí)的審計(jì);

    維護(hù)同步表復(fù)制;

    收集關(guān)于存取表的統(tǒng)計(jì)。

    注意:數(shù)據(jù)庫(kù)觸發(fā)器與sql*forms觸發(fā)器之間的差別。數(shù)據(jù)庫(kù)觸發(fā)器是定義在表上,存儲(chǔ)在數(shù)據(jù)庫(kù)中,當(dāng)對(duì)表執(zhí)行insert、update或delete語(yǔ)句時(shí)被激發(fā),不管是誰(shuí)或哪一應(yīng)用發(fā)出。而sql*forms觸發(fā)器是sql*form應(yīng)用的部分,僅當(dāng)在指定sql*forms應(yīng)用中執(zhí)行一個(gè)指定觸發(fā)器點(diǎn)時(shí)才被激發(fā)。

    觸發(fā)器和說(shuō)明性完整性約束都可用于約束數(shù)據(jù)的輸入,但它們之間有一定區(qū)別:

    說(shuō)明性完整性約束是關(guān)于數(shù)據(jù)庫(kù)總是為“真”的語(yǔ)句。一個(gè)完整性約束應(yīng)用于表中已有數(shù)據(jù)和操縱表的任何語(yǔ)句。

    而觸發(fā)器約束事務(wù)不可應(yīng)用于在定義觸發(fā)器前已裝入的數(shù)據(jù),所以它不能保證表中全部數(shù)據(jù)服從該觸發(fā)器的規(guī)則。觸發(fā)器實(shí)施瞬時(shí)約束,即在數(shù)據(jù)改變時(shí)實(shí)施一約束。

    2. 觸發(fā)器的組成:

    一個(gè)觸發(fā)器有三個(gè)基本部件:觸發(fā)事件或語(yǔ)句、觸發(fā)器的限制、觸發(fā)器動(dòng)作。

    觸發(fā)事件或語(yǔ)句:為引起觸發(fā)器激發(fā)的sql語(yǔ)句,是對(duì)指定表insert、update或delete語(yǔ)句。

    觸發(fā)器限制:為一布爾表達(dá)式,當(dāng)觸發(fā)器激發(fā)時(shí)該條件必須為true。觸發(fā)器的限制是用when子句來(lái)指定。

 觸發(fā)器的動(dòng)作:為一個(gè)pl/sql塊(過(guò)程),由sql語(yǔ)句和pl/sql語(yǔ)句組成。當(dāng)觸發(fā)語(yǔ)句發(fā)出,觸發(fā)器的限制計(jì)算得true時(shí),它被執(zhí)行。在觸發(fā)器動(dòng)作的語(yǔ)句中,可使用觸發(fā)器的處理的當(dāng)前行的列值(新值、老值),使用形式為:

    new.列名                         引用新值

    ole.列名                         引用老值

    在定義觸發(fā)器時(shí)可指定觸發(fā)器動(dòng)作執(zhí)行次數(shù):受觸發(fā)語(yǔ)句影響每一行執(zhí)行一次或是對(duì)觸發(fā)語(yǔ)句執(zhí)行一次。

    對(duì)每一觸發(fā)語(yǔ)句可有四種類(lèi)型觸發(fā)器:

    行觸發(fā)器:對(duì)受觸發(fā)語(yǔ)句所影響的每一行,行觸發(fā)器激發(fā)一次。

    語(yǔ)句觸發(fā)器:該類(lèi)型觸發(fā)器對(duì)觸發(fā)語(yǔ)句執(zhí)行一次,不管其受影響行數(shù)。

    定義觸發(fā)器可以指定觸發(fā)時(shí)間,指定激發(fā)器動(dòng)作的執(zhí)行相對(duì)于觸發(fā)語(yǔ)句執(zhí)行之后或之前。

    before觸發(fā)器:該觸發(fā)器執(zhí)行觸發(fā)器動(dòng)作是在觸發(fā)語(yǔ)句執(zhí)行之前。

    after觸發(fā)器:該觸發(fā)器執(zhí)行觸發(fā)器動(dòng)作是在觸發(fā)語(yǔ)句執(zhí)行之后。

    一個(gè)觸發(fā)器可處于兩種不同的方式:使能觸發(fā)器和使不能觸發(fā)器。

    使能觸發(fā)器:只要當(dāng)觸發(fā)語(yǔ)句發(fā)出,觸發(fā)器限制計(jì)算為true,這種類(lèi)型的觸發(fā)器執(zhí)行其觸發(fā)動(dòng)作。

    使不能觸發(fā)器:這種觸發(fā)器即使其觸發(fā)語(yǔ)句被發(fā)出,觸發(fā)器限制計(jì)算為true,也不執(zhí)行觸發(fā)器動(dòng)作。

    觸發(fā)器的源代碼存儲(chǔ)在數(shù)據(jù)庫(kù)中,在第一次執(zhí)行時(shí),觸發(fā)器的源代碼被編譯,存儲(chǔ)在共享池中。如果觸發(fā)器從共享池中擠了,再使用時(shí)必須再重新編譯。

    七、分布處理和分布式數(shù)據(jù)庫(kù)

    1. 簡(jiǎn)介

    一個(gè)分布式數(shù)據(jù)庫(kù)在用戶(hù)面前為單個(gè)邏輯數(shù)據(jù)庫(kù),但實(shí)際上是由存儲(chǔ)在多臺(tái)計(jì)算機(jī)上的一組數(shù)據(jù)庫(kù)組成。在幾臺(tái)計(jì)算機(jī) 上的數(shù)據(jù)庫(kù)通過(guò)網(wǎng)絡(luò)可同時(shí)修改和存取,每一數(shù)據(jù)庫(kù)受它的局部的dbms控制。分布式數(shù)據(jù)庫(kù)中每一個(gè)數(shù)據(jù)庫(kù)服務(wù)器合作地維護(hù)全局?jǐn)?shù)據(jù)庫(kù)的一致性。

    在系統(tǒng)中的每一臺(tái)計(jì)算機(jī)稱(chēng)為結(jié)點(diǎn)。如果一結(jié)點(diǎn)具有管理數(shù)據(jù)庫(kù) 軟件,該結(jié)點(diǎn)稱(chēng)為數(shù)據(jù)庫(kù)服務(wù)器。如果一個(gè)結(jié)點(diǎn)為請(qǐng)求服務(wù)器的信息的一應(yīng)用,該結(jié)點(diǎn)稱(chēng)為客戶(hù)。在oracle客戶(hù),執(zhí)行數(shù)據(jù)庫(kù)應(yīng)用,可存取數(shù)據(jù)信息和與用戶(hù)交互。在服務(wù)器,執(zhí)行oracle軟件,處理對(duì)oracle數(shù)據(jù)庫(kù)并發(fā)、共享數(shù)據(jù)存取。oracle允許上述兩部分在同一臺(tái)計(jì)算機(jī)上,但當(dāng)客戶(hù)部分和服務(wù)器部分是由網(wǎng)連接的不同計(jì)算機(jī)上時(shí),更有效。

    分布處理是由多臺(tái)處理機(jī)分擔(dān)單個(gè)任務(wù)的處理。在oracle數(shù)據(jù)庫(kù)系統(tǒng)中分布處理的例子如:

    客戶(hù)和服務(wù)器是位于網(wǎng)絡(luò)連接的不同計(jì)算機(jī)上。

    單臺(tái)計(jì)算機(jī)上有多個(gè)處理器,不同處理器分別執(zhí)行客戶(hù)應(yīng)用。

    sql*net是oracle網(wǎng)絡(luò)接口,允許運(yùn)行在網(wǎng)絡(luò)工作站的oracle工具和服務(wù)器上,可存取、修改、共享和存儲(chǔ)在其它服務(wù)器上的數(shù)據(jù)。saql*net可被認(rèn)為是網(wǎng)絡(luò)通信的程序接口。sql*net利用通信協(xié)議和應(yīng)用程序接口(api)為oarcle提供一個(gè)分布式數(shù)據(jù)庫(kù)和分布處理。

    sql*net驅(qū)動(dòng)器為在數(shù)據(jù)庫(kù)服務(wù)器上運(yùn)行的oracle進(jìn)程與oracle工具的用戶(hù)進(jìn)程之間提供一個(gè)接口。

    參與分布式數(shù)據(jù)庫(kù)的每一服務(wù)器是分別地獨(dú)立地管理數(shù)據(jù)庫(kù),好 像每一數(shù)據(jù)庫(kù)不是網(wǎng)絡(luò)化的數(shù)據(jù)庫(kù)。每一個(gè)數(shù)據(jù)庫(kù)獨(dú)立地被管理,稱(chēng)為場(chǎng)地自治性。場(chǎng)地自治性有下列好處:

    系統(tǒng)的結(jié)點(diǎn)可反映公司的邏輯組織。

    由局部數(shù)據(jù)庫(kù)管理員控制局部數(shù)據(jù),這樣每一個(gè)數(shù)據(jù)庫(kù)管理員責(zé)任域要小一些,可更好管理。

    只要一個(gè)數(shù)據(jù)庫(kù)和網(wǎng)絡(luò)是可用,那么全局?jǐn)?shù)據(jù)庫(kù)可部分可用。不會(huì)因一個(gè)數(shù)據(jù)庫(kù)的故障而停止全部操作或引起性能瓶頸。

    故障恢復(fù)通常在單個(gè)結(jié)點(diǎn)上進(jìn)行。

    每個(gè)局部數(shù)據(jù)庫(kù)存在一個(gè)數(shù)據(jù)字典。

    結(jié)點(diǎn)可獨(dú)立地升級(jí)軟件。

    可從分布式數(shù)據(jù)庫(kù)的所有結(jié)點(diǎn)存取模式對(duì)象,因此正像非分布的局部的dbms,必須提供一種機(jī)制,可在局部數(shù)據(jù)庫(kù)中引用一個(gè)對(duì)象。分布式dbms必須提供一種命名模式,以致分布式數(shù)據(jù)庫(kù)中一個(gè)對(duì)象可在應(yīng)用中唯一標(biāo)識(shí)和引用。一般彩在層次結(jié)構(gòu)的每一層實(shí)施唯一性。分布式dvms簡(jiǎn)單地?cái)U(kuò)充層次命名模型,實(shí)施在網(wǎng)絡(luò)上唯一數(shù)據(jù)庫(kù)命名。因此一個(gè)對(duì)象的全局對(duì)象名保證在分布式數(shù)據(jù)庫(kù)內(nèi)是唯一。

    oracle允許在sql語(yǔ)句中使用佤對(duì)象名引用分布式數(shù)據(jù)庫(kù)中的模式對(duì)象(表、視圖和過(guò)程)。在oracle中,一個(gè)模式對(duì)象的全局名由三部分組成:包含對(duì)象的模式名、對(duì)象名、數(shù)據(jù)庫(kù)名、其形式如:

    

    其中scott為模式名,emp為表名,@符號(hào)之后為數(shù)據(jù)庫(kù)名.

    一個(gè)遠(yuǎn)程查詢(xún)?yōu)橐徊樵?xún),是從一個(gè)或多個(gè)遠(yuǎn)程表中選擇信息,這些表駐留在同一個(gè)遠(yuǎn)程結(jié)點(diǎn).

    一個(gè)分布式查詢(xún)可從兩個(gè)或多個(gè)結(jié)點(diǎn)檢索數(shù)據(jù).一個(gè)分布式更新可修改兩個(gè)或兩個(gè)以上結(jié)點(diǎn)的數(shù)據(jù).

    一個(gè)遠(yuǎn)程事務(wù)為一個(gè)事務(wù),包含一人或多個(gè)遠(yuǎn)程語(yǔ)句,它所引用的全部是在同一個(gè)遠(yuǎn)程結(jié)點(diǎn)上.一個(gè)分布式事務(wù)中一個(gè)事務(wù),包含一個(gè)或多個(gè)語(yǔ)句修改分布式數(shù)據(jù)庫(kù)的兩個(gè)或多個(gè)不同結(jié)點(diǎn)的數(shù)據(jù).

    在分布式數(shù)據(jù)庫(kù)中,事務(wù)控制必須在網(wǎng)絡(luò)上直轄市,保證數(shù)據(jù)一致性.兩階段提交機(jī)制保證參與分布式事務(wù)的全部數(shù)據(jù)庫(kù)服務(wù)器是全部提交或全部回滾事務(wù)中的語(yǔ)句.

    oracle分布式數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)可由oracle數(shù)據(jù)庫(kù)管理員為終端用戶(hù)和應(yīng)用提供位置透明性,利用視圖、同義詞、過(guò)程可提供oracle分布式數(shù)據(jù)庫(kù)系統(tǒng)中的位置透明性.

    oracle允許在select(查詢(xún))、insert、update、delete、select…for update和lock table語(yǔ)句中引用遠(yuǎn)程數(shù)據(jù)。對(duì)于查詢(xún),包含有連接、聚合、子查詢(xún)和select …for  update,可引用本地的、遠(yuǎn)程的表和視圖。對(duì)于update、insert、delete和lock table語(yǔ)句可引用本地的和遠(yuǎn)程的表。注意在引用long和long raw列、序列、修改表和封鎖表時(shí),必須位于同一個(gè)結(jié)點(diǎn)。oracle不允許作遠(yuǎn)程ddl語(yǔ)句。

    在單場(chǎng)地或分布式數(shù)據(jù)庫(kù)中,所有事務(wù)都是用commit或rollback語(yǔ)句中止。oracle提供兩種機(jī)制實(shí)現(xiàn)分布式數(shù)據(jù)庫(kù)中表重復(fù)的透明性:表快照提供異步的表重復(fù);觸發(fā)器實(shí)現(xiàn)同步的表的重復(fù)。在兩種情況下,都實(shí)現(xiàn)了對(duì)表重復(fù)的透明性。

    2. 分布式數(shù)據(jù)庫(kù)全局名與數(shù)據(jù)庫(kù)鏈

    1) 分布式數(shù)據(jù)庫(kù)全局名:每一個(gè)數(shù)據(jù)庫(kù)有一個(gè)唯一的全局名,由兩部分組成:數(shù)據(jù)庫(kù)名(小于等于8字符)和網(wǎng)絡(luò)域。全局?jǐn)?shù)據(jù)庫(kù)名的網(wǎng)絡(luò)域成分必須服從標(biāo)準(zhǔn)互聯(lián)網(wǎng)規(guī)范。域名中的層次 由符號(hào)“.”分開(kāi),域名的次序由葉至根,從左至右。

    2) 數(shù)據(jù)庫(kù)鏈:為對(duì)過(guò)程數(shù)據(jù)庫(kù)定義的一路徑。數(shù)據(jù)庫(kù)鏈對(duì)分布式數(shù)據(jù)庫(kù)的用戶(hù)是透明的,數(shù)據(jù)庫(kù)鏈的名字與鏈所指向的數(shù)據(jù)庫(kù)的全局名相同。其由二部分組成:遠(yuǎn)程賬號(hào)和數(shù)據(jù)庫(kù)串。例建立數(shù)據(jù)庫(kù)鏈的形式:

    creat public datebase link sale。division3。acme。com

    connect to guest identified by password

    using‘db串’;
 
    其中:sales。divisin3。acme。com為定義的鏈名;guest/password 為遠(yuǎn)程數(shù)據(jù)庫(kù)的用戶(hù)賬號(hào)和口令;db串用于遠(yuǎn)程連接。由賬號(hào)和db串構(gòu)成完全路徑。如果只有一個(gè)則為部分路徑。

    有三種數(shù)據(jù)庫(kù)鏈可用于決定用戶(hù)對(duì)全部對(duì)象名的引用:

    專(zhuān)用數(shù)據(jù)庫(kù)鏈:為一指定用戶(hù)建立。專(zhuān)用數(shù)據(jù)庫(kù)鏈僅鏈的主人可使用。在sql語(yǔ)句中用于指定一全局對(duì)象名或者在持有者的視圖過(guò)程定義中使用。

    公用數(shù)據(jù)庫(kù)鏈:為特殊的用戶(hù)組public建立。公用數(shù)據(jù)庫(kù)鏈可為任何用戶(hù)使用,在sql語(yǔ)句中用于指定一個(gè)全局對(duì)象名或?qū)ο蠖x。

    網(wǎng)絡(luò)數(shù)據(jù)鏈:由網(wǎng)絡(luò)域服務(wù)器建立和管理,可為網(wǎng)絡(luò)中的任何數(shù)據(jù)庫(kù)的任何用戶(hù)使用,可在sql語(yǔ)句中指定全局對(duì)象名或?qū)ο蠖x中使用。注意:當(dāng)前網(wǎng)絡(luò)域服務(wù)器對(duì)oracle不能用,所以網(wǎng)絡(luò)數(shù)據(jù)庫(kù)鏈不可用。

    3. 表快照

    oracle的表快照特征允許一個(gè)主表在分布式數(shù)據(jù)庫(kù)的其它結(jié)點(diǎn)進(jìn)行復(fù)制。只允許修改主表,而復(fù)制只可讀。主表達(dá)式每一個(gè)復(fù)制稱(chēng)為一個(gè)快照。快照異步的刷新,反映主表的一個(gè)最近事務(wù)一致?tīng)顟B(tài)。

    一個(gè)快照可為表的完全拷貝或者為表的一個(gè)子集,由引用一個(gè)或多個(gè)主表、視圖或其它快照的分布式查詢(xún)所定義。包含主表的數(shù)據(jù)庫(kù)稱(chēng)為主數(shù)據(jù)庫(kù)。

    快照有簡(jiǎn)單快照和復(fù)雜快照。簡(jiǎn)單快照的每行是基于單個(gè)遠(yuǎn)程表中的一行。所以定義簡(jiǎn)單快照的查詢(xún)中不能有g(shù)roub by或connect by子句,或子查詢(xún)、連接或集合操作。如果在快照定義的查詢(xún)中包含有上述子句或操作,這種快照稱(chēng)為復(fù)雜快照。

    在快照建立時(shí),oracle在快照的模式中建立幾種內(nèi)部對(duì)象:

    在快照結(jié)點(diǎn),oracle建立一基表用于存儲(chǔ)由快照定義的查詢(xún)所檢索的行,然后為該表建立一個(gè)只讀的視圖,并為遠(yuǎn)程主表建立一視圖,該視圖用于新快照。

    一個(gè)快照周期地被刷新,反映它的主表的當(dāng)前情況。為了刷新一快照,快照定義查詢(xún)是被發(fā)出,其查詢(xún)結(jié)果想在存儲(chǔ)在快照中,代替以前的快照數(shù)據(jù)。

    當(dāng)快照為簡(jiǎn)單快照時(shí),可以由快照日志來(lái)刷新,這樣可加快刷新處理。快照日志是在主表數(shù)據(jù)庫(kù)中的一表,與主表相關(guān)。oracle使用快照日志跟蹤主表中已修改的行。當(dāng)基于主表的簡(jiǎn)單快照刷新時(shí),僅需要快照日志的相應(yīng)行來(lái)刷新快照,這種刷新稱(chēng)為快速刷新。

主站蜘蛛池模板: 欧美牲交作爱在线 | 男人狂桶女人出白浆免费视频 | 国产免费爽爽视频 | 亚洲在线日韩 | 激情综合亚洲色婷婷五月 | 激情国产一区 | 国产精品岛国久久久久久久久红粉 | 一本岛视频在线观看 | 美女日p | 欧美视频自拍 | 久草成人在线观看 | 成年在线网站免费观看无广告 | 国产理论在线播放 | 永久免费av在线观看 | 男人操女人视频免费看 | 东京亚洲区卡不 | 欧美巨大XXXX做受中文字幕 | 色99热久久偷拍 | 日本高清免费一本视频100禁 | 成年女人免费又黄又爽视频 | 久久久噜噜噜久久熟女AA片 | 五十路六十路老熟妇a片 | 边啃奶头边躁狠狠躁玩爽在水里面 | 久久久短视频 | 国产一精品一aⅴ一免费 | 国产精品人妻99一区二区 | 国产亚洲欧美另类久久 | 天天爽影院一区二区在线影院 | 福利姬国产在线观看免费 | 成人性视频免费看的鲁片 | 日韩黄色网页 | 视频一区二区精品 | 很黄很爽的视频网站 | 日韩人妻无码系列专区 | 国产高清视频一区二区在线观看 | 欧美人与拘一级a毛片 | 中文字幕日韩一区二区 | 在线观看一区 | 九九99靖品免费 | 亚洲成人国产综合 | 精品手机在线视频 |