版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Oracle從入門到精通明日科技
Oracle,西方人認(rèn)為有“神諭、預(yù)言”之意,中國(guó)人則譯作“甲骨文”,是當(dāng)今世界最強(qiáng)大的數(shù)據(jù)庫(kù)軟件。所有這一切要從IBM的一篇論文談起,1970年的6月,IBM公司的研究員埃德加?考特發(fā)表了一篇著名的論文——《大型共享數(shù)據(jù)庫(kù)數(shù)據(jù)的關(guān)系模型》,這可以稱之為數(shù)據(jù)庫(kù)發(fā)展史上的一個(gè)轉(zhuǎn)折點(diǎn)。在當(dāng)時(shí)還是層次模型和網(wǎng)狀模型的數(shù)據(jù)庫(kù)產(chǎn)品占據(jù)市場(chǎng)主要位置的情況下,從這篇論文開始,拉開了關(guān)系型數(shù)據(jù)庫(kù)軟件革命的序幕。1977年6月,LarryEllison與BobMiner和EdOates在硅谷共同創(chuàng)辦了一家名為“軟件開發(fā)實(shí)驗(yàn)室”的軟件公司(Oracle公司的前身,英文縮寫SDL)。在Oates看到了埃德加?考特的那篇著名的論文連同其他幾篇相關(guān)的文章之后,非常興奮,他找來(lái)Ellison和Miner共同閱讀,Ellison和Miner也預(yù)見(jiàn)到關(guān)系型數(shù)據(jù)庫(kù)軟件的巨大潛力。于是,這3個(gè)數(shù)據(jù)庫(kù)界的巨人開始共同籌劃構(gòu)建可商用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(英文縮寫RDBMS),并把這種商用數(shù)據(jù)庫(kù)產(chǎn)品命名為Oracle。因?yàn)樗麄兿嘈?,Oracle(字典里的解釋有“神諭、預(yù)言”之意)是一切智慧的源泉,這樣當(dāng)今世界最強(qiáng)大、最優(yōu)秀的Oracle數(shù)據(jù)庫(kù)誕生了。簡(jiǎn)述Oracle的發(fā)展史關(guān)系型數(shù)據(jù)庫(kù)的基本理論本講大綱:1、關(guān)系型數(shù)據(jù)庫(kù)與數(shù)據(jù)庫(kù)管理系統(tǒng)3、關(guān)系型數(shù)據(jù)庫(kù)的設(shè)計(jì)范式2、關(guān)系型數(shù)據(jù)庫(kù)的E-R模型關(guān)系型數(shù)據(jù)庫(kù)與數(shù)據(jù)庫(kù)管理系統(tǒng)在關(guān)系數(shù)據(jù)模型中,關(guān)系可以看成由行和列交叉組成的二維表格,表中一行稱為一個(gè)元組,可以用來(lái)標(biāo)識(shí)實(shí)體集中的一個(gè)實(shí)體。表中的列稱為屬性,給每一列起一個(gè)名稱即為屬性名,表中的屬性名不能相同。列的取值范圍稱為域,同列具有相同的域,不同的列也可以有相同的域。表中任意兩行(元組)不能相同。能唯一標(biāo)識(shí)表中不同行的屬性或?qū)傩越M(即多個(gè)屬性的組合)稱為主鍵或復(fù)合主鍵。1.實(shí)體和屬性實(shí)體是一個(gè)數(shù)據(jù)對(duì)象,是指客觀存在并可以相互區(qū)分的事物,如一個(gè)教師、一個(gè)學(xué)生、一個(gè)雇員等等。每個(gè)實(shí)體由一組屬性來(lái)表示,如,一個(gè)具體的學(xué)生擁有學(xué)號(hào)、姓名、性別和班級(jí)等屬性,其中學(xué)號(hào)可以唯一標(biāo)識(shí)具體某個(gè)學(xué)生這個(gè)實(shí)體。具有相同屬性的實(shí)體組合在一起就構(gòu)成實(shí)體集—即實(shí)體集是實(shí)體的集合,而實(shí)體則是實(shí)體集中的某一個(gè)特例,例如,王同學(xué)這個(gè)實(shí)體就是學(xué)生實(shí)體集中的一個(gè)特例。2.聯(lián)系在實(shí)際應(yīng)用中,實(shí)體之間是存在聯(lián)系的,這種聯(lián)系必須在邏輯模型中表現(xiàn)出來(lái)。在E-R模型中,聯(lián)系用菱形表示,菱形框內(nèi)寫明“聯(lián)系名”,并用“連接線”將有關(guān)實(shí)體連接起來(lái),同時(shí)在“連接線”的旁邊標(biāo)注上聯(lián)系的類型,兩個(gè)實(shí)體之間的聯(lián)系類型可以分為3類。關(guān)系型數(shù)據(jù)庫(kù)的E-R模型1.增強(qiáng)信息生命周期管理和存儲(chǔ)管理能力2.全面回憶數(shù)據(jù)變化3.最大限度提高信息可用性4.Oracle快速文件5.更快的XML6.透明的加密7.嵌入式OLAP行列8.連接匯合和查詢結(jié)果高速緩存9.增強(qiáng)了應(yīng)用開發(fā)能力Oracle11g的新功能Oracle11g的安裝與卸載本講大綱:1、Oracle11g的安裝2、Oracle11g的卸載Oracle11g的管理工具本講大綱:1、SQL*Plus工具2、Oracle企業(yè)管理器3、數(shù)據(jù)庫(kù)配置助手SQL*Plus工具
選擇“開始”/“所有程序”/“Oracle-OraDb11g_home1”/“應(yīng)用程序開發(fā)”/“SQL*Plus”命令,打開的命令窗口如下圖所示。Oracle企業(yè)管理器OracleEnterpriseManager(OEM)是基于WEB界面的Oracle數(shù)據(jù)庫(kù)管理工具。啟動(dòng)Oracle11g的OEM只需在瀏覽器中輸入其URL地址——通常為https://localhost:1518/em,然后連接主頁(yè)即可;也可以在“開始”菜單的“Oracle程序組”中選擇“DatabaseControl-orcl”菜單命令來(lái)啟動(dòng)Oracle11g的OEM工具。數(shù)據(jù)庫(kù)配置助手
在開始菜單中選擇“所有程序”/“Oracle-OraDb11g_home1”/“配置和移植工具”/“DatabaseConfigurationAssistant”菜單命令,就會(huì)打開如圖所示的窗口。啟動(dòng)與關(guān)閉數(shù)據(jù)庫(kù)實(shí)例本講大綱:1、啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例2、關(guān)閉數(shù)據(jù)庫(kù)實(shí)例啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例Oracle數(shù)據(jù)庫(kù)實(shí)例的啟動(dòng)過(guò)程分為3步驟,分別是啟動(dòng)實(shí)例、加載數(shù)據(jù)庫(kù)、打開數(shù)據(jù)庫(kù)。用戶可以根據(jù)實(shí)際情況的需要,以不同的模式啟動(dòng)數(shù)據(jù)庫(kù),啟動(dòng)數(shù)據(jù)庫(kù)所使用的命令格式如下。STARTUP[nomount|mount|open|force][resetrict][pfile=filename]關(guān)閉數(shù)據(jù)庫(kù)實(shí)例與啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例相同,關(guān)閉數(shù)據(jù)庫(kù)實(shí)例也分為3個(gè)步驟,分別是關(guān)閉數(shù)據(jù)庫(kù)、卸載數(shù)據(jù)庫(kù)、關(guān)閉Oracle實(shí)例。在SQL*Plus中,可以使用shutdown語(yǔ)句關(guān)閉數(shù)據(jù)庫(kù),其具體語(yǔ)法格式如下:SHUTDOWN[normal|transactional|immediate|abort]在Oracle數(shù)據(jù)庫(kù)管理系統(tǒng)中有3個(gè)重要的概念需要理解,那就是實(shí)例(Instance)、數(shù)據(jù)庫(kù)(Database)和數(shù)據(jù)庫(kù)服務(wù)器(DatabaseServer)。其中,實(shí)例是指一組Oracle后臺(tái)進(jìn)程以及在服務(wù)器中分配的共享內(nèi)存區(qū)域;數(shù)據(jù)庫(kù)是由基于磁盤的數(shù)據(jù)文件、控制文件、日志文件、參數(shù)文件和歸檔日志文件等組成的物理文件集合;數(shù)據(jù)庫(kù)服務(wù)器是指管理數(shù)據(jù)庫(kù)的各種軟件工具(比如,sqlplus、OEM等)和實(shí)例及數(shù)據(jù)庫(kù)三個(gè)部分。從實(shí)例與數(shù)據(jù)庫(kù)之間的辯證關(guān)系來(lái)講,實(shí)例用于管理和控制數(shù)據(jù)庫(kù);而數(shù)據(jù)庫(kù)為實(shí)例提供數(shù)據(jù)。一個(gè)數(shù)據(jù)庫(kù)可以被多個(gè)實(shí)例裝載和打開;而一個(gè)實(shí)例在其生存期內(nèi)只能裝載和打開一個(gè)數(shù)據(jù)庫(kù)。ORACLE11g體系結(jié)構(gòu)概述邏輯存儲(chǔ)結(jié)構(gòu)本講大綱:1、數(shù)據(jù)塊(DataBlocks)3、段(Segment)2、數(shù)據(jù)區(qū)(Extent)4、表空間(TableSpace)數(shù)據(jù)塊(DataBlocks)數(shù)據(jù)塊是Oracle邏輯存儲(chǔ)結(jié)構(gòu)中的最小的邏輯單位,也是執(zhí)行數(shù)據(jù)庫(kù)輸入輸出操作的最小存儲(chǔ)單位。Oracle數(shù)據(jù)存放在“Oracle數(shù)據(jù)塊”中,而不是“操作系統(tǒng)塊”中。通常Oracle數(shù)據(jù)塊是操作系統(tǒng)塊的整數(shù)倍,如果操作系統(tǒng)快的大小為2048B,并且Oracle數(shù)據(jù)塊的大小為8192B,則表示Oracle數(shù)據(jù)塊由4個(gè)操作系統(tǒng)塊構(gòu)成。Oracle數(shù)據(jù)塊有一定的標(biāo)準(zhǔn)大小,其大小被寫入到初始化參數(shù)DB_BlOCK_SIZE中。另外,Oracle支持在同一個(gè)數(shù)據(jù)庫(kù)中使用多種大小的快,與標(biāo)準(zhǔn)塊大小不同的塊就是非標(biāo)準(zhǔn)塊。數(shù)據(jù)區(qū)(也可稱作數(shù)據(jù)擴(kuò)展區(qū))是由一組連續(xù)的Oracle數(shù)據(jù)塊所構(gòu)成的Oracle存儲(chǔ)結(jié)構(gòu),一個(gè)或多個(gè)數(shù)據(jù)塊組成一個(gè)數(shù)據(jù)區(qū),一個(gè)或多個(gè)數(shù)據(jù)區(qū)再組成一個(gè)段(Segment)。當(dāng)一個(gè)段中的所有空間被使用完后,Oracle系統(tǒng)將自動(dòng)為該段分配一個(gè)新的數(shù)據(jù)區(qū),這也正符合Extent這個(gè)單詞所具有的“擴(kuò)展”的含義,可見(jiàn)數(shù)據(jù)區(qū)是Oracle存儲(chǔ)分配的最小單位,Oracle就以數(shù)據(jù)區(qū)為單位進(jìn)行存儲(chǔ)控件的擴(kuò)展。使用數(shù)據(jù)區(qū)的目的是用來(lái)保存特定數(shù)據(jù)類型的數(shù)據(jù),也是表中數(shù)據(jù)增長(zhǎng)的基本單位。在Oracle數(shù)據(jù)庫(kù)中,分配存儲(chǔ)空間就是以數(shù)據(jù)區(qū)為單位的。一個(gè)Oracle對(duì)象包含至少一個(gè)數(shù)據(jù)區(qū)。設(shè)置一個(gè)表或索引的存儲(chǔ)參數(shù)包含設(shè)置它的數(shù)據(jù)區(qū)大小。數(shù)據(jù)區(qū)(Extent)段(Segment)數(shù)據(jù)區(qū)(也可稱作數(shù)據(jù)擴(kuò)展區(qū))是由一組連續(xù)的Oracle數(shù)據(jù)塊所構(gòu)成的Oracle存儲(chǔ)結(jié)構(gòu),一個(gè)或多個(gè)數(shù)據(jù)塊組成一個(gè)數(shù)據(jù)區(qū),一個(gè)或多個(gè)數(shù)據(jù)區(qū)再組成一個(gè)段(Segment)。當(dāng)一個(gè)段中的所有空間被使用完后,Oracle系統(tǒng)將自動(dòng)為該段分配一個(gè)新的數(shù)據(jù)區(qū),這也正符合Extent這個(gè)單詞所具有的“擴(kuò)展”的含義,可見(jiàn)數(shù)據(jù)區(qū)是Oracle存儲(chǔ)分配的最小單位,Oracle就以數(shù)據(jù)區(qū)為單位進(jìn)行存儲(chǔ)控件的擴(kuò)展。使用數(shù)據(jù)區(qū)的目的是用來(lái)保存特定數(shù)據(jù)類型的數(shù)據(jù),也是表中數(shù)據(jù)增長(zhǎng)的基本單位。在Oracle數(shù)據(jù)庫(kù)中,分配存儲(chǔ)空間就是以數(shù)據(jù)區(qū)為單位的。一個(gè)Oracle對(duì)象包含至少一個(gè)數(shù)據(jù)區(qū)。設(shè)置一個(gè)表或索引的存儲(chǔ)參數(shù)包含設(shè)置它的數(shù)據(jù)區(qū)大小。表空間(TableSpace)
Oracle使用表空間將相關(guān)的邏輯結(jié)構(gòu)(比如段、數(shù)據(jù)區(qū)等)組合在一起,表空間是數(shù)據(jù)庫(kù)的最大邏輯劃分區(qū)域,通常用來(lái)存放數(shù)據(jù)表、索引、回滾段等數(shù)據(jù)對(duì)象(即Segment),任何數(shù)據(jù)對(duì)象在創(chuàng)建時(shí)都必須被指定存儲(chǔ)在某個(gè)表空間中。表空間(屬邏輯存儲(chǔ)結(jié)構(gòu))與數(shù)據(jù)文件(屬物理存儲(chǔ)結(jié)構(gòu))相對(duì)應(yīng),一個(gè)表空間由一個(gè)或多個(gè)數(shù)據(jù)文件組成,一個(gè)數(shù)據(jù)文件只屬于一個(gè)表空間;Oracle數(shù)據(jù)的存儲(chǔ)空間在邏輯上表現(xiàn)為表空間,而在物理上表現(xiàn)為數(shù)據(jù)文件。舉個(gè)例子來(lái)說(shuō),表空間相當(dāng)于操作系統(tǒng)中的文件夾,而數(shù)據(jù)文件就相當(dāng)于文件夾中的文件。每個(gè)數(shù)據(jù)庫(kù)至少有一個(gè)表空間(即SYSTEM表空間),表空間的大小等于所有從屬于它的數(shù)據(jù)文件大小的總和。物理存儲(chǔ)結(jié)構(gòu)本講大綱:1、數(shù)據(jù)文件3、日志文件4、服務(wù)器參數(shù)文件5、密碼文件、警告文件和跟蹤文件2、控制文件數(shù)據(jù)文件
數(shù)據(jù)文件是用于保存用戶應(yīng)用程序數(shù)據(jù)和Oracle系統(tǒng)內(nèi)部數(shù)據(jù)的文件,這些文件在操作系統(tǒng)中就是普通的操作系統(tǒng)文件,Oracle在創(chuàng)建表空間的同時(shí)會(huì)創(chuàng)建數(shù)據(jù)文件。Oracle數(shù)據(jù)庫(kù)在邏輯上由表空間組成,每個(gè)表空間可以包含一個(gè)或多個(gè)數(shù)據(jù)文件,一個(gè)數(shù)據(jù)文件只能隸屬于一個(gè)表空間。控制文件是一個(gè)二進(jìn)制文件,它記錄了數(shù)據(jù)庫(kù)的物理結(jié)構(gòu),其中主要包含數(shù)據(jù)庫(kù)名、數(shù)據(jù)文件與日志文件的名字和位置、數(shù)據(jù)庫(kù)建立日期等信息??刂莆募话阍贠racle系統(tǒng)安裝時(shí)或創(chuàng)建數(shù)據(jù)庫(kù)時(shí)自動(dòng)創(chuàng)建,控制文件所存放的路徑由服務(wù)器參數(shù)文件spfileorcl.ora的control_files參數(shù)值來(lái)指定。由于控制文件存放有數(shù)據(jù)文件、日志文件等的相關(guān)信息,因此,Oracle實(shí)例在啟動(dòng)時(shí)必須訪問(wèn)控制文件。如果控制文件正常,實(shí)例才能加載并打開數(shù)據(jù)庫(kù);但若控制文件中記錄了錯(cuò)誤的信息,或者實(shí)例無(wú)法找到一個(gè)可用的控制文件,則實(shí)例無(wú)法正常啟動(dòng)??刂莆募?/p>
日志文件的主要功能是記錄對(duì)數(shù)據(jù)所作的修改,對(duì)數(shù)據(jù)庫(kù)所作的修改幾乎都記錄在日志文件中。在出現(xiàn)問(wèn)題時(shí),可以通過(guò)日志文件得到原始數(shù)據(jù),從而保障不丟失已有操作成果。Oracle的日志文件包括重做日志文件(RedoLogFile)和歸檔日志文件(ArchiveLogFile),它們是Oracle系統(tǒng)的主要文件之一,尤其是重做日志文件,它是Oracle數(shù)據(jù)庫(kù)系統(tǒng)正常運(yùn)行所不可或缺的。下面將介紹這兩種日志文件。日志文件服務(wù)器參數(shù)文件
服務(wù)器參數(shù)文件SPFILE(ServerparameterFile)是二進(jìn)制文件,用來(lái)記錄了Oracle數(shù)據(jù)庫(kù)的基本參數(shù)信息(如,數(shù)據(jù)庫(kù)名、控制文件所在路徑、日志緩沖大小等)。數(shù)據(jù)庫(kù)實(shí)例在啟動(dòng)之前,Oracle系統(tǒng)首先會(huì)讀取SPFILE參數(shù)文件中設(shè)置的這些參數(shù),并根據(jù)這些初始化參數(shù)來(lái)配置和啟動(dòng)實(shí)例。比如,設(shè)置標(biāo)準(zhǔn)數(shù)據(jù)塊的大?。磪?shù)db_block_size的值)、設(shè)置日志緩沖區(qū)的大?。磪?shù)log_buffer的值)等等,所以SPFILE參數(shù)文件非常重要。服務(wù)器參數(shù)文件在安裝Oracle數(shù)據(jù)庫(kù)系統(tǒng)時(shí)由系統(tǒng)自動(dòng)創(chuàng)建,文件的名稱為SPFILEsid.ora,sid為所創(chuàng)建的數(shù)據(jù)庫(kù)實(shí)例名。
與早期版本的初始化參數(shù)文件INITsid.ora不同的是,SPFILE中的參數(shù)由Oracle系統(tǒng)自動(dòng)維護(hù),如果要對(duì)某些參數(shù)進(jìn)行修改,則盡可能不要直接對(duì)SPFILE進(jìn)行編輯,最好通過(guò)企業(yè)管理器(OEM)或ALTERSYSTEM命令來(lái)修改,所修改過(guò)的參數(shù)會(huì)自動(dòng)寫到SPFILE中。
Oracle系統(tǒng)運(yùn)行時(shí),除了必須的數(shù)據(jù)文件、控制文件、日志文件及服務(wù)器參數(shù)文件外,還需要一些輔助文件,如,密碼文件、警告文件和跟蹤文件,下面將對(duì)這些輔助文件進(jìn)行簡(jiǎn)單的介紹。密碼文件、警告文件和跟蹤文件Oracle11g服務(wù)器結(jié)構(gòu)本講大綱:1、系統(tǒng)全局區(qū)(SGA)2、程序全局區(qū)(PGA)3、前臺(tái)進(jìn)程4、后臺(tái)進(jìn)程系統(tǒng)全局區(qū)(SGA)系統(tǒng)全局區(qū)(SystemGlobalArea)是所有用戶進(jìn)程共享的一塊內(nèi)存區(qū)域,也就是說(shuō),SGA中的數(shù)據(jù)資源可以被多個(gè)用戶進(jìn)程共同使用。SGA主要由高速數(shù)據(jù)緩沖區(qū)、共享池、重做日志緩存區(qū)、java池和大型池等內(nèi)存結(jié)構(gòu)組成。SGA隨著數(shù)據(jù)庫(kù)實(shí)例的啟動(dòng)而加載到內(nèi)存中,當(dāng)數(shù)據(jù)庫(kù)實(shí)例關(guān)閉時(shí),SGA區(qū)域也就消失了。程序全局區(qū)(PGA)程序全局區(qū)(ProgramGlobalArea)也可稱作用戶進(jìn)程全局區(qū),它的內(nèi)存區(qū)在進(jìn)程私有區(qū)而不是共享區(qū)中。雖然PGA是一個(gè)全局區(qū),可以把代碼、全局變量和數(shù)據(jù)結(jié)構(gòu)都可以存放在其中,但區(qū)域內(nèi)的資源并不像SGA一樣被所有的用戶進(jìn)程所共享,而是每個(gè)Oracle服務(wù)器進(jìn)程都只擁有屬于自己的那部分PGA資源。在程序全局區(qū)(PGA)中,一個(gè)服務(wù)進(jìn)程只能訪問(wèn)屬于它自己的那部分PGA資源區(qū),各個(gè)服務(wù)進(jìn)程的PGA區(qū)的總和即為實(shí)例的PGA區(qū)的大小。通常PGA區(qū)由私有SQL區(qū)和會(huì)話區(qū)組成。前臺(tái)進(jìn)程1.用戶進(jìn)程用戶進(jìn)程是指那些能夠產(chǎn)生或執(zhí)行SQL語(yǔ)句的應(yīng)用程序,無(wú)論是SQL*Plus,還是其它應(yīng)用程序,只要是能生成或執(zhí)行SQL語(yǔ)句,都被稱作用戶進(jìn)程。2.服務(wù)器進(jìn)程服務(wù)進(jìn)程就是用于處理用戶會(huì)話過(guò)程中向數(shù)據(jù)庫(kù)實(shí)例發(fā)出的SQL語(yǔ)句或SQL*Plus命令,它可以分為專用服務(wù)器模式和共享服務(wù)器模式。后臺(tái)進(jìn)程Oracle后臺(tái)進(jìn)程是一組運(yùn)行于Oracle服務(wù)器端的后臺(tái)程序,是Oracle實(shí)例的重要組成部分。進(jìn)程包括DBWR、CKPT、LGWR、ARCH、SMON、PMON、LCKN、RECO、DNNN、SNPN。其中SMON、PMON、DBWR、LGWR和CKPT這5個(gè)后臺(tái)進(jìn)程必須正常啟動(dòng),否則將導(dǎo)致數(shù)據(jù)庫(kù)實(shí)例崩潰。此外,還有很多輔助進(jìn)程,用于實(shí)現(xiàn)相關(guān)的輔助功能,如果這些輔助進(jìn)程發(fā)生問(wèn)題,只是某些功能受到影響,一般不會(huì)導(dǎo)致數(shù)據(jù)庫(kù)實(shí)例崩潰。數(shù)據(jù)字典本講大綱:1、Oracle數(shù)據(jù)字典簡(jiǎn)介2、Oracle常用數(shù)據(jù)字典Oracle數(shù)據(jù)字典簡(jiǎn)介Oracle數(shù)據(jù)字典的名稱由前綴和后綴組成,使用下劃線“_”連接,其代表的含義如下:(1)DBA_:包含數(shù)據(jù)庫(kù)實(shí)例的所有對(duì)象信息。(2)V$_:當(dāng)前實(shí)例的動(dòng)態(tài)視圖,包含系統(tǒng)管理和系統(tǒng)優(yōu)化等所使用的視圖。(3)USER_:記錄用戶的對(duì)象信息。(4)GV_:分布式環(huán)境下所有實(shí)例的動(dòng)態(tài)視圖,包含系統(tǒng)管理和系統(tǒng)優(yōu)化使用的視圖。(5)ALL_:記錄用戶的對(duì)象信息機(jī)被授權(quán)訪問(wèn)的對(duì)象信息。Oracle常用數(shù)據(jù)字典數(shù)據(jù)字典名稱說(shuō)明dba_tablespaces關(guān)于表空間的信息dba_ts_quotas所有用戶表空間限額dba_free_space所有表空間中的自由分區(qū)dba_segments描述數(shù)據(jù)庫(kù)中所有段的存儲(chǔ)空間dba_extents數(shù)據(jù)庫(kù)中所有分區(qū)的信息dba_tables數(shù)據(jù)庫(kù)中所有數(shù)據(jù)表的描述數(shù)據(jù)字典名稱說(shuō)明v$database描述關(guān)于數(shù)據(jù)庫(kù)的相關(guān)信息v$datafile數(shù)據(jù)庫(kù)使用的數(shù)據(jù)文件信息v$log從控制文件中提取有關(guān)重做日志組的信息v$logfile有關(guān)實(shí)例重置日志組文件名及其位置的信息
SQL*Plus工具主要用來(lái)進(jìn)行數(shù)據(jù)查詢和數(shù)據(jù)處理。利用SQL*Plus可將SQL和Oracle專有的PL/SQL結(jié)合起來(lái)進(jìn)行數(shù)據(jù)查詢和處理。SQL*Plus工具具備以下功能:(1)定義變量,編寫SQL語(yǔ)句。(2)插入、修改、刪除、查詢,以及執(zhí)行命令和PL/SQL語(yǔ)句。比如,執(zhí)行showparameter命令。(3)格式化查詢結(jié)構(gòu)、運(yùn)算處理、保存、打印機(jī)輸出等。(4)顯示任何一個(gè)表的字段定義,并實(shí)現(xiàn)與用戶進(jìn)行交互。(5)完成數(shù)據(jù)庫(kù)的幾乎所有管理工作。比如,維護(hù)表空間和數(shù)據(jù)表。(6)運(yùn)行存儲(chǔ)在數(shù)據(jù)庫(kù)中的子程序或包。(7)以sysdba身份登錄數(shù)據(jù)庫(kù)實(shí)例,可以實(shí)現(xiàn)啟動(dòng)/停止數(shù)據(jù)庫(kù)實(shí)例。SQL*Plus與數(shù)據(jù)庫(kù)的交互設(shè)置SQL*Plus的運(yùn)行環(huán)境本講大綱:1、簡(jiǎn)介SET命令2、使用SET命令設(shè)置運(yùn)行環(huán)境簡(jiǎn)介SET命令在Oracle11g數(shù)據(jù)庫(kù)中,用戶可以使用SET命令來(lái)設(shè)置SQL*Plus的運(yùn)行環(huán)境,SET命令的語(yǔ)法格式為:SETsystem_variablevalue
參數(shù)system_variable表示變量名,參數(shù)value表示變量值。1.PAGESIZE變量2.NEWPAGE變量3.LINESIZE變量4.PAUSE變量5.NUMFORMAT變量使用SET命令設(shè)置運(yùn)行環(huán)境常用SQL*Plus命令本講大綱:1、HELP命令3、SPOOL命令4、其它常用命令2、DESCRIBE命令HELP命令
HELP命令的語(yǔ)法形式如下。
HELP|?[topic]
DESCRIBE命令的語(yǔ)法形式如下:desc[ribe]object_name;describe可以縮寫為desc,object_name表示將要查詢的對(duì)象名稱。DESCRIBE命令
SPOOL命令的語(yǔ)法格式如下:SPO[OL][file_name[.ext][CRE[ATE]|REP[LACE]|APP[END]]|OFF|OUT]參數(shù)file_name用于指定脫機(jī)文件的名稱,默認(rèn)的文件擴(kuò)展名為L(zhǎng)ST。SPOOL命令其它常用命令1.DEFINE命令2.SHOW命令3.EDI[T]命令4.SAVE命令5.GET命令6.start和@命令格式化查詢結(jié)果本講大綱:1、COLUMN命令2、TTITLE和BTITLE命令COLUMN命令
該命令可以實(shí)現(xiàn)格式化查詢結(jié)果、設(shè)置列寬度、重新設(shè)置列標(biāo)題等功能。其語(yǔ)法格式如下:COL[UMN][column_name|alias|option] column_name:用于指定要設(shè)置的列的名稱。 alias:用于指定列的別名,通過(guò)它可以把英文列標(biāo)題設(shè)置為漢字。 option:用于指定某個(gè)列的顯示格式,TTITLE和BTITLE命令
TTITLE命令的語(yǔ)法格式如下:TTI[TLE][printspec[text|variable]...]|[OFF|ON]text:用于設(shè)置輸出結(jié)果的頭標(biāo)題(即報(bào)表頭文字)。variable:用于在頭標(biāo)題中輸出相應(yīng)的變量值。OFF:表示禁止打印頭標(biāo)題。ON:表示允許打印頭標(biāo)題。SQL語(yǔ)言簡(jiǎn)介本講大綱:1、SQL語(yǔ)言的特點(diǎn)3、SQL語(yǔ)言的編寫規(guī)則2、SQL語(yǔ)言的分類SQL語(yǔ)言的特點(diǎn)
SQL語(yǔ)言主要有以下特點(diǎn)。(1)集合性SQL可以在高層的數(shù)據(jù)結(jié)構(gòu)上進(jìn)行工作,工作時(shí)不是單條的處理記錄,而對(duì)數(shù)據(jù)進(jìn)程成組的處理。所有SQL語(yǔ)句都接受集合作為輸入,并且返回集合作為輸出,SQL的集合特性允許一條SQL語(yǔ)句的結(jié)果作為另一條SQL語(yǔ)句的輸入。(2)統(tǒng)一性SQL為許多任務(wù)提供了統(tǒng)一的命令,這樣方便用戶學(xué)習(xí)和使用,基本的SQL命令只需很少時(shí)間就能學(xué)會(huì),甚至最高級(jí)的命令也可以在幾天內(nèi)掌握。(3)易于移植性由于所有主要的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)都支持SQL語(yǔ)言,這樣用戶就比較容易將原先使用SQL的技能從一個(gè)RDBMS轉(zhuǎn)到另一個(gè),而且用兼容SQL標(biāo)準(zhǔn)編寫的程序都是可以移植的。(1)數(shù)據(jù)查詢語(yǔ)言(DQL)(2)數(shù)據(jù)操縱語(yǔ)言(DML)(3)事務(wù)控制語(yǔ)言(TCL)(4)數(shù)據(jù)定義語(yǔ)言(DDL)(5)數(shù)據(jù)控制語(yǔ)言(DCL)SQL語(yǔ)言的分類SQL語(yǔ)言的編寫規(guī)則
SQL關(guān)鍵字不區(qū)分大小寫,既可以使用大寫格式,也可以使用小寫格式,或者大小寫格式混用。用戶模式本講大綱:1、模式與模式對(duì)象2、示例模式SCOTT模式與模式對(duì)象
模式是一個(gè)數(shù)據(jù)庫(kù)對(duì)象的集合。模式為一個(gè)數(shù)據(jù)庫(kù)用戶所有,并且具有與該用戶相同的名稱,比如,SYSTEM模式、SCOTT模式等。在一個(gè)模式內(nèi)部不可以直接訪問(wèn)其它模式的數(shù)據(jù)庫(kù)對(duì)象,即使在具有訪問(wèn)權(quán)限的情況下,也需要指定模式名稱才可以訪問(wèn)其它模式的數(shù)據(jù)庫(kù)對(duì)象。模式對(duì)象是由用戶創(chuàng)建的邏輯結(jié)構(gòu),用以存儲(chǔ)或引用數(shù)據(jù)。例如,前面章節(jié)中所講過(guò)的段(比如,表、索引等),以及用戶所擁有的其它非段的的數(shù)據(jù)庫(kù)對(duì)象。這些非段的數(shù)據(jù)庫(kù)對(duì)象通常包括:約束、視圖、同義詞、過(guò)程以及程序包等。那么,簡(jiǎn)單的說(shuō),模式與模式對(duì)象之間的關(guān)系就是擁有與被擁有的關(guān)系,即模式擁有模式對(duì)象;而模式對(duì)象被模式所擁有。
Oracle提供的SCOTT模式的目的,就是為了給用戶提供一些示例表和數(shù)據(jù)來(lái)展示Oracle數(shù)據(jù)庫(kù)的一些特性。SCOTT模式擁有的模式對(duì)象(都是數(shù)據(jù)表)如圖所示。示例模式SCOTT檢索數(shù)據(jù)本講大綱:1、簡(jiǎn)單查詢3、分組查詢
4、排序查詢
5、多表關(guān)聯(lián)查詢
2、篩選查詢
簡(jiǎn)單查詢
只包含SELECT子句和FROM子句的查詢就是簡(jiǎn)單查詢,SELECT子句和FROM子句是SELECT語(yǔ)句的必選項(xiàng),也就是說(shuō)每個(gè)SELECT語(yǔ)句都必須包含這兩個(gè)子句。其中,SELECT子句用于選擇想要在查詢結(jié)果中顯示的列,對(duì)于這些要顯示的列,即可以使用列名來(lái)表示,也可以使用星號(hào)(*)來(lái)表示。在檢索數(shù)據(jù)時(shí),數(shù)據(jù)將按照SELECT子句后面指定的列名的順序來(lái)顯示;如果使用星號(hào)(*),則表示檢索所有的列,這時(shí)數(shù)據(jù)將按照表結(jié)構(gòu)的自然順序來(lái)顯示。在SELECT語(yǔ)句中,WHERE子句位于FROM子句之后,其語(yǔ)法格式如下:SELECTcolumns_listFROMtable_nameWHEREconditional_expression篩選查詢?cè)赟ELECT語(yǔ)句中,GROUPBY子句位于FROM子句之后,其語(yǔ)法格式如下:SELECTcolumns_listFROMtable_name[WHEREconditional_expression]GROUPBYcolumns_list分組查詢排序查詢
在SELECT語(yǔ)句中,可以使用ORDERBY子句對(duì)檢索的結(jié)果集進(jìn)行排序,該子句位于FROM子句之后,其語(yǔ)法格式如下:SELECTcolumns_listFROMtable_name[WHEREconditional_expression][GROUPBYcolumns_list]ORDERBY{order_by_expression[ASC|DESC]}[,...n]
在實(shí)際的應(yīng)用系統(tǒng)開發(fā)中會(huì)設(shè)計(jì)多個(gè)數(shù)據(jù)表,每個(gè)表的信息不是獨(dú)立存在的,而是若干個(gè)表之間的信息存在一定的關(guān)系,這樣當(dāng)用戶查詢某一個(gè)表的信息時(shí),很可能需要查詢關(guān)聯(lián)數(shù)據(jù)表的信息,這就是多表關(guān)聯(lián)查詢。SELECT語(yǔ)句自身是支持多表關(guān)聯(lián)查詢的,多表關(guān)聯(lián)查詢要比單表查詢復(fù)雜得多。在進(jìn)行多表關(guān)聯(lián)查詢時(shí),可能會(huì)涉及到表別名、內(nèi)連接、外連接、自然連接和交叉連接等概念多表關(guān)聯(lián)查詢Oracle常用系統(tǒng)函數(shù)本講大綱:1、字符類函數(shù)
2、數(shù)字類函數(shù)
3、日期和時(shí)間類函數(shù)
4、轉(zhuǎn)換類函數(shù)
5、聚合類函數(shù)
字符類函數(shù)(1)ASCII(c)函數(shù)和CHR(i)函數(shù)(2)CONCAT(s1,s2)函數(shù)(3)INITCAP(s)函數(shù)(4)INSTR(s1,s2[,i][,j])函數(shù)(5)LENGTH(s)函數(shù)(6)LOWER(s)函數(shù)和UPPER函數(shù)(s)(7)LTRIM(s1,s2)函數(shù)、RTRIM(s1,s2)函數(shù)和TRIM(s1,s2)函數(shù)(8)REPLACE(s1,s2[,s3])函數(shù)(9)SUBSTR(s,i,[j])函數(shù)數(shù)字類函數(shù)(1)CEIL(n)函數(shù)(2)ROUND(n1,n2)函數(shù)(3)POWER(n1,n2)函數(shù)日期和時(shí)間類函數(shù)(1)SYSDATE()函數(shù)(2)ADD_MONTHS(d,i)函數(shù)轉(zhuǎn)換類函數(shù)(1)TO_CHAR()函數(shù)(2)TO_NUMBER(s[,format[lan]])函數(shù)聚合類函數(shù)(1)AVG(x[DISTINCT|ALL])函數(shù)(2)COUNT(x[DISTINCT|ALL])函數(shù)(3)SUM(x[DISTINCT|ALL])函數(shù)子查詢的用法本講大綱:1、什么是子查詢
2、單行子查詢
3、多行子查詢
4、關(guān)聯(lián)子查詢什么是子查詢子查詢是在SQL語(yǔ)句內(nèi)的另外一條SELECT語(yǔ)句,也被稱為內(nèi)查詢或是內(nèi)SELECT語(yǔ)句。在SELECT、INSERT、UPDATE或DELETE命令中允許是一個(gè)表達(dá)式的地方都可以包含子查詢,子查詢甚至可以包含在另外一個(gè)子查詢中。單行子查詢
單行子查詢是指返回一行數(shù)據(jù)的子查詢語(yǔ)句。當(dāng)在WHERE子句中引用單行子查詢時(shí),可以使用單行比較運(yùn)算符(=、>、<、>=、<=和<>)。多行子查詢
多行子查詢是指返回多行數(shù)據(jù)的子查詢語(yǔ)句。當(dāng)在WHERE子句中使用多行子查詢時(shí),必須使用多行比較符(IN、ANY、ALL)。關(guān)聯(lián)子查詢
在當(dāng)行子查詢和多行子查詢中,內(nèi)查詢和外查詢是分開執(zhí)行的,也就是說(shuō)內(nèi)查詢的執(zhí)行與外查詢的執(zhí)行是沒(méi)有關(guān)系的,外查詢僅僅是使用內(nèi)查詢的最終結(jié)果。在一些特殊需求的子查詢中,內(nèi)查詢的執(zhí)行需要借助于外查詢,而外查詢的執(zhí)行又離不開內(nèi)查詢的執(zhí)行,這時(shí),內(nèi)查詢和外查詢是相互關(guān)聯(lián)的,這種子查詢就被稱為關(guān)聯(lián)子查詢。操作數(shù)據(jù)庫(kù)本講大綱:1、插入數(shù)據(jù)(INSERT語(yǔ)句)
3、刪除數(shù)據(jù)(DELETE語(yǔ)句和TRUNCATE語(yǔ)句)2、更新數(shù)據(jù)(UPDATE語(yǔ)句)插入數(shù)據(jù)(INSERT語(yǔ)句)INSERT語(yǔ)句的法格式如下:
INSERTINTOtable_name[(column_name1[,column_name2]…)]VALUES(express1[,express2]…)UPDATE語(yǔ)句的語(yǔ)法格式如下:UPDATEtable_nameSET{column_name1=express1[,column_name2=express2...]|(column_name1[,column_name2…])=(selectSubquery)}[WHEREcondition]更新數(shù)據(jù)(UPDATE語(yǔ)句)1、DELETE語(yǔ)句語(yǔ)法如下DELETEFROMtable_name[WHEREcondition]2、TRUNCATE語(yǔ)句語(yǔ)法如下:TRUNCATE
TABLEtable_name刪除數(shù)據(jù)(DELETE語(yǔ)句和TRUNCATE語(yǔ)句)事務(wù)處理本講大綱:1、事務(wù)的概述2、操作事務(wù)事務(wù)的概述事務(wù)包含4種重要的屬性,被統(tǒng)稱為ACID(原子性、一致性、隔離性和持久性),一個(gè)事務(wù)必須通過(guò)ACID。(1)原子性(Atomic):事務(wù)是一個(gè)整體的工作單元,事務(wù)對(duì)數(shù)據(jù)庫(kù)所做的操作要么全部執(zhí)行,要么全部取消。如果某條語(yǔ)句執(zhí)行失敗,則所有語(yǔ)句全部回滾。(2)一致性(ConDemoltent):事務(wù)在完成時(shí),必須使所有的數(shù)據(jù)都保持一致?tīng)顟B(tài)。在相關(guān)數(shù)據(jù)庫(kù)中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。如果事務(wù)成功,則所有數(shù)據(jù)將變?yōu)橐粋€(gè)新的狀態(tài);如果事務(wù)失敗,則所有數(shù)據(jù)將處于開始之前的狀態(tài)。(3)隔離性(Isolated):由事務(wù)所作的修改必須與其他事務(wù)所作的修改隔離。事務(wù)查看數(shù)據(jù)時(shí)數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),要么是另一事務(wù)修改它之后的狀態(tài),事務(wù)不會(huì)查看中間狀態(tài)的數(shù)據(jù)。(4)持久性(Durability):當(dāng)事務(wù)提交后,對(duì)數(shù)據(jù)庫(kù)所做的修改就會(huì)永久保存下來(lái)。Oracle11g中的事務(wù)是隱式自動(dòng)開始的,它不需要用戶顯示地執(zhí)行開始事務(wù)語(yǔ)句。但對(duì)于事務(wù)的結(jié)束處理,則需要用戶進(jìn)行指定的操作,通常在以下情況時(shí),Oracle認(rèn)為一個(gè)事務(wù)結(jié)束了。(1)執(zhí)行COMMIT語(yǔ)句提交事務(wù)。(2)指定ROLLBACK語(yǔ)句撤銷事務(wù)。(3)執(zhí)行一條數(shù)據(jù)定義語(yǔ)句,比如,CREATE、DROP或ALTER等語(yǔ)句。如果該語(yǔ)句執(zhí)行成功,那么Oracle系統(tǒng)會(huì)自動(dòng)執(zhí)行COMMIT命令;否則,則Oracle系統(tǒng)會(huì)自動(dòng)執(zhí)行ROLLBACK命令。(4)執(zhí)行一個(gè)數(shù)據(jù)控制命令,比如,GRANT、REVOKE等控制命令,這種操作執(zhí)行完畢,Oracle系統(tǒng)會(huì)自動(dòng)執(zhí)行COMMIT命令。(5)正常地?cái)嚅_數(shù)據(jù)庫(kù)的連接、正常地退出SQL*Plus環(huán)境,則Oracle系統(tǒng)會(huì)自動(dòng)執(zhí)行COMMIT命令;否則,則Oracle系統(tǒng)會(huì)自動(dòng)執(zhí)行ROLLBACK命令。操作事務(wù)PL/SQL簡(jiǎn)介本講大綱:1、PL/SQL塊結(jié)構(gòu)
2、代碼注釋和標(biāo)示符
PL/SQL塊結(jié)構(gòu)
標(biāo)準(zhǔn)PL/SQL塊的語(yǔ)法格式如下:
[DECLARE]
--聲明部分,可選
BEGIN
--執(zhí)行部分,必須
[EXCEPTION]
--異常處理部分,可選
END1.單行注釋單行注釋由連個(gè)連接字符“--”開始,后面緊跟著注釋內(nèi)容。2.多行注釋多行注釋由/*開頭,由*/結(jié)尾,這個(gè)大多數(shù)編程語(yǔ)言是相同的。3.PL/SQL字符集所有的PL/SQL程序元素(比如,關(guān)鍵字、變量名、常量名等)都是由一些字符序列組合而成的,而這些字符序列中的字符都必須取自PL/SQL語(yǔ)言所允許使用的字符集,那么這些合法的字符集主要包括以下內(nèi)容:大寫和小寫字母:A-Z或a-z。數(shù)字:0-9。非顯示的字符:制表符、空格和回車。數(shù)學(xué)符號(hào):+,-,*,/,>,<,=等。間隔符:包括(),{},[],?,!,;,:,@,#,%,$,&等。代碼注釋和標(biāo)示符數(shù)據(jù)類型、變量和常量本講大綱:1、基本數(shù)據(jù)類型2、特殊數(shù)據(jù)類型3、定義變量和常量基本數(shù)據(jù)類型1.?dāng)?shù)值類型數(shù)值類型主要包括NUMBER、PLS_INTEGER和BINARY_INTEGER三種基本類型
2.字符類型字符類型主要包括VARCHAR2、CHAR、LONG、NCHAR和NVARCHAR2等。這些類型的變量用來(lái)存儲(chǔ)字符串或字符數(shù)據(jù)。
3.日期類型日期類型只有一個(gè)種——即DATE類型,用來(lái)存儲(chǔ)日期和時(shí)間信息,DATE類型的存儲(chǔ)空間是7個(gè)字節(jié),分別使用一個(gè)字節(jié)存儲(chǔ)世紀(jì)、年、月、天、小時(shí)、分鐘和秒。4.布爾類型布爾類型也只有一種——即BOOLEAN,主要用于程序的流程控制和業(yè)務(wù)邏輯判斷,其變量值可以是TRUE、FALSE或NULL中的一種。1.%TYPE類型使用%TYPE關(guān)鍵字可以聲明一個(gè)與指定列名稱相同的數(shù)據(jù)類型,它通常緊跟在指定列名的后面。2.RECORD類型,語(yǔ)法如下:typerecord_typeisrecord(var_member1data_type[notnull][:=default_value],…var_memberndata_type[notnull][:=default_value])3.%ROWTYPE類型,語(yǔ)法如下:rowVar_nametable_name%rowtype;特殊數(shù)據(jù)類型1.定義變量<變量名><數(shù)據(jù)類型>[(長(zhǎng)度):=<初始值>];2.定義常量<常量名>constant<數(shù)據(jù)類型>:=<常量值>;定義變量和常量流程控制語(yǔ)句本講大綱:1、選擇語(yǔ)句2、循環(huán)語(yǔ)句
選擇語(yǔ)句1.if…then語(yǔ)句2.If…then…else語(yǔ)句3.if…then…elsif語(yǔ)句4.case語(yǔ)句1.loop語(yǔ)句loopplsql_sentence;exitwhenend_condition_expendloop;2.while語(yǔ)句whilecondition_expressionloopplsql_sentence;endloop;3.for語(yǔ)句forvariable_counter_namein[reverse]lower_limit..upper_limitloopplsql_sentence;endloop;循環(huán)語(yǔ)句PL/SQL游標(biāo)本講大綱:1、顯示游標(biāo)2、游標(biāo)的屬性3、隱式游標(biāo)
4、通過(guò)for語(yǔ)句循環(huán)游標(biāo)
顯示游標(biāo)
顯示游標(biāo)是由用戶聲明和操作的一種游標(biāo),通常用于操作查詢結(jié)果集(即由SELECT語(yǔ)句返回的查詢結(jié)果),使用它處理數(shù)據(jù)的步驟包括:聲明游標(biāo)、打開游標(biāo)、讀取游標(biāo)和關(guān)閉游標(biāo)4個(gè)步驟。
游標(biāo)的屬性無(wú)論是顯式游標(biāo)還是隱式游標(biāo),都具有%found、%notfound、%isopen和%rowcount四個(gè)屬性,通過(guò)這4個(gè)屬性可以獲知SQL語(yǔ)句的執(zhí)行結(jié)果以及該游標(biāo)的狀態(tài)信息。下面對(duì)這4個(gè)屬性的功能進(jìn)行講解。(1)%found:布爾型屬性,如果SQL語(yǔ)句至少影響到一行數(shù)據(jù),則該屬性為true,否則為fasle。(2)%notfound:布爾型屬性,與%found屬性的功能相反。(3)%rowcount:數(shù)字型屬性,返回受SQL語(yǔ)句影響的行數(shù)。(4)%isopen:布爾型屬性,當(dāng)游標(biāo)已經(jīng)打開時(shí)返回true,游標(biāo)關(guān)閉時(shí)則為false。隱式游標(biāo)在執(zhí)行一個(gè)SQL語(yǔ)句時(shí),Oracle會(huì)自動(dòng)創(chuàng)建一個(gè)隱式游標(biāo)。這個(gè)游標(biāo)是內(nèi)存中處理該語(yǔ)句的工作區(qū)域。隱式游標(biāo)主要是處理數(shù)據(jù)操縱語(yǔ)句(如,UPDATE、DELETE語(yǔ)句)的執(zhí)行結(jié)果,當(dāng)然特殊情況下,也可以處理SELECT語(yǔ)句的查詢結(jié)果。由于隱式游標(biāo)也有屬性,當(dāng)使用隱式游標(biāo)的屬性時(shí),需要在屬性前面加上隱式游標(biāo)的默認(rèn)名稱——SQL。通過(guò)for語(yǔ)句循環(huán)游標(biāo)(1)在for語(yǔ)句中遍歷隱式游標(biāo)中的數(shù)據(jù)時(shí),通常在關(guān)鍵字“in”的后面提供由SELECT語(yǔ)句檢索的結(jié)果集,在檢索結(jié)果集的過(guò)程中,Oracle系統(tǒng)會(huì)自動(dòng)提供一個(gè)隱式的游標(biāo)sql。(2)在for語(yǔ)句中遍歷顯式游標(biāo)中的數(shù)據(jù)時(shí),通常在關(guān)鍵字“in”的后面提供游標(biāo)的名稱,其語(yǔ)法格式如下:forvar_auto_recordincur_nameloopplsqlsentence;endloop;PL/SQL異常處理本講大綱:1、預(yù)定義異常
2、自定義異常
預(yù)定義異常
當(dāng)PL/SQL程序違反了Oracle系統(tǒng)內(nèi)部規(guī)定的設(shè)計(jì)規(guī)范時(shí),就會(huì)自動(dòng)引發(fā)一個(gè)預(yù)定義的異常,例如,當(dāng)除數(shù)為零時(shí),就會(huì)引發(fā)“ZERO_DIVIED”異常。
系統(tǒng)預(yù)定義異常說(shuō)明ZERO_DIVIDE除數(shù)為零時(shí)引發(fā)的異常ACCESS_INTO_NULL企圖為某個(gè)未初始化對(duì)象的屬性賦值COLLECTION_IS_NULL企圖使用未初始化的集合元素CURSOR_ALREADY_OPEN企圖再次打開一個(gè)已經(jīng)打開過(guò)的游標(biāo),但在重新打開之前,游標(biāo)未關(guān)閉INVALID_CURSOR執(zhí)行一個(gè)非法的游標(biāo)操作,例如,關(guān)閉一個(gè)未打開的游標(biāo)INVALID_NUMBER企圖將一個(gè)字符串轉(zhuǎn)換成一個(gè)無(wú)效的數(shù)字而失敗LOGIN_DENIED企圖使用無(wú)效的用戶名或密碼連接數(shù)據(jù)庫(kù)NO_DATA_FOUNDSELECTINTO語(yǔ)句沒(méi)有返回?cái)?shù)據(jù)ROWTYPE_MISMATCH主游標(biāo)變量與PL/SQL游標(biāo)變量的返回類型不兼容SELF_IS_NULL使用對(duì)象類型時(shí),使用空對(duì)象調(diào)用其方法自定義異常1.錯(cuò)誤編號(hào)異常錯(cuò)誤號(hào)異常是指在Oracle系統(tǒng)發(fā)生錯(cuò)誤時(shí),系統(tǒng)會(huì)顯示錯(cuò)誤號(hào)和相關(guān)描述信息的異常,雖然直接使用錯(cuò)誤編號(hào)也可以完成異常處理,但錯(cuò)誤編號(hào)較為抽象,不易于用戶理解和記憶,對(duì)于這種異常,首先在PL/SQL塊的聲明部分(DECLARE部分)使用EXCEPTION類型定義一個(gè)異常變量名,然后使用語(yǔ)句PRAGMAEXCEPTION_INIT為“錯(cuò)誤編號(hào)”關(guān)聯(lián)“這個(gè)異常變量名”,接下來(lái)就可以像對(duì)待系統(tǒng)預(yù)定義異常一樣處理了。2.業(yè)務(wù)邏輯異常在實(shí)際的應(yīng)用中,程序開發(fā)人員可以根據(jù)具體的業(yè)務(wù)羅規(guī)則自定義一個(gè)異常。這樣,當(dāng)用戶操作違反業(yè)務(wù)邏輯規(guī)則時(shí),就引發(fā)一個(gè)自定義異常,從而中斷程序的正常執(zhí)行并轉(zhuǎn)到自定義的異常處理部分。但無(wú)論是預(yù)定義異常,還是錯(cuò)誤編號(hào)異常,都是由Oracle系統(tǒng)判斷的錯(cuò)誤,但業(yè)務(wù)邏輯異常是Oracle系統(tǒng)本身是無(wú)法知道的,這樣就需要有一個(gè)引發(fā)異常的機(jī)制,引發(fā)業(yè)務(wù)邏輯異常通常使用RAISE語(yǔ)句來(lái)實(shí)現(xiàn)。當(dāng)引發(fā)一個(gè)異常時(shí),控制就會(huì)轉(zhuǎn)到EXCEPTION異常處理部分執(zhí)行異常處理語(yǔ)句。業(yè)務(wù)邏輯異常首先在DECLARE部分使用EXCEPTION類型聲明一個(gè)異常變量,然后在BEGIN部分根據(jù)一定的義務(wù)邏輯規(guī)則執(zhí)行RAISE語(yǔ)句(在RAISE關(guān)鍵字后面跟著異常變量名),最后在EXCEPTION部分編寫異常處理語(yǔ)句。存儲(chǔ)過(guò)程本講大綱:1、創(chuàng)建存儲(chǔ)過(guò)程2、存儲(chǔ)過(guò)程的參數(shù)3、IN參數(shù)的默認(rèn)值創(chuàng)建存儲(chǔ)過(guò)程語(yǔ)法格式如下:create[orreplace]procedurepro_name[(parameter1[,parameter2]…)]is|asbeginplsql_sentences;[exception][dowith_sentences;]end[pro_name];1.IN模式參數(shù)這是一種輸入類型的參數(shù),參數(shù)值由調(diào)用方傳入,并且只能被存儲(chǔ)過(guò)程讀取。(1)指定名稱傳遞指定名稱傳遞是指在向存儲(chǔ)過(guò)程傳遞參數(shù)時(shí)需要指定參數(shù)名稱,即參數(shù)名稱在左側(cè),中間是賦值符號(hào)“=>”,右側(cè)是參數(shù)值,其語(yǔ)法格式如下:pro_name(parameter1=>value1[,parameter2=>value2]…)(2)按位置傳遞指定名稱傳遞參數(shù)雖然直觀易讀,但也有缺點(diǎn),就是參數(shù)過(guò)多時(shí),會(huì)顯得代碼冗長(zhǎng),反而變得不容易閱讀。這樣用戶就可以采取按位置傳遞參數(shù),采用這種方式時(shí),用戶提供的參數(shù)值順序必須與存儲(chǔ)過(guò)程中定義的參數(shù)順序相同。
(3)混合方式傳遞混合方式就是將前兩種方式結(jié)合到一起,這樣就可以兼顧二者的優(yōu)點(diǎn),
2.OUT模式參數(shù)這是一種輸出類型的參數(shù),表示這個(gè)參數(shù)在存儲(chǔ)過(guò)程中已經(jīng)被賦值,并且這個(gè)參數(shù)值可以傳遞到當(dāng)前存儲(chǔ)過(guò)程以外的環(huán)境中,關(guān)鍵字out位于參數(shù)名稱之后。
存儲(chǔ)過(guò)程的參數(shù)前面的IN參數(shù)的值都是在調(diào)用存儲(chǔ)過(guò)程時(shí)傳入的,實(shí)際上,Oracle支持在聲明IN參數(shù)的同時(shí)給其初始化默認(rèn)值,這樣在存儲(chǔ)過(guò)程調(diào)用時(shí),如果沒(méi)有向IN參數(shù)傳入值,則存儲(chǔ)過(guò)程可以使用默認(rèn)值進(jìn)行操作。IN參數(shù)的默認(rèn)值函數(shù)本講大綱:1、創(chuàng)建函數(shù)
2、調(diào)用函數(shù)
3、刪除函數(shù)
創(chuàng)建函數(shù)create[orreplace]functionfun_name[(parameter1[,parameter2]…)returndata_typeis[inner_variable]beginplsql_sentence;[exception][dowith_sentences;]end[fun_name];由于函數(shù)有返回值,所以在調(diào)用函數(shù)時(shí),必須使用一個(gè)變量來(lái)保存函數(shù)的返回值,這樣函數(shù)和這個(gè)變量就組成了一個(gè)賦值表達(dá)式。
調(diào)用函數(shù)觸發(fā)器本講大綱:1、觸發(fā)器簡(jiǎn)介
2、語(yǔ)句級(jí)觸發(fā)器
3、行級(jí)別觸發(fā)器
4、替換觸發(fā)器
5、用戶事件觸發(fā)器
觸發(fā)器簡(jiǎn)介語(yǔ)法格式如下:create[orreplace]triggertri_name[before|after|insteadof]tri_eventontable_name|view_name|user_name|db_name[foreachrow[whentri_condition]beginplsql_sentences;endtri_name;
語(yǔ)句級(jí)觸發(fā)器,顧名思義,就是針對(duì)一條DML語(yǔ)句而引起的觸發(fā)器執(zhí)行。在語(yǔ)句級(jí)觸發(fā)器中,不使用foreachrow子句,也就是說(shuō)無(wú)論數(shù)據(jù)操作影響多少行,觸發(fā)器都只會(huì)執(zhí)行一次。
語(yǔ)句級(jí)觸發(fā)器
不言而喻,行級(jí)觸發(fā)器會(huì)針對(duì)DML操作所影響的每一行數(shù)據(jù)都執(zhí)行一次觸發(fā)器。創(chuàng)建這種觸發(fā)器時(shí),必須在語(yǔ)法中使用foreachfor這個(gè)選項(xiàng)。使用行級(jí)觸發(fā)器的一個(gè)典型應(yīng)用就是給數(shù)據(jù)表生成主鍵值,下面就來(lái)講解這個(gè)典型應(yīng)用的實(shí)現(xiàn)過(guò)程。行級(jí)別觸發(fā)器
替換觸發(fā)器——即insteadof觸發(fā)器,它的“觸發(fā)時(shí)機(jī)”關(guān)鍵字是insteadof,而不是before或after。與其它類型觸發(fā)器不同是,替換觸發(fā)器定義在視圖(一種數(shù)據(jù)庫(kù)對(duì)象,在后面章節(jié)中會(huì)講解到)上的,而不是定義在表上。由于視圖是由多個(gè)基表連接組成的邏輯結(jié)構(gòu),所以一般不允許用戶進(jìn)行DML操作(如insert、update、delete等操作),這樣當(dāng)用戶為視圖編寫“替換觸發(fā)器”后,用戶對(duì)視圖的DML操作實(shí)際上就變成了執(zhí)行觸發(fā)器中的PL/SQL語(yǔ)句塊,這樣就可以通過(guò)在“替換觸發(fā)器”中編寫適當(dāng)?shù)拇a對(duì)構(gòu)成視圖的各個(gè)基表進(jìn)行操作。替換觸發(fā)器
用戶事件觸發(fā)器是因進(jìn)行DDL操作或用戶登錄、退出等操作而引起運(yùn)行的一種觸發(fā)器,引起該類型觸發(fā)器運(yùn)行的常見(jiàn)用戶事件包括:CREATE、ALTER、DROP、ANALYZE、COMMENT、GRANT、REVOKE、RENAME、TRUNCATE、SUSPEND、LOGON和LOGOFF等。用戶事件觸發(fā)器程序包本講大綱:1、程序包的規(guī)范2、程序包的主體程序包的規(guī)范該“規(guī)范”用于規(guī)定在程序包中可以使用哪些變量、類型、游標(biāo)和子程序(指各種命名的PL/SQL塊),需要注意的是:程序包一定要在“包主體”之前被創(chuàng)建,其語(yǔ)法格式如下:create[orreplace]packagepack_nameis[declare_variable];[declare_type];[declare_cursor];[declare_function];[declare_procedure];end[pack_name];
與創(chuàng)建“規(guī)范”不同的是,創(chuàng)建“程序包主體”使用CREATEPACKAGEBODY語(yǔ)句,而不是CREATEPACKAGE,這一點(diǎn)需要讀者注意,創(chuàng)建程序包主體的代碼如下:create[orreplace]packagebodypack_nameis[inner_variable][cursor_body][function_title]{beginfun_plsql;[exception][dowith_sentences;]end[fun_name]}[procedure_title]{beginpro_plsql;[exception][dowith_sentences;]end[pro_name]}…end[pack_name];程序包的主體管理控制文件本講大綱:1、簡(jiǎn)介控制文件
2、控制文件的多路復(fù)用
3、創(chuàng)建控制文件4、備份和恢復(fù)控制文件
5、刪除控制文件
6、查詢控制文件的信息
簡(jiǎn)介控制文件
在Oracle數(shù)據(jù)庫(kù)中,控制文件是一個(gè)很?。ù笮∫话阍?0MB范圍內(nèi))的二進(jìn)制文件,含有數(shù)據(jù)庫(kù)的結(jié)構(gòu)信息,包括數(shù)據(jù)文件和日志文件的信息??梢詫⒖刂莆募斫鉃槲锢頂?shù)據(jù)庫(kù)的一個(gè)元數(shù)據(jù)存儲(chǔ)庫(kù)??刂莆募跀?shù)據(jù)庫(kù)創(chuàng)建時(shí)被自動(dòng)創(chuàng)建,并在數(shù)據(jù)庫(kù)發(fā)生物理變化時(shí)更新。控制文件被不斷更新,并且在任何時(shí)候都要保證控制文件是可用的。只有Oracle進(jìn)程才能夠安全地更新控制文件的內(nèi)容,所以,任何時(shí)候都不要試圖手動(dòng)編輯控制文件。
(1)及時(shí)備份控制文件Oracle數(shù)據(jù)庫(kù)的控制文件是在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)自動(dòng)創(chuàng)建的,一般情況下,控制文件至少有一個(gè)副本。(2)保護(hù)控制文件一旦控制文件被損壞,數(shù)據(jù)庫(kù)便無(wú)法順利啟動(dòng),而且修復(fù)也非常困難。也因?yàn)槿绱耍刂莆募墓芾砼c維護(hù)工作顯得格外重要。
為了提高數(shù)據(jù)庫(kù)的安全性,至少要為數(shù)據(jù)庫(kù)建立兩個(gè)控制文件,并且這兩個(gè)控制文件最好分別保存在不同的磁盤中,這樣就可以避免產(chǎn)生由于某個(gè)磁盤故障而無(wú)法啟動(dòng)數(shù)據(jù)庫(kù)的危險(xiǎn),該管理策略被稱為多路復(fù)用控制文件。通俗地說(shuō),多路復(fù)用控制文件是指在系統(tǒng)不同的位置上同時(shí)存放多個(gè)控制文件的副本,在這種情況下,如果多路復(fù)用控制文件中的某個(gè)磁盤發(fā)生物理?yè)p壞導(dǎo)致其所包含的控制文件損壞,數(shù)據(jù)庫(kù)將被關(guān)閉(在數(shù)據(jù)庫(kù)實(shí)例啟動(dòng)的情況下),此時(shí)就可以利用另一個(gè)磁盤中保存的控制文件來(lái)恢復(fù)被損壞的控制文件,然后再重新啟動(dòng)數(shù)據(jù)庫(kù),達(dá)到保護(hù)控制文件的目的。
1.更改CONTROL_FILES參數(shù)SQL>altersystemsetcontrol_files=2'E:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL',3'E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL',4'D:\OracleFiles\ControlFiles\CONTROL03.CTL'5scope=spfile;2.復(fù)制控制文件控制文件的多路復(fù)用手工創(chuàng)建控制文件使用CREATECONTROLFILE語(yǔ)句,其語(yǔ)法格式如下。createcontrolfilereusedatabasedb_namelogfilegroup1redofiles_list1group2redofiles_list2group3redofiles_list3...datafiledatafile1datafile2datafile3…maxlogfilesmax_value1maxlogmembersmax_value2maxinstancesmax_value3maxdatafilesmax_value4noresetlogs|resetlogsarchivelog|noarchivelog;創(chuàng)建控制文件1.備份控制文件備份控制文件需要使用到ALTERDATABASEBACKUPCONTROLFILE語(yǔ)句。有兩種備份方式:一種是備份為二進(jìn)制文件,另一種是備份為腳本文件。2.恢復(fù)控制文件當(dāng)控制文件執(zhí)行備份后,即使發(fā)生了磁盤物理?yè)p壞,只需要在初始化文件中重新設(shè)置CONTROL_FILES參數(shù)的值,使它指向備份的控制文件,即可重新啟動(dòng)數(shù)據(jù)庫(kù)。備份和恢復(fù)控制文件
如果控制文件的位置不在適合時(shí),可以從數(shù)據(jù)庫(kù)中刪除控制文件,其操作過(guò)程如下。(1)關(guān)閉數(shù)據(jù)庫(kù)(shutdown)。(2)編輯初始化參數(shù)CONTROL_FILES,清除掉打算要?jiǎng)h除的控制文件的名稱。(3)重新啟動(dòng)數(shù)據(jù)庫(kù)(startup)。刪除控制文件
控制文件是一個(gè)二進(jìn)制文件,其中被分隔成許多部分,分別記錄各種類型的信息。每一類信息成為一個(gè)記錄文檔段。控制文件的大小在創(chuàng)建時(shí)即被確定,其中各個(gè)記錄文檔段大小也是固定的。例如,在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)通過(guò)MAXLOGFILES子句設(shè)定數(shù)據(jù)庫(kù)中最多的重做日志文件數(shù)量,那么在控制文件中就會(huì)為L(zhǎng)OGFILE記錄文檔分配相應(yīng)的存儲(chǔ)空間。
查詢控制文件的信息字典視圖說(shuō)明V$CONTROLFILE包含所有控制文件的名稱和狀態(tài)信息V$CONTROLFILE_RECORD_SECTION包含控制文件中各個(gè)記錄文檔段的信息V$PARAMETER包含了系統(tǒng)的所有初始化參數(shù),從中可以查詢參數(shù)CONTROL_FILES值管理重做日志文件本講大綱:1、重做日志文件概述
2、增加日志組及其成員
3、刪除重做日志
4、更改重做日志的位置或名稱
5、查看重做日志信息
重做日志文件概述1.日志文件的內(nèi)容及數(shù)據(jù)恢復(fù)重做日志文件由重做記錄組成,重做記錄又稱為重做條目,它由一組變更向量組成。每個(gè)變更向量都記錄了數(shù)據(jù)庫(kù)中某個(gè)數(shù)據(jù)塊所做的修改。2.寫入重做日志文件在Oracle中,用戶對(duì)數(shù)據(jù)庫(kù)所做的修改首先被保存在內(nèi)存沖,這樣可以提高數(shù)據(jù)庫(kù)的性能,因?yàn)閷?duì)內(nèi)存中的數(shù)據(jù)進(jìn)行操作要比對(duì)磁盤中的數(shù)據(jù)進(jìn)行操作快的多。
1.添加新的重做日志文件組在Oracle數(shù)據(jù)庫(kù)的日常管理中,為了防止后臺(tái)進(jìn)程LGWR等待寫入日志組,數(shù)據(jù)庫(kù)管理員必須選擇合適的日志組個(gè)數(shù)。增加重做日志文件組可以使用ALTERDATABASEADDLOGFILE語(yǔ)句。2.創(chuàng)建日志成員文件如果某個(gè)日志組中的所有日志成員都被損壞了,那么當(dāng)后臺(tái)進(jìn)程LGWR切換到該日志組時(shí),Oracle會(huì)停止工作,并對(duì)該數(shù)據(jù)庫(kù)執(zhí)行不完全恢復(fù),為此數(shù)據(jù)庫(kù)管理員需要向該日志組中添加一個(gè)或多個(gè)日志成員。為重做日志組添加新的成員,需要使用ALTERDATABASEADDLOGMEMBER語(yǔ)句。增加日志組及其成員1.刪除日志成員要?jiǎng)h除一個(gè)日志成員文件,可以使用“ALTERDATABASEDROPLOGFILEMEMBER”語(yǔ)句。2.刪除日志文件組如果某個(gè)日志文件組不再需要使用,可以將整個(gè)日志組刪除;或者當(dāng)日志組大小不合適時(shí),由于已經(jīng)存在的日志組的大小不能改變,就需要重新建立日志組,在重新建立日志組之前,就需要?jiǎng)h除大小不合適的原日志組。刪除一個(gè)日志組時(shí),其中的成員文件也將被刪除。刪除重做日志在重做日志文件創(chuàng)建后,有時(shí)候可能需要改變它們的名稱或位置。比如,某一個(gè)日志文件最初被放置在D盤上,由于D盤的空間并不足夠大,隨著應(yīng)用系統(tǒng)業(yè)務(wù)量的不斷增加,D盤經(jīng)常發(fā)生剩余空間不足的情況,這時(shí)候數(shù)據(jù)庫(kù)管理員就需要把D盤上的日志文件移動(dòng)到其它大容量的磁盤分區(qū)中,針對(duì)這種情況,我們來(lái)看一下它的具體實(shí)現(xiàn)步驟。更改重做日志的位置或名稱
對(duì)于數(shù)據(jù)庫(kù)管理員而言,經(jīng)常查看日志文件是其一項(xiàng)必要的工作內(nèi)容,用以了解數(shù)據(jù)庫(kù)的運(yùn)行情況。要了解Oracle數(shù)據(jù)庫(kù)的日志文件信息,可以查詢?nèi)缦卤硭镜娜齻€(gè)常用數(shù)據(jù)字典視圖。
查看重做日志信息字典視圖說(shuō)明V$LOG顯示控制文件中的日志文件信息V$LOGFILE日志組合日志成員信息V$LOG_HISTORY日志歷史信息管理歸檔日志文件本講大綱:1、日志模式模式分類2、管理歸檔操作3、設(shè)置歸檔文件位置4、查看歸檔日志信息日志模式模式分類雖然歸檔日志文件可以保存重做日志文件中即將被覆蓋的記錄,但它并不是總起作用的,這樣要看Oracle數(shù)據(jù)庫(kù)所設(shè)置的日志模式,通常Oracle有兩種日志模式:第一種是非歸檔日志模式(NOARCHIVELOG),第二種是歸檔日志模式(ARCHIVELOG)。在非歸檔日志模式下,原日志文件的內(nèi)容會(huì)被新的日志內(nèi)容所覆蓋;在歸檔日志模式下,Oracle會(huì)首先對(duì)原日志文件進(jìn)行歸檔存儲(chǔ),且在歸檔未完成之前不允許覆蓋原有日志。默認(rèn)情況下,Oracle數(shù)據(jù)庫(kù)處于非歸檔日志模式,這樣重做日志文件中被覆蓋掉的日志記錄就不會(huì)被寫入到歸檔日志文件中。根據(jù)Oracle數(shù)據(jù)庫(kù)對(duì)應(yīng)的應(yīng)用系統(tǒng)的要求,用戶可以把數(shù)據(jù)庫(kù)的日志模式切換到歸檔模式,反之亦可操作。要實(shí)現(xiàn)數(shù)據(jù)庫(kù)在歸檔模式與非歸檔模式之間進(jìn)行切換,可以使用ALTERDATABASEARCHIVELOG或NOARCHIVELOG語(yǔ)句。管理歸檔操作
歸檔日志文件保存的位置稱為歸檔目標(biāo),用戶可以為數(shù)據(jù)庫(kù)設(shè)置多個(gè)歸檔目標(biāo),與設(shè)置控制文件和重做日志文件一樣,不同的歸檔目標(biāo)最好位于不同的磁盤中,以緩解歸檔操作時(shí)磁盤的I/O瓶頸。
歸檔目標(biāo)在初始化參數(shù)LOG_ARCHIVE_DEST_n中進(jìn)行設(shè)置,其中n為1到10的整數(shù),即可以為數(shù)據(jù)庫(kù)指定1到10個(gè)歸檔目標(biāo)。在進(jìn)行歸檔時(shí),Oracle會(huì)將重做日志文件組以相同的方式歸檔到每一個(gè)歸檔目標(biāo)中。在設(shè)置歸檔目標(biāo)時(shí),可以指定本地機(jī)器作為歸檔目標(biāo)(LOCATION),也可以選擇遠(yuǎn)程服務(wù)器作為歸檔目標(biāo)(SERVER)。設(shè)置歸檔文件位置
查看歸檔日志信息主要有兩種方法:一種是使用數(shù)據(jù)字典和動(dòng)態(tài)性能視圖;另一種是使用ARCHIVELOGLIST命令,下面分別進(jìn)行講解。(1)使用數(shù)據(jù)字典和動(dòng)態(tài)性能視圖(2)使用ARCHIVELOGLIST命令在SQL*Plus環(huán)境中,使用ARCHIVELOGLIST命令可以顯示當(dāng)前數(shù)據(jù)庫(kù)的歸檔信息。查看歸檔日志信息Oracle磁盤空間管理中的最高邏輯層是表空間(TABLESPACE),它的下一層是段(SEGMENT),并且一個(gè)段只能駐留在一個(gè)表空間內(nèi)。段的下一層就是盤區(qū),一個(gè)或多個(gè)盤區(qū)(EXTENT)可以組成一個(gè)段,并且每個(gè)盤區(qū)只能駐留在一個(gè)數(shù)據(jù)文件中。如果一個(gè)段跨越多個(gè)數(shù)據(jù)文件,它就只能由多個(gè)駐留在不同數(shù)據(jù)文件中的盤區(qū)構(gòu)成。盤區(qū)的下一層就是數(shù)據(jù)塊,它也是磁盤空間管理中邏輯劃分的最底層,一組連續(xù)的數(shù)據(jù)塊可以組成一個(gè)盤區(qū)。下圖展示了數(shù)據(jù)庫(kù)、表空間、數(shù)據(jù)文件、段、盤區(qū)、數(shù)據(jù)塊及操作系統(tǒng)塊之間的相互關(guān)系。表空間與數(shù)據(jù)文件的關(guān)系Oracle11g的默認(rèn)表空間本講大綱:1、SYSTEM表空間2、SYSAUX表空間SYSTEM表空間
Oracle數(shù)據(jù)庫(kù)的每個(gè)版本都使用SYSTEM表空間存放內(nèi)部數(shù)據(jù)和數(shù)據(jù)字典,SYSTEM表空間主要存放SYS用戶的各個(gè)對(duì)象和其他用戶的少量對(duì)象。用戶可以從DBA_SEGMENTS數(shù)據(jù)字典中查詢到某個(gè)表空間所存放的數(shù)據(jù)對(duì)象及其類型(如,索引、表、簇等)和擁有者。
SYSTEM表空間主要用于存放Oracle系統(tǒng)內(nèi)部的數(shù)據(jù)字典,而SYSAUX表空間充當(dāng)SYSTEM的輔助表空間,主要用于存儲(chǔ)除數(shù)據(jù)字典以外的其他數(shù)據(jù)對(duì)象,它在一定程度上降低了SYSTEM表空間的負(fù)荷。SYSAUX表空間創(chuàng)建表空間本講大綱:1、創(chuàng)建表空間的語(yǔ)法
2、通過(guò)本地化管理方式創(chuàng)建表空間
3、通過(guò)段空間管理方式創(chuàng)建表空間
4、創(chuàng)建非標(biāo)準(zhǔn)塊表空間
5、建立大文件表空間
4、創(chuàng)建非標(biāo)準(zhǔn)塊表空間
5、建立大文件表空間
3、通過(guò)段空間管理方式創(chuàng)建表空間
4、創(chuàng)建非標(biāo)準(zhǔn)塊表空間
5、建立大文件表空間
2、通過(guò)本地化管理方式創(chuàng)建表空間
3、通過(guò)段空間管理方式創(chuàng)建表空間
4、創(chuàng)建非標(biāo)準(zhǔn)塊表空間
5、建立大文件表空間
1、創(chuàng)建表空間的語(yǔ)法
2、通過(guò)本地化管理方式創(chuàng)建表空間
3、通過(guò)段空間管理方式創(chuàng)建表空間
4、創(chuàng)建非標(biāo)準(zhǔn)塊表空間
5、建立大文件表空間
創(chuàng)建表空間的語(yǔ)法創(chuàng)建表空間的語(yǔ)法如下:CREATE[SMALLFILE/BIGFILE]TABLESPACEtablespace_nameDATAFILE‘/path/filename’SIZEnum[k/m]REUSE[,’/path/filename’SIZEnum[k/m]REUSE][,…][AUTOEXTEND[ON|OFF]NEXTnum[k/m][MAXSIZE[UNLIMITED|num[k/m]]]][MININUMEXTENTnum[k/m]][DEFAULTSTORAGEstorage][ONLINE|OFFLINE][LOGGING|NOLOGGING][PERMANENT|TEMPORARY][EXTENTMANAGEMENTDICTIONARY|LOCAL[AUTOALLOCATE|UNIFORMSIZEnum[k/m]]]]本地化表空間管理使用位圖跟蹤表空間所對(duì)應(yīng)的數(shù)據(jù)文件的自由空間和塊的使用狀態(tài),位圖中的每個(gè)單元對(duì)應(yīng)一個(gè)塊或一組塊。當(dāng)分配或釋放一個(gè)擴(kuò)展時(shí),Oracle會(huì)改變位圖的值以指示該快的狀態(tài)。這些位圖值的改變不會(huì)產(chǎn)生回滾信息,因?yàn)樗鼈儾桓聰?shù)據(jù)字典的任何表。
通過(guò)本地化管理方式創(chuàng)建表空間1.手工段空間管理方式
手工段空間管理方式是為了往后兼容而保留的,它使用自由塊列表和PCT_FREE與PCT_USED參數(shù)來(lái)標(biāo)識(shí)可供插入操作使用的數(shù)據(jù)塊。
在每個(gè)INSERT或UPDATE操作后,數(shù)據(jù)庫(kù)都會(huì)比較該數(shù)據(jù)塊中的剩余自由空間與該段的PCT_FREE設(shè)置。如果數(shù)據(jù)塊的剩余自由空間少于PCT_FREE自由空間(也就是說(shuō)剩余空間已經(jīng)進(jìn)入系統(tǒng)的下限設(shè)置),則數(shù)據(jù)庫(kù)就會(huì)從自由塊列表上將其取下,不再對(duì)其進(jìn)行插入操作。剩余的空余空間保留給可能會(huì)增大該數(shù)據(jù)塊中行大小的UPDATE操作。2.自動(dòng)段空間管理方式如果采用自動(dòng)段空間管理方式,那么數(shù)據(jù)庫(kù)會(huì)使用位圖而不是自由列表來(lái)標(biāo)識(shí)哪些數(shù)據(jù)塊可以用于插入操作,哪些數(shù)據(jù)塊需要從自由塊列表上將其取下。此時(shí),表空間段的PCT_FREE和PCT_USED參數(shù)會(huì)被自動(dòng)忽略。通過(guò)段空間管理方式創(chuàng)建表空間
在Oracle數(shù)據(jù)庫(kù)中,通常的塊大小為8192字節(jié),即8KB,但Oracle11g允許創(chuàng)建塊大小與基本塊不同的表空間,塊大小可由創(chuàng)建表空間時(shí)的blocksize參數(shù)指定,這樣有利于存儲(chǔ)不同大小的對(duì)象,但用戶需要注意以下三點(diǎn):(1)表空間的非標(biāo)準(zhǔn)塊的大小為基本塊的倍數(shù)。比如,大小為16KB,64KB,128KB。(2)Oracle11g通常使用SGA自動(dòng)共享內(nèi)存管理,因此需要設(shè)置初始化參數(shù)db_16k_cache_size=16K。(3)這種塊較大的表空間通常用來(lái)存放大對(duì)象(LOB)類型。創(chuàng)建非標(biāo)準(zhǔn)塊表空間
從Oracle11g版本開始,引進(jìn)了一個(gè)新的表空間類型——大文件(BIGFILE)。與以前版本的最多可由1022個(gè)文件組成的表空間不同;大文件表空間存放在一個(gè)單一的數(shù)據(jù)文件中,并且它需要更大的磁盤容量來(lái)存放數(shù)據(jù);大文件表空間可以根據(jù)選擇的塊的大小變化,從32TB增至128TB。
大文件表空間是為超大型數(shù)據(jù)庫(kù)而設(shè)計(jì)的。當(dāng)一個(gè)超大型數(shù)據(jù)庫(kù)具有上千個(gè)讀/寫數(shù)據(jù)文件時(shí),必須更新數(shù)據(jù)文件頭部(比如檢查點(diǎn))的操作可能會(huì)花費(fèi)相當(dāng)長(zhǎng)的時(shí)間。如果降低數(shù)據(jù)文件的數(shù)量,那么,這些操作完成起來(lái)就可能會(huì)快的多。創(chuàng)建一個(gè)大文件表空間,只需要在CREATE語(yǔ)句中使用BIGFILE關(guān)鍵字即可。建立大文件表空間維護(hù)表空間與數(shù)據(jù)文件本講大綱:1、設(shè)置默認(rèn)表空間2、更改表空間的狀態(tài)3、重命名表空間4、刪除表空間5、維護(hù)表空間中的數(shù)據(jù)文件設(shè)置默認(rèn)表空間
更改默認(rèn)臨時(shí)表空間需要使用ALTERDATABASEDEFAULTTEMPRORYTABLESPACE語(yǔ)句,更改默認(rèn)永久表空間需要使用ALTERDATABASEDEFAULTTABLESPACE語(yǔ)句。更改表空間的狀態(tài)表空間有只讀和可讀寫兩種狀態(tài),若設(shè)置某個(gè)表空間為只讀狀態(tài),則用戶就不能夠?qū)υ摫砜臻g中的數(shù)據(jù)進(jìn)行DML操作(INSERT、UPDATE、DELETE),但對(duì)某些對(duì)象的刪除操作還是可以進(jìn)行的,比如,索引和目錄就可以被刪除掉;若設(shè)置某個(gè)表空間為可讀寫狀態(tài),則用戶就可以對(duì)表空間中的數(shù)據(jù)進(jìn)行任何正常的操作,這也是表空間的默認(rèn)狀態(tài)。重命名表空間
在Oracle11g以前的版本中,表空間無(wú)法重命名,但Oracle11g提供了對(duì)表空間進(jìn)行重命名的新功能,這對(duì)于一般的管理和移植來(lái)說(shuō)是非常方便的。但要注意的是:數(shù)據(jù)庫(kù)管理員只能對(duì)普通的表空間進(jìn)行更名,不能夠?qū)YSTEM和SYSAUX表空間進(jìn)行重命名,也不能對(duì)已經(jīng)處于OFFLINE狀態(tài)的表空間進(jìn)行重命名。命名表空間需要使用ALTERTABLESPACE…RENAMETO語(yǔ)句。刪除表空間當(dāng)Oracle系統(tǒng)采用OracleManagedFiles方式管理文件時(shí),刪除某
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)老院環(huán)境衛(wèi)生與綠化制度
- 《個(gè)性設(shè)計(jì)模板》課件
- 《目標(biāo)市場(chǎng)定位分析》課件
- 2024年度外聘講師知識(shí)產(chǎn)權(quán)保護(hù)與收益分配合同3篇
- 2024年生態(tài)修復(fù)項(xiàng)目育林施工協(xié)議模板版B版
- 腦卒中康復(fù)治療方案
- 2024年版:戴悅與周日的特許經(jīng)營(yíng)合同
- 2025年焦作貨運(yùn)資格證模擬考試題
- 2024年標(biāo)準(zhǔn)建筑工程戰(zhàn)略合作協(xié)議樣式版B版
- 2025年天津年貨運(yùn)從業(yè)資格證考試題庫(kù)
- 2024解讀《弘揚(yáng)教育家精神》全文
- 《稅費(fèi)計(jì)算與申報(bào)》課件-居民個(gè)人平時(shí)預(yù)扣預(yù)繳稅額計(jì)算
- 美團(tuán)合作協(xié)議書范本(2024版)
- 第21課《小圣施威降大圣》課件 2024-2025學(xué)年統(tǒng)編版語(yǔ)文七年級(jí)上冊(cè)
- AQ/T 2061-2018 金屬非金屬地下礦山防治水安全技術(shù)規(guī)范(正式版)
- 智能工廠智能工廠績(jī)效評(píng)估與指標(biāo)體系
- 天津市部分區(qū)2022-2023學(xué)年七年級(jí)上學(xué)期期末練習(xí)生物試題
- 小學(xué)三年級(jí)-安全知識(shí)考試試題-(附答案)-
- 醫(yī)院門診醫(yī)生績(jī)效考核標(biāo)準(zhǔn)及評(píng)分細(xì)則
- 教師跟崗培訓(xùn)匯報(bào)
- 2024車載定位系統(tǒng)技術(shù)要求及試驗(yàn)方法 第1部分:衛(wèi)星定位
評(píng)論
0/150
提交評(píng)論