Oracle數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)(華為內(nèi)部培訓(xùn)資料)_第1頁(yè)
Oracle數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)(華為內(nèi)部培訓(xùn)資料)_第2頁(yè)
Oracle數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)(華為內(nèi)部培訓(xùn)資料)_第3頁(yè)
Oracle數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)(華為內(nèi)部培訓(xùn)資料)_第4頁(yè)
Oracle數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)(華為內(nèi)部培訓(xùn)資料)_第5頁(yè)
已閱讀5頁(yè),還剩74頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課程課程 IL001100ORACLE數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)ISSUE1.0開(kāi)心開(kāi)心Java整理整理IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0目錄i目錄課程說(shuō)明.1課程介紹.1課程目標(biāo).1相關(guān)資料.1第 1 章 ORACLE 數(shù)據(jù)庫(kù)概述.21.1 產(chǎn)品概述.21.1.1 產(chǎn)品簡(jiǎn)介 .21.1.2 基本概念 .31.2 ORACLE 系統(tǒng)結(jié)構(gòu).41.2.2 ORACLE 物理結(jié)構(gòu) .41.2.3 系統(tǒng)全局區(qū).61.2.4 進(jìn)程.81.3 存儲(chǔ)管理.91.3.2 邏輯結(jié)構(gòu) .101.3.3 表(Table).141.3.4 視圖(View).181.3.5 索引(Ind

2、ex).181.3.6 同義詞(Synonym).191.3.7 序列(Sequence).191.3.8 數(shù)據(jù)庫(kù)鏈(Database Link).20第 2 章 管理 ORACLE 數(shù)據(jù)庫(kù).212.1 基本概念.212.1.1 數(shù)據(jù)字典 .212.1.2 事務(wù)管理 .232.1.3 數(shù)據(jù)庫(kù)管理員(DBA) .242.1.4 ORACLE 的四種狀態(tài).252.2 SQL*Plus 方式的 ORACLE 數(shù)據(jù)庫(kù)啟動(dòng)和關(guān)閉 .262.2.1 啟動(dòng)數(shù)據(jù)庫(kù).262.2.2 關(guān)閉數(shù)據(jù)庫(kù).262.3 svrmgrl 方式的 ORACLE 數(shù)據(jù)庫(kù)啟動(dòng)和關(guān)閉 .282.3.1 啟動(dòng)數(shù)據(jù)庫(kù).282.3.2 關(guān)閉

3、數(shù)據(jù)庫(kù).302.4 應(yīng)用開(kāi)發(fā)工具(SQL * Plus).312.4.1 SQL .322.4.2 PL/SQL.33IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0目錄ii2.4.3 數(shù)據(jù)庫(kù)管理工具.362.5 ORACLE 用戶(hù)及權(quán)限管理 .362.5.1 ORACLE 的用戶(hù)管理.372.5.2 ORACLE 的權(quán)限管理.382.6 ORACLE 數(shù)據(jù)庫(kù)的備份與恢復(fù).392.6.1 Export 轉(zhuǎn)入程序.402.6.2 Import 轉(zhuǎn)入程序.422.6.3 增量卸出/裝入.44第 3 章 ORACLE 數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)應(yīng)用.463.1 SQL*Net 產(chǎn)品介紹.463.2

4、 配置客戶(hù)機(jī)/服務(wù)器結(jié)構(gòu) .473.2.1 配置 listener.ora.473.2.2 配置 tnsnames.ora 文件.48第 4 章 常用任務(wù)示例.514.1 如何恢復(fù)被誤刪的數(shù)據(jù)文件.514.2 如何殺掉吊死 session.514.3 如何修改字符集.514.4 如何追加表空間.514.5 如何加大表的 maxextents 值.524.6 如何查詢(xún)無(wú)效對(duì)象.524.7 怎樣分析 SQL 語(yǔ)句是否用到索引.524.8 怎樣判斷是否存在回滾段競(jìng)爭(zhēng).534.9 怎樣手工跟蹤函數(shù)/存儲(chǔ)過(guò)程執(zhí)行情況.544.10 多種業(yè)務(wù)使用同一數(shù)據(jù)庫(kù)如何分配回滾段.544.11 怎樣倒出、倒入文本數(shù)

5、據(jù).544.11.1 倒出.544.11.2 倒入.554.12 如何更新當(dāng)前數(shù)據(jù)庫(kù)日志備份方式為 archive .564.13 Unix 環(huán)境下如何實(shí)現(xiàn)自動(dòng)備份 .564.13.1 設(shè)置運(yùn)行環(huán)境.564.13.2 倒出數(shù)據(jù) .564.13.3 異地備份 .574.13.4 啟動(dòng)備份進(jìn)程.584.14 怎樣分析 ORACLE 故障.59IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0目錄iii小結(jié).61附錄 A ORACLE 數(shù)據(jù)字典與視圖.62附錄 B 動(dòng)態(tài)性能表.68附錄 C SQL 語(yǔ)言運(yùn)算符與函數(shù).70IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0課

6、程說(shuō)明1課程說(shuō)明課程說(shuō)明課程介紹本課程對(duì)應(yīng)的產(chǎn)品版本為:Oracle 8.1.7。課程目標(biāo)完成本課程的學(xué)習(xí)后,您應(yīng)該能夠: 掌握 ORACLE 數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)中物理結(jié)構(gòu)、系統(tǒng)全局區(qū)和進(jìn)程的概念掌握 ORACLE 數(shù)據(jù)庫(kù)的存儲(chǔ)管理知識(shí)掌握管理 ORACLE 數(shù)據(jù)庫(kù)的方法了解 ORACLE 數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)應(yīng)用相關(guān)資料ORACLE 公司發(fā)布的相關(guān)資料。IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述2第第 1 章章 ORACLE 數(shù)據(jù)庫(kù)概述數(shù)據(jù)庫(kù)概述1.1 產(chǎn)品概述1.1.1 產(chǎn)品簡(jiǎn)介數(shù)據(jù)庫(kù)技術(shù)產(chǎn)生于 60 年代末 70 年代初,到現(xiàn)在比較知名的大型數(shù)據(jù)庫(kù)系統(tǒng)有

7、 ORACLE、Sybase、Informix、DB2(IBM 公司的)、Ingress、RDB、SQL Server 等。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)。1986 年,ORACLE 推出具有分布式結(jié)構(gòu)的版本5,可將數(shù)據(jù)和應(yīng)用駐留在多臺(tái)計(jì)算機(jī)上,而相互間的通信是透明的。1988年,推出版本 6(V6.0)可帶事務(wù)處理選項(xiàng),提高了事務(wù)處理的速度。1992年推出了版本 7,可帶過(guò)程數(shù)據(jù)庫(kù)選項(xiàng)、分布式數(shù)據(jù)庫(kù)選項(xiàng)和并行服務(wù)器選項(xiàng),稱(chēng)為 ORACLE7 數(shù)據(jù)庫(kù)

8、管理系統(tǒng),它釋放出了開(kāi)放的關(guān)系型系統(tǒng)的真正潛力。目前,新版本為 ORACLE9i,通用版本為 ORACLE8i。版本 Oracle 8i 是在企業(yè)內(nèi)和因特網(wǎng)上開(kāi)發(fā)、布署和管理應(yīng)用高移動(dòng)性和可伸縮性的數(shù)據(jù)庫(kù)。Oracle 8i 最主要的新特性是在數(shù)據(jù)庫(kù)中包括 J a v a 和因特網(wǎng)能力。Oracle 8i 還包括能夠管理和訪問(wèn)多媒體(視頻、音頻、圖像、文本、空間)的 Oracle interMedia 。Oracle 8i 還包括 Oracle We b D B ,這個(gè) We b 開(kāi)發(fā)環(huán)境使開(kāi)發(fā)者能建立使用標(biāo)準(zhǔn)的 We b 瀏覽器和 Oracle 8i 數(shù)據(jù)庫(kù)的動(dòng)態(tài)的、數(shù)據(jù)驅(qū)動(dòng)的 We b 網(wǎng)

9、站。ORACLE8i 是一種通用叫法,它包括許多更細(xì)版本,如 ORACLE8.1.5、ORACLE8.1.6、ORACLE8.1.7,華為公司TELLIN U-NICA 產(chǎn)品使用版本 ORACLE8.1.7 序列。 說(shuō)明:“i”表示 ORACLE 數(shù)據(jù)庫(kù)與 internet 的結(jié)合。ORACLE 用多達(dá) 5 個(gè)號(hào)碼來(lái)完全識(shí)別一個(gè)版本,如“8.1.7.2.3”,命名方法如下:序號(hào)值含義第一位8版本號(hào)(Version),是主要的標(biāo)識(shí)符,表示軟件的主要版本,包含顯著的新功能,例如:版本 8(也標(biāo)識(shí)為版本 8.0)。第二位1新特征版本號(hào)(New Features Release Number),該位表

10、示新IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述3特征版本級(jí),例如:版本 8.1。第三位7維護(hù)版本號(hào)(Maintenance Release Number),該位表示一個(gè)維護(hù)版本級(jí)。也可能包含一些新特征,例如:版本 8.0.4、8.1.7。第四位2通用補(bǔ)丁級(jí)號(hào)(Generic Patch Set Number),該位表示一個(gè)通用補(bǔ)丁級(jí)。補(bǔ)丁級(jí)可以跨越所有操作系統(tǒng)和硬件平臺(tái)使用,例如:補(bǔ)丁級(jí)版本 8.1.7.2第五位3專(zhuān)用平臺(tái)補(bǔ)丁級(jí)(Platform Specific Patch Set Number),該位表示一個(gè)只能應(yīng)用到特定的操作系統(tǒng)和硬件平臺(tái)的

11、補(bǔ)丁級(jí),例如:補(bǔ)丁級(jí) 8.1.7.2.3??梢杂萌缦碌?SQL 語(yǔ)句得到 ORACLE 版本信息:SQL select * from product_component_version;1.1.2 基本概念要了解 ORACLE 數(shù)據(jù)庫(kù),需要先了解以下基本概念:數(shù)據(jù)庫(kù):是一個(gè)數(shù)據(jù)集合,我們大多數(shù)情況下講的數(shù)據(jù)庫(kù)概念不僅是指物理數(shù)據(jù),還指內(nèi)存、進(jìn)程對(duì)象的組合。ORACLE 數(shù)據(jù)庫(kù)都將數(shù)據(jù)存儲(chǔ)在文件中,在其內(nèi)部,數(shù)據(jù)庫(kù)結(jié)構(gòu)提供了數(shù)據(jù)對(duì)文件的邏輯映射,允許不同類(lèi)型的數(shù)據(jù)分開(kāi)存放。這些邏輯劃分稱(chēng)為表空間。關(guān)于表空間的概念將在下文中介紹。表空間(Tablespace):是數(shù)據(jù)庫(kù)的邏輯劃分,每個(gè)數(shù)據(jù)庫(kù)至少有

12、一個(gè)表空間(system 表空間)。數(shù)據(jù)文件(DataFile):每個(gè)表空間由同一磁盤(pán)上的一個(gè)或多個(gè)文件組成,這些文件叫數(shù)據(jù)文件。建立新表空間需要建立新的數(shù)據(jù)文件。實(shí)例(Instance):也稱(chēng)為服務(wù)器(server),是存取和控制數(shù)據(jù)庫(kù)的軟件機(jī)制,它由系統(tǒng)全局區(qū) SGA 和后臺(tái)進(jìn)程組成。ORACLE 數(shù)據(jù)庫(kù)啟動(dòng)時(shí),實(shí)際是啟動(dòng) ORACLE 實(shí)例,(安裝并打開(kāi)數(shù)據(jù)庫(kù))。一個(gè)數(shù)據(jù)庫(kù)可以被多個(gè)實(shí)例訪問(wèn)(這是 ORACLE 的并行服務(wù)器選項(xiàng))。決定實(shí)例的大小及組成的參數(shù)存儲(chǔ)在 init.ora 文件中,實(shí)例啟動(dòng)時(shí)需要讀這個(gè)文件,并且在運(yùn)行時(shí)可以由數(shù)據(jù)庫(kù)管理員修改,但要在下次啟動(dòng)實(shí)例時(shí)才會(huì)起作用。 說(shuō)

13、明:實(shí)例名字可以由環(huán)境變量 ORACLE_SID 來(lái)定義。實(shí)例的 init.ora 文件名通常包含該實(shí)例的名字,格式為 initSID.ora:如一個(gè)實(shí)例的名字(SID)為 ora817,則 init.ora 文件名通常為 initora817.ora。IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述41.2 ORACLE 系統(tǒng)結(jié)構(gòu)任何硬件平臺(tái)或操作系統(tǒng)下的 ORACLE 體系結(jié)構(gòu)是相同的,包括如下三個(gè)方面:(1) 物理結(jié)構(gòu):數(shù)據(jù)文件,日志文件,控制文件,參數(shù)文件。(2) 系統(tǒng)全局區(qū)(SGA):共享池,數(shù)據(jù)緩沖區(qū),日志緩沖區(qū),字典緩沖區(qū)。(3) 進(jìn)程:用

14、戶(hù)進(jìn)程,服務(wù)器進(jìn)程,后臺(tái)進(jìn)程。具體結(jié)構(gòu)如圖 1-1 所示。Oracle8RDBMS 圖 1-1 ORACLE 數(shù)據(jù)庫(kù)體系結(jié)構(gòu)1.2.2 ORACLE 物理結(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)是由構(gòu)成數(shù)據(jù)庫(kù)的操作系統(tǒng)文件所決定。每一個(gè) ORACLE 數(shù)據(jù)庫(kù)是由四種類(lèi)型的文件組成:數(shù)據(jù)文件、日志文件、控制文件和參數(shù)文件。數(shù)據(jù)庫(kù)的文件為數(shù)據(jù)庫(kù)信息提供真正的物理存儲(chǔ)。ORACLE 數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)由四類(lèi)文件組成1. 數(shù)據(jù)文件數(shù)據(jù)文件是物理存儲(chǔ) ORACLE 數(shù)據(jù)庫(kù)數(shù)據(jù)的文件,每一個(gè) ORACLE 數(shù)據(jù)庫(kù)有一

15、個(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ù)文件有下列特征:IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述5每一個(gè)數(shù)據(jù)文件只與一個(gè)數(shù)據(jù)庫(kù)聯(lián)系一個(gè)表空間可包含一個(gè)或多個(gè)數(shù)據(jù)文件圖 1-2 給出數(shù)據(jù)庫(kù)、表空間及數(shù)據(jù)文件之間關(guān)系。圖 1-2 數(shù)據(jù)庫(kù)、表空間及數(shù)據(jù)文件之間關(guān)系2. 日志文件每一個(gè)數(shù)據(jù)庫(kù)有兩個(gè)或多個(gè)日志文件(redo log file)的組,每一個(gè)日志文件組用于收集數(shù)據(jù)庫(kù)日志。日志的主要功能是記錄對(duì)數(shù)據(jù)所做的修改,所以對(duì)數(shù)據(jù)庫(kù)做的

16、全部修改是記錄在日志中。日志文件的主要作用是保護(hù)數(shù)據(jù)庫(kù)以防止故障。為了防止日志文件本身的故障,ORACLE 允許鏡象日志(mirrored redo log),可以在不同磁盤(pán)上維護(hù)兩個(gè)或多個(gè)日志副本。日志文件中的信息僅在系統(tǒng)故障或介質(zhì)故障時(shí)用來(lái)恢復(fù)數(shù)據(jù)庫(kù)。3. 控制文件每一個(gè) 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),允許控制文件被鏡象。每一個(gè) 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ù)

17、的物理組成更改時(shí),ORACLE 自動(dòng)更改該數(shù)據(jù)庫(kù)的控制文件。數(shù)據(jù)恢復(fù)時(shí),也要使用控制文件。IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述64. 參數(shù)文件是一個(gè)文本文件,可直接使用文本編輯器對(duì)其內(nèi)容進(jìn)行修改,該文件只在建立數(shù)據(jù)庫(kù)和啟動(dòng)實(shí)例時(shí)被訪問(wèn),修改該文件后必須重啟實(shí)例才生效。系統(tǒng)初始參數(shù)文件:init .ora生成的參數(shù)文件為:initSID.ora參數(shù)文件作用如下:設(shè)置 SGA 的大小。設(shè)置數(shù)據(jù)庫(kù)的全部缺省值。設(shè)置數(shù)據(jù)庫(kù)的范圍。在數(shù)據(jù)庫(kù)建立時(shí)定義數(shù)據(jù)庫(kù)的物理屬性。指定控制文件名和路徑。通過(guò)調(diào)整內(nèi)存結(jié)構(gòu),優(yōu)化數(shù)據(jù)庫(kù)性能。 說(shuō)明:ORACLE8.1.7

18、 版本數(shù)據(jù)庫(kù)實(shí)例參數(shù)文件“initSID.ora”是在安裝 ORACLE數(shù)據(jù)庫(kù)過(guò)程中產(chǎn)生的,一般情況下不需要手工修改。1.2.3 系統(tǒng)全局區(qū)SGA(System Global Area)是 ORACLE 系統(tǒng)為實(shí)例分配的一組共享緩沖存儲(chǔ)區(qū),用于存放數(shù)據(jù)庫(kù)數(shù)據(jù)和控制信息,以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的管理和操作,圖 1-3 給出實(shí)例與 SGA 及數(shù)據(jù)庫(kù)關(guān)系。數(shù)據(jù)庫(kù)實(shí)例1SGA+進(jìn)程實(shí)例2SGA+進(jìn)程數(shù)據(jù)文件數(shù)據(jù)庫(kù)實(shí)例1SGA+進(jìn)程實(shí)例2SGA+進(jìn)程數(shù)據(jù)文件圖 1-3 實(shí)例與 SGA 及數(shù)據(jù)庫(kù)關(guān)系SGA 分為以下幾個(gè)部分:(1) 共享池。(2) 數(shù)據(jù)塊緩沖區(qū)。(3) 日志緩沖區(qū)。(4) 字典緩沖區(qū)。IL00

19、1100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述7下面分別介紹: 說(shuō)明:SGA 的尺寸應(yīng)小于物理內(nèi)存的一半。在 ORACLE 系統(tǒng)中,所有用戶(hù)與 ORACLE 數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)交換都要經(jīng)過(guò)SGA 區(qū)。1.共享池(Shared Pool)由共享 SQL 區(qū)和數(shù)據(jù)字典區(qū)組成,參數(shù) shared_pool_size 確定共享池大小,共享 SQL 區(qū)包括:(1) SQL 或 PL/SQL 語(yǔ)句的文本。(1) SQL 或 PL/SQL 語(yǔ)句的語(yǔ)法分析形式。(2) SQL 或 PL/SQL 語(yǔ)句的執(zhí)行方案。 說(shuō)明:shared_pool_size=物理內(nèi)存(1520)%對(duì)于

20、 OPS 取下限。2.數(shù)據(jù)塊緩沖區(qū)用于存儲(chǔ)從數(shù)據(jù)文件中讀出的數(shù)據(jù),其大小由以下兩個(gè)參數(shù)決定:DB_BLOCK_SIZE 確定數(shù)據(jù)塊的大小,一般為 2K 或 4K。DB_BLOCK_BUFFERS 確定數(shù)據(jù)塊的數(shù)目。DB_BUFFERS=DB_BLOCK_BUFFERSDB_BLOCK_SIZE=物理內(nèi)存(1525)%, 對(duì)于 OPS 取上限。該值應(yīng)盡量大。3.日志緩沖區(qū)以記錄項(xiàng)的形式備份數(shù)據(jù)庫(kù)緩沖區(qū)中被修改的緩沖塊,這些記錄項(xiàng)將被寫(xiě)到日志文件中。日志緩沖區(qū)大小由參數(shù) LOG_BUFFER 確定4.字典緩沖區(qū)用于存放數(shù)據(jù)字典信息行。5.SGA 設(shè)置大小總原則在設(shè)置各參數(shù)調(diào)整 SGA 大小時(shí),應(yīng)保

21、證其小于物理內(nèi)存的一半。IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述8SGA 的計(jì)算方法如下:SGA=DB_BLOCK_BUFFERSDB_BLOCK_SIZE+SHARE_POOL_SIZE+SORT_AREA_SIZE+1M+3DB_BLOCK_SIZE(CPUs+2)PARALELL_MAX_SREVERS 說(shuō)明:OPS 才有最后一項(xiàng)。SORT_AREA_SIZE:排序區(qū),并發(fā)用戶(hù)數(shù)較多,需要排序時(shí)該值宜大。PARALELL_MAX_SREVERS:2CPU 個(gè)數(shù)4并發(fā)用戶(hù)數(shù)。對(duì)單 CPU不能修改此值。1.2.4 進(jìn)程進(jìn)程是操作系統(tǒng)中的一種機(jī)制

22、,它可執(zhí)行一系列的操作步驟(在有些操作系統(tǒng)中使用作業(yè)(JOB)或任務(wù)(TASK)的術(shù)語(yǔ)來(lái)表示進(jìn)程)。一個(gè)進(jìn)程通常有它自己的專(zhuān)用存儲(chǔ)區(qū)。ORACLE 實(shí)例有兩種類(lèi)型:?jiǎn)芜M(jìn)程實(shí)例和多進(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è)

23、進(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 程序(Pro*C 是一種開(kāi)發(fā)工具, 它把過(guò)程化語(yǔ)言 C 和非過(guò)程化語(yǔ)言 SQL 最完善地結(jié)合起來(lái), 具有完備的過(guò)程處理能力,又能完成任何數(shù)據(jù)庫(kù)的處理品任務(wù),使用戶(hù)可以通過(guò)編程完成各種類(lèi)型的報(bào)表。)或一個(gè)ORACLE 工具(如 SQL*PLUS),為用戶(hù)運(yùn)行的應(yīng)用建立一個(gè)用戶(hù)進(jìn)程。ORACLE 系統(tǒng)進(jìn)程又分為服務(wù)器進(jìn)程和后臺(tái)進(jìn)程。1. 服務(wù)器進(jìn)程用于處理用戶(hù)請(qǐng)求的進(jìn)程。處理過(guò)程如下:IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知

24、識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述9(1) 分析 SQL 命令并生成執(zhí)行方案。(2) 從數(shù)據(jù)緩沖區(qū)或磁盤(pán)中讀取數(shù)據(jù)。(3) 將執(zhí)行結(jié)果返回給用戶(hù)。2. 后臺(tái)進(jìn)程為所有數(shù)據(jù)庫(kù)用戶(hù)異步完成各種任務(wù),主要包括如下進(jìn)程(ora817 表示實(shí)例名):ora_reco_ora817恢復(fù)進(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)程

25、試圖建立同一遠(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。ora_dbw0_ora817數(shù)據(jù)庫(kù)寫(xiě)進(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)志為“弄臟”,此進(jìn)程的主要任務(wù)是將“弄臟”的緩沖區(qū)寫(xiě)入磁盤(pán),使緩沖區(qū)保持“干凈”。ora_pmon_ora817進(jìn)程監(jiān)控進(jìn)程:該進(jìn)程在用戶(hù)進(jìn)程出現(xiàn)故障時(shí)執(zhí)行進(jìn)程恢復(fù),負(fù)責(zé)清理內(nèi)存儲(chǔ)區(qū)和釋放該進(jìn)程所

26、使用的資源。例:它要重置活動(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)用。ora_lgwr_ora817日志寫(xiě)進(jìn)程:該進(jìn)程將日志緩沖區(qū)寫(xiě)入磁盤(pán)上的一個(gè)日志文件,它是負(fù)責(zé)管理日志緩沖區(qū)的一個(gè) ORACLE 后臺(tái)進(jìn)程。ora_ckpt_ora817檢查點(diǎn)寫(xiě)進(jìn)程:該進(jìn)程在檢查點(diǎn)出現(xiàn)時(shí),對(duì)全部數(shù)據(jù)文件的標(biāo)題進(jìn)行修改,指示該檢查點(diǎn)。ora_smon_ora817系統(tǒng)監(jiān)控進(jìn)程:該進(jìn)程實(shí)例啟動(dòng)時(shí)

27、執(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)用。1.3 存儲(chǔ)管理前面已經(jīng)提到過(guò),ORACLE 數(shù)據(jù)庫(kù)都將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)文件中,在其內(nèi)部,數(shù)據(jù)庫(kù)結(jié)構(gòu)提供了數(shù)據(jù)對(duì)數(shù)據(jù)文件的邏輯映射,允許不同類(lèi)型的數(shù)據(jù)分開(kāi)存IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述10放。這些邏輯劃分稱(chēng)為表空間,圖 1-4 給出了詳細(xì)的 ORACLE 數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu)圖。圖 1-4 ORACLE 存儲(chǔ)結(jié)構(gòu)圖對(duì)于用戶(hù),通常關(guān)心的是 ORACLE

28、 的邏輯結(jié)構(gòu),是在邏輯上是如何組成的,是如何存儲(chǔ)數(shù)據(jù)的,下面詳細(xì)介紹。1.3.2 邏輯結(jié)構(gòu)ORACLE 的邏輯結(jié)構(gòu)是由一個(gè)或多個(gè)表空間組成,一個(gè)數(shù)據(jù)庫(kù)劃分為一個(gè)或多個(gè)邏輯單位,該邏輯單位稱(chēng)為表空間(tablespace)。一個(gè)表空間可將相關(guān)的邏輯結(jié)構(gòu)組合在一起。一個(gè)表空間由一組分類(lèi)段組成。一個(gè)段由一組范圍組成。一個(gè)范圍由一批數(shù)據(jù)庫(kù)塊組成。一個(gè)數(shù)據(jù)庫(kù)塊對(duì)應(yīng)一個(gè)或多個(gè)物理塊。每一個(gè) ORACLE 數(shù)據(jù)庫(kù)包含有一個(gè)名為 SYSTEM 的表空間,在數(shù)據(jù)庫(kù)建立時(shí)自動(dòng)建立。在該表空間中包含有整個(gè)數(shù)據(jù)庫(kù)的系統(tǒng)信息數(shù)據(jù),最小的數(shù)據(jù)庫(kù)可只需要 SYSTEM 表空間。表空間利用增加數(shù)據(jù)文件可擴(kuò)大表空間,表空間的大

29、小為組成該表空間的數(shù)據(jù)文件的大小的和。ORACLE 數(shù)據(jù)庫(kù)中一表空間是由一個(gè)或多個(gè)物理數(shù)據(jù)文件組成,一個(gè)數(shù)據(jù)文件只可與一個(gè)表空間相IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述11聯(lián)系。當(dāng)為一表空間建立一數(shù)據(jù)文件時(shí),ORACLE 建立該文件,分配指定的磁盤(pán)空間容量。在數(shù)據(jù)文件初始建立后,所分配的磁盤(pán)不包含有任何數(shù)據(jù)。一個(gè)模式(schema)為模式對(duì)象(schema object)的一個(gè)集合,每一個(gè)數(shù)據(jù)庫(kù)用戶(hù)對(duì)應(yīng)一個(gè)模式。模式對(duì)象為直接引用數(shù)據(jù)庫(kù)數(shù)據(jù)的邏輯結(jié)構(gòu),模式對(duì)象包含如表、視圖、索引、同義詞等結(jié)構(gòu)。模式對(duì)象是邏輯數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),每一種模式對(duì)象在磁盤(pán)上

30、沒(méi)有一個(gè)相應(yīng)文件存儲(chǔ)其信息。一個(gè)模式對(duì)象邏輯地存儲(chǔ)在數(shù)據(jù)庫(kù)的一個(gè)表空間中,每一個(gè)對(duì)象的數(shù)據(jù)物理地包含在表空間的一個(gè)或多個(gè)數(shù)據(jù)文件中。例如:表、索引等模式對(duì)象,在指定表空間的數(shù)據(jù)文件上為該對(duì)象分配多少空間。圖 1-5 說(shuō)明模式對(duì)象、表空間和數(shù)據(jù)文件之間的關(guān)系。圖 1-5 模式對(duì)象、表空間和數(shù)據(jù)文件之間的關(guān)系 模式與表空間之間的關(guān)系為:一個(gè)表空間可包含不同模式的對(duì)象,而一個(gè)模式中的對(duì)象可包含在不同的表空間中。1. 數(shù)據(jù)庫(kù)塊數(shù)據(jù)庫(kù)塊(database block)是 ORACLE 邏輯分配空間的最底層,又稱(chēng)邏輯塊、頁(yè)或 ORACLE 塊。數(shù)據(jù)庫(kù)塊是數(shù)據(jù)庫(kù)使用和分配空間的最小單元,也可以說(shuō)是使用的最小

31、 I/O單元,一個(gè)數(shù)據(jù)塊與磁盤(pán)上指定的物理空間大小相一致,一個(gè)數(shù)據(jù)庫(kù)塊對(duì)應(yīng)一個(gè)或多個(gè)物理塊,塊的大小由參數(shù) db_block_size 確定。IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述12PCTFREE 和 PCTUSED 是開(kāi)發(fā)人員用來(lái)控制數(shù)據(jù)塊中可用插入和更新數(shù)據(jù)的空閑空間大小的參數(shù)。PCTFREE:設(shè)置數(shù)據(jù)塊中保持空閑的百分比。PCTUSED:當(dāng)數(shù)據(jù)塊空閑空間達(dá)到 PCTFREE 時(shí),此塊不允許插入數(shù)據(jù),只能修改或刪除塊中的行,更新時(shí)可能使數(shù)據(jù)塊空閑空間變大,已用數(shù)據(jù)空間變小,當(dāng)已用空間低于 PCTUSED 時(shí),則可以重新插入數(shù)據(jù)。PCTFR

32、EE 及 PCTUSED 的選擇:經(jīng)常做查詢(xún)(select)的表,應(yīng)使 PCTFREE 小些,盡量減少存儲(chǔ)空間浪費(fèi)。經(jīng)常做插入(insert)的表,應(yīng)使 PCTUSED 大一些。經(jīng)常做更新(update)的表,應(yīng)使 PCTFREE 大一些,給更新留出更大的空間,減少行移動(dòng)。 說(shuō)明:這兩個(gè)參數(shù)只能在創(chuàng)建、修改表和聚簇(數(shù)據(jù)段)時(shí)指定。另外,在創(chuàng)建、修改索引(索引段)時(shí)只能指定 PCTFREE 參數(shù)。經(jīng)常做插入的表設(shè)置舉例:經(jīng)常做插入的表設(shè)置舉例:create table COMMINFOR( SERIALNUMBER VARCHAR2(20) not null, ENTERHISTIME DAT

33、E not null, ACCEPTBEGINTIME DATE null , ACCEPTDURATION NUMBER(10) null , ACCEPTERNO VARCHAR2(4) null , CALLINGPHONENO VARCHAR2(20) null , ACCEPTID NUMBER(10) null , OPERATIONTYPE VARCHAR2(10) null , APPELLANTNAME VARCHAR2(16) null , CONTACTID NUMBER(10) null ,)IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE

34、數(shù)據(jù)庫(kù)概述13pctfree 10pctused 90initrans 2maxtrans 255TABLESPACE SERVICE_RPT_DAT;經(jīng)常做查詢(xún)的表設(shè)置舉例:經(jīng)常做查詢(xún)的表設(shè)置舉例:create table AUTH( AUTHID NUMBER(10) not null, DESCRIPTION VARCHAR2(50) null constraint PK_AUTH primary key (AUTHID)pctfree 10pctused 40TABLESPACE SERVICE_RPT_DAT;2. 范圍(Extent)數(shù)據(jù)庫(kù)存儲(chǔ)空間分配的邏輯單位,一個(gè)范圍由一組數(shù)據(jù)

35、塊組成,范圍是由段分配的,分配的第一個(gè)范圍稱(chēng)初始范圍,以后分配的范圍稱(chēng)增量范圍。Extent 是段中分配空間的邏輯單元。它有如下特性:一個(gè)或多個(gè)范圍構(gòu)成一個(gè)段。當(dāng)段增長(zhǎng)時(shí),范圍自動(dòng)添加到段中。DBA 可以手工把范圍加到一個(gè)段中。一個(gè)范圍不能跨數(shù)據(jù)文件,即一個(gè)擴(kuò)展只屬于一個(gè)數(shù)據(jù)文件。一個(gè)范圍由一片連續(xù)的 ORACLE block 構(gòu)成。每個(gè)段在定義時(shí)有許多存儲(chǔ)參數(shù)來(lái)控制范圍的分配,主要是 STORGAE 參數(shù),主要包括如下幾項(xiàng):INITIAL :分配給段的第一個(gè)范圍的字節(jié)數(shù),缺省為 5 個(gè)數(shù)據(jù)塊。NEXT:分配給段的下一個(gè)增量范圍的字節(jié)數(shù),缺省為 5 個(gè)數(shù)據(jù)塊。MAXEXTENTS :最大擴(kuò)展次

36、數(shù)。IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述14PCTINCREASE:每一個(gè)增量范圍都在最新分配的增量范圍上增長(zhǎng),這個(gè)百分?jǐn)?shù)缺省為 50,建表時(shí)通常設(shè)置為 0,建表空間時(shí)為 1%。范圍在分配時(shí),遵循如下分配方式:初始創(chuàng)建時(shí),分配 INITIAL 指定大小的區(qū)??臻g不夠時(shí),按 NEXT 大小分配第二個(gè)區(qū)。再不夠時(shí),按 NEXT + NEXT *PCTINCREASE 分配??梢詫?duì)表、聚集、索引、回滾段、表空間等實(shí)體設(shè)置存儲(chǔ)參數(shù)。3. 段是表空間中一個(gè)指定類(lèi)型的邏輯存儲(chǔ)結(jié)構(gòu),它由一個(gè)或多個(gè) Extent 組成,段將占用并增長(zhǎng)存儲(chǔ)空間,但是一個(gè)段不能

37、跨越表空間,ORACLE 中有數(shù)據(jù)段、索引段、臨時(shí)段、回滾段和自舉段(包含打開(kāi)數(shù)據(jù)庫(kù)時(shí)要裝入的數(shù)據(jù)字典表)。當(dāng)執(zhí)行建表命令時(shí),系統(tǒng)將自動(dòng)創(chuàng)建一個(gè)段,若沒(méi)有指定存儲(chǔ)參數(shù)子句storage,則系統(tǒng)會(huì)用相應(yīng)表空間的 storage,當(dāng)初始區(qū)用完后,系統(tǒng)會(huì)按next 和 pctincrease 的值分配新的區(qū)。在這里要講一個(gè)比較重要的概念:回滾段。回滾段是當(dāng)某事務(wù)修改一個(gè)數(shù)據(jù)塊時(shí),用以存放數(shù)據(jù)以前映像信息的數(shù)據(jù)段?;貪L段中的信息用以保存讀連續(xù)性,并進(jìn)行事務(wù)回滾和事務(wù)恢復(fù)。例如,如果事務(wù)通過(guò)把一列的關(guān)鍵值從10 改為 20 來(lái)修改數(shù)據(jù)塊,則原值 10 要存放于回滾段中,而數(shù)據(jù)塊將具有新值 20。如果事務(wù)

38、被回滾,則值 10 從回滾段拷回?cái)?shù)據(jù)塊。事務(wù)產(chǎn)生的重做記錄保證在事務(wù)提交或回滾之前保持在回滾段中,而一個(gè)事務(wù)只能用一個(gè)回滾段存放其所有的重做記錄,因此,如果回滾段大小配置不恰當(dāng),當(dāng)ORACLE 執(zhí)行一個(gè)大的事務(wù)時(shí),就會(huì)出現(xiàn)回滾段溢出的錯(cuò)誤。所以設(shè)置回滾段大小是一個(gè)比較重要的問(wèn)題,這取決于數(shù)據(jù)庫(kù)應(yīng)用的主要事務(wù)模式(穩(wěn)定的平均事務(wù)速度、頻繁大型事務(wù)、不頻繁大型事務(wù)),并可通過(guò)一些測(cè)試來(lái)確定。這里還有另外一個(gè)概念:臨時(shí)段。用于以下 SQL 操作:CREATE INDEX帶 DISTINCT,ORDER BY,GROUP BY,UNION,INTERSECT 和MINUS 子句的 SELECT 語(yǔ)句無(wú)

39、索引的 JION 語(yǔ)句某些相互關(guān)聯(lián)的子查詢(xún)了解了邏輯結(jié)構(gòu)后,下面介紹數(shù)據(jù)庫(kù)中存儲(chǔ)對(duì)象。IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述151.3.3 表(Table)1. 表的組成表是數(shù)據(jù)庫(kù)的最基本的邏輯結(jié)構(gòu),一切數(shù)據(jù)都存放在表中,一個(gè) ORACLE數(shù)據(jù)庫(kù)就是由若干個(gè)數(shù)據(jù)表組成。其它數(shù)據(jù)庫(kù)對(duì)象都是為了用戶(hù)很好地操作表中的數(shù)據(jù)。表是關(guān)系模型中反映實(shí)體與屬性關(guān)系的二維表格,它由列和行組成,通過(guò)行與列的關(guān)系,表達(dá)出了實(shí)體與屬性的關(guān)系,如圖 1-6 所示。圖 1-6 表(Table)的組成表的組成部分有:列/域/字段:表的內(nèi)容,也就是實(shí)體的各個(gè)屬性,組成了表的各

40、個(gè)列。列名:列的名稱(chēng)。長(zhǎng)度:該列所能容納的最大數(shù)據(jù)位數(shù)。類(lèi)型:該列存儲(chǔ)的數(shù)據(jù)類(lèi)型,常用數(shù)據(jù)類(lèi)型如 0 所示。關(guān)鍵字:該列能唯一表示一行內(nèi)容,則稱(chēng)該列為關(guān)鍵字。非空列:該列值是不能為空的。常用數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型說(shuō)明串長(zhǎng)度Char(長(zhǎng)度)定長(zhǎng)字符串255Varchar(長(zhǎng)度)變長(zhǎng)字符串2000Number(精度,比例)數(shù)字Date日期時(shí)間Long(長(zhǎng)度)大型可變長(zhǎng)字符串21 億行/記錄:表中所有列組合在一起形成的一條信息,稱(chēng)之為一行或一條記錄。所屬表:記錄一定是歸屬于某一張表的。IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述16行號(hào):每條記錄在數(shù)據(jù)庫(kù)中的一個(gè)

41、定位位置。在 ORACLE 數(shù)據(jù)庫(kù)中,每張表有一系統(tǒng)提供的偽列來(lái)定位每條記錄。記錄長(zhǎng)度:該記錄所有非空列的長(zhǎng)度求和得出的字節(jié)數(shù)。2. 建表命令建表命令如下:CREATE TABLE tablename (column1 datatype DEFAULT expression constraint, column1 datatype DEFAULT expression constraint, )STORAGE 子句其他子句;建表舉例:建表舉例:create table AUTOCALLLOG( ID VARCHAR2(20) not null , CityId NUMBER(4) NULL)

42、TABLESPACE SERVICE_HIST_DAT PCTFREE 10 PCTUSED 90 STORAGE ( INITIAL 10M NEXT 10M MINEXTENTS 2 MAXEXTENTS 500 pctincrease 0 );3. 刪除表中數(shù)據(jù)刪除表中數(shù)據(jù)有以下兩種方式:IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述17Delete :刪除數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)需要寫(xiě)日志,ORACLE 數(shù)據(jù)庫(kù)還需要占用回滾段,每次事務(wù)越大,對(duì)數(shù)據(jù)庫(kù)的沖擊越大,所以在刪除或者更新數(shù)據(jù)時(shí),一定要注意控制事務(wù)的大小。ORACLE 數(shù)據(jù)庫(kù)在刪除或更新數(shù)據(jù)時(shí),w

43、here 條件中加 rownum 控制每次刪除或更新的數(shù)量,如: delete from t_my_table where . and rownum create table emp (eno char(4) constraint e1 primary key , ename char(8) not null, sal number(8,2) constraint ck1 check (sal between 5000 and 10000), mgr char(4),IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述18 dno char(2) const

44、raint d2 references dep(dno) on delete cascade ) ;引用完整性約束時(shí)需要注意以下幾點(diǎn):(1) 先建主表,后從表。(2) 從表引用的必須是主表的主碼或定義了唯一性約束的列。(3) 從表的外來(lái)碼值必須匹配與主表的引用碼的值(4) 當(dāng)刪除主表記錄時(shí),從表指定了 on delete cascade 子句,連帶刪除從表記錄,否則,若從表中有對(duì)應(yīng)記錄,則不能刪除主表記錄。1.3.4 視圖(View)視圖,數(shù)據(jù)中表的窗口,在表上的查詢(xún)所形成的一個(gè)數(shù)據(jù)集體。通過(guò)視圖,你將看到你所需要的信息,而排除其它不關(guān)心的內(nèi)容。將表中所需要的列和行選取出來(lái)傳遞給用戶(hù)。不是真正

45、將數(shù)據(jù)重新復(fù)制一遍,不占用存儲(chǔ)空間。不僅在表的基礎(chǔ)上建立,還可在視圖的基礎(chǔ)之上再建立視圖。建立視圖主要基于:保護(hù)數(shù)據(jù)安全,防止機(jī)密數(shù)據(jù)泄露。簡(jiǎn)化數(shù)據(jù)查詢(xún)方式,建立有效的查詢(xún)。保持?jǐn)?shù)據(jù)獨(dú)立性,保證程序不會(huì)隨著數(shù)據(jù)的位置變化、名稱(chēng)變化而需要修改。 說(shuō)明:ORACLE 數(shù)據(jù)庫(kù)的視圖請(qǐng)參考“附錄A ORACLE數(shù)據(jù)字典與視圖”。1.3.5 索引(Index)索引是與表相關(guān)的一種選擇結(jié)構(gòu)。索引可建立在一表的一列或多列上,一旦建立,由 ORACLE 自動(dòng)維護(hù)和使用,對(duì)用戶(hù)是完全透明的。索引是邏輯地和物理地獨(dú)立于數(shù)據(jù),它們的建立或刪除對(duì)表沒(méi)有影響,所有應(yīng)用可繼續(xù)處理。關(guān)于索引需要注意以下幾點(diǎn):IL00110

46、0 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述19(1) 索引是一種數(shù)據(jù)庫(kù)對(duì)象,并不改變表的邏輯結(jié)構(gòu),而是在物理存儲(chǔ)結(jié)構(gòu)上增加一些輔助信息,以提高查詢(xún)速度。(2) 當(dāng)表中記錄增加或刪除時(shí),索引結(jié)構(gòu)均要發(fā)生變化,因此,當(dāng)有大量數(shù)據(jù)裝入數(shù)據(jù)庫(kù)時(shí),應(yīng)該先裝入數(shù)據(jù),后建立索引,以提高數(shù)據(jù)裝入速度。(3) 只有當(dāng)按指定的索引列的值查找或按索引列的順序存取表時(shí),才可利用索引提高性能。 說(shuō)明:當(dāng)索引被刪除后,原分配給索引的數(shù)據(jù)塊將全部返回給索引所在的表空間.建立索引可以:加快查詢(xún)速度。確保唯一性特征??梢詾楸碇心骋涣薪ㄒ粋€(gè)唯一性索引,那么如果有人企圖向表中插入這樣一行記錄,即它在

47、這個(gè)有索引的列的數(shù)值與以前已有值重復(fù),則這個(gè)操作就會(huì)失敗。1.3.6 同義詞(Synonym)同義詞是表、視圖或其它數(shù)據(jù)庫(kù)實(shí)體的一個(gè)別名??梢杂门c存取表、視圖等實(shí)體同樣的方法來(lái)存取別名。簡(jiǎn)單性(用戶(hù)名.表名同義詞名)。表的獨(dú)立性(只需修改同義詞的定義,避免修改大量應(yīng)用程序)。1.3.7 序列(Sequence)序列是一個(gè)數(shù)據(jù)庫(kù)對(duì)象,利用它可以生成唯一的整數(shù),序列的值是由ORACLE 程序自動(dòng)生成。創(chuàng)建序列:SQLcreate sequence zxk increment by 10 start with 10 maxvalue 1000 cycle ;上例說(shuō)明:increment by 10

48、增量值為 10。start with 10 指定生成的第一個(gè)序列號(hào)為 10。maxvalue 1000 指定序列可生成的最大值。IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0ORACLE 數(shù)據(jù)庫(kù)概述20cycle 序列上升到最大值 1000 后,繼續(xù)由開(kāi)始值 10 開(kāi)始生成。引用序列:序列當(dāng)前值:zxk.currval 序列下一個(gè)值: zxk.nextval1.3.8 數(shù)據(jù)庫(kù)鏈(Database Link)數(shù)據(jù)庫(kù)鏈?zhǔn)潜镜財(cái)?shù)據(jù)庫(kù)中的一個(gè)對(duì)象,利用它可以存取遠(yuǎn)程數(shù)據(jù)庫(kù)上的對(duì)象。在遠(yuǎn)程表或視圖之后附加db 鏈名,即可在 SQL 語(yǔ)句中引用遠(yuǎn)程表或視圖。有專(zhuān)用數(shù)據(jù)庫(kù)鏈和公用數(shù)據(jù)庫(kù)鏈之

49、分,專(zhuān)用數(shù)據(jù)庫(kù)鏈僅為建立者使用;公用數(shù)據(jù)庫(kù)鏈必須用關(guān)鍵字 public 定義,公用數(shù)據(jù)庫(kù)鏈可為全部用戶(hù)使用。創(chuàng)建數(shù)據(jù)庫(kù)鏈:對(duì)由連接串“icd_main”指定的數(shù)據(jù)庫(kù)上的用戶(hù) icdmain,口令為 icd,建立一名為 icdmainold 的數(shù)據(jù)庫(kù)鏈。SQLcreate database link icdmainold connect to icdmain identified by icd using icd_main ;下面給出使用數(shù)據(jù)庫(kù)鏈進(jìn)行查詢(xún)、插入、修改、刪除舉例:SQLselect * from empicdmainold;SQLinsert into empicdmainold

50、values(0001,zxk,5000,0010,00);SQLupdate empicdmainold set sal=sal+1000;SQLdelete from empicdmainold where ename=aaaa;IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0管理 ORACLE 數(shù)據(jù)庫(kù)21第第 2 章章 管理管理 ORACLE 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)本章主要講述管理 ORACLE 數(shù)據(jù)庫(kù)的一些必備知識(shí)。2.1 基本概念2.1.1 數(shù)據(jù)字典數(shù)據(jù)字典是 ORACLE 數(shù)據(jù)庫(kù)的最重要的部分之一,是由一組只讀的表及其視圖所組成。這些表和視圖是數(shù)據(jù)庫(kù)被建立同時(shí)由數(shù)據(jù)庫(kù)系統(tǒng)建立

51、起來(lái)的,起著系統(tǒng)狀態(tài)的目錄表的作用。數(shù)據(jù)字典描述表、列、索引、用戶(hù)、訪問(wèn)權(quán)以及數(shù)據(jù)庫(kù)中的其它實(shí)體,當(dāng)其中的一個(gè)實(shí)體被建立、修改或取消時(shí),數(shù)據(jù)庫(kù)將自動(dòng)修改數(shù)據(jù)字典。因此,數(shù)據(jù)字典總是包含著數(shù)據(jù)庫(kù)的當(dāng)前描述。數(shù)據(jù)字典提供有關(guān)該數(shù)據(jù)庫(kù)的信息,可提供的信息如下:ORACLE 用戶(hù)的名字。每一個(gè)用戶(hù)所授的特權(quán)和角色。模式對(duì)象的名字(表、視圖、索引、同義詞等)。關(guān)于完整性約束的信息。列的缺省值。有關(guān)數(shù)據(jù)庫(kù)中對(duì)象的空間分布信息及當(dāng)前使用情況。審計(jì)信息(如誰(shuí)存取或修改各種對(duì)象)。其它一般的數(shù)據(jù)庫(kù)信息??捎?SQL 存取數(shù)據(jù)字典,由于數(shù)據(jù)字典為只讀,只允許查詢(xún)。數(shù)據(jù)字典中全部基本表和用戶(hù)可存取視圖為 ORACL

52、E 用戶(hù) SYS 所持有,所有對(duì)象包含在 SYS 模式中,安全管理員對(duì)該帳號(hào)要嚴(yán)格控制。當(dāng) ORACLE 數(shù)據(jù)庫(kù)系統(tǒng)啟動(dòng)后,數(shù)據(jù)字典總是可用,它駐留在 SYSTEM 表空間中。數(shù)據(jù)字典包含視圖集,在許多情況下,每一視圖集有三種視圖包含有類(lèi)似信息,彼此以前綴相區(qū)別,前綴為 USER、ALL 和 DBA。前綴為 USER 的視圖,為用戶(hù)視圖,是在用戶(hù)的模式內(nèi)。前綴為 ALL 的視圖為擴(kuò)展的用戶(hù)視圖(為用戶(hù)可存取的視圖)。前綴為 DBA 的視圖為 DBA 的視圖(為全部用戶(hù)可存取的視圖)。常用數(shù)據(jù)字典與視圖IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0管理 ORACLE 數(shù)據(jù)庫(kù)22

53、ORACLE 數(shù)據(jù)庫(kù)有三個(gè)可查看系統(tǒng)數(shù)據(jù)庫(kù)字典的用戶(hù):system、internal、sys,其它用戶(hù)只能查看授權(quán)表空間的數(shù)據(jù)庫(kù)字典,以某一用戶(hù)登錄數(shù)據(jù)庫(kù)后可查看一些數(shù)據(jù)字典,了解數(shù)據(jù)庫(kù)的資源情況,對(duì)日常維護(hù)的故障定位能起很大的幫助,下面就一些常用的數(shù)據(jù)表(視圖)進(jìn)行簡(jiǎn)單的說(shuō)明:(1) dba_tablespaces(user_tablespaces)除三個(gè)系統(tǒng)用戶(hù)以外的用戶(hù)登錄可查看 user_tablespaces 表。dba_tablespaces(user_tablespaces)表可查看本數(shù)據(jù)庫(kù)的表空間,它存放各個(gè)表空間的屬性,包括:表空間名、表空間宿主、以及存儲(chǔ)參數(shù)(initial

54、、next、maxextents、minextents、blocks 等)等。(2) dba_data_files(user_data_files)該表可查看數(shù)據(jù)庫(kù)所有數(shù)據(jù)庫(kù)數(shù)據(jù)文件,它存放了各個(gè)數(shù)據(jù)文件的屬性,包括:表空間名、宿主、數(shù)據(jù)文件名、大小、可用空間以及 ID 號(hào)等。(3) dba_segments(user_segments)該表可查看數(shù)據(jù)庫(kù)所有段,它存放了各個(gè)段的屬性,包括:段名、表空間名、宿主、大小、第一個(gè)區(qū)間的塊號(hào)等。(4) dba_rollback_segs該表可查看數(shù)據(jù)庫(kù)所有回滾段,它存放了各個(gè)數(shù)據(jù)庫(kù)回滾段的屬性,包括:回滾段名、表空間名、宿主、存儲(chǔ)參數(shù)(initial、

55、next、maxextents、minextents 等)、第一個(gè)區(qū)間的塊號(hào)、占用數(shù)據(jù)庫(kù)文件 ID 號(hào)。(5) dba_extents該表可查看數(shù)據(jù)庫(kù)所有區(qū)間,它存放了各個(gè)區(qū)間的屬性,包括:區(qū)間 ID、使用段 ID、所屬對(duì)象(object)名、宿主、占用數(shù)據(jù)庫(kù)文件 ID(對(duì)應(yīng)dba_data_files 中的 ID 號(hào))、塊號(hào)等。常見(jiàn)應(yīng)用:查看各對(duì)象的區(qū)間是否已達(dá)到了最大區(qū)間數(shù)量(maxextents)。select object_name,sum(*) from dba_extents group by object_name;(6) dba_free_spaces可查看數(shù)據(jù)庫(kù)表空間的使用情

56、況,如查看各數(shù)據(jù)庫(kù)表空間的可用空間:select tablespace_name,sum(bytes) from dba_free_spaces group by talbespace_name;以上為常用的數(shù)據(jù)字典,可在維護(hù)中靈活應(yīng)用。在維護(hù)過(guò)程中,第一步應(yīng)查看數(shù)據(jù)庫(kù)管理系統(tǒng)的運(yùn)行日志,日志文件的存放路徑應(yīng)版本不同而不同,一IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0管理 ORACLE 數(shù)據(jù)庫(kù)23般:ORACLE workgroup 版,日志文件存放路徑為:$ORACLE_HOME/rdbms/alert_SID.log,OPS 版,日志文件存放路徑為:$ORACLE_H

57、OME/././admin/bdump/alert_SID.log??捎妹睿簍ail logfilename 查看,或用 vi logfilename,按 shift+g 到文件尾進(jìn)行查看。 說(shuō)明:附錄 A 詳細(xì)列出了 ORACLE 的數(shù)據(jù)字典與視圖,供參考。2.1.2 事務(wù)管理1. 事務(wù)(transaction)數(shù)據(jù)庫(kù)是多用戶(hù)的共享資源,在多個(gè)用戶(hù)并行地存取數(shù)據(jù)時(shí),應(yīng)對(duì)數(shù)據(jù)做并發(fā)控制,以免存取不正確的數(shù)據(jù),破壞數(shù)據(jù)庫(kù)的一致性。數(shù)據(jù)庫(kù)的任何狀態(tài)變化都要能反映客觀世界的某種真實(shí)存在的合理狀態(tài),反映到數(shù)據(jù)庫(kù)中,就是數(shù)據(jù)要滿(mǎn)足一定的約束條件,這種約束條件就是一致性約束。有時(shí),為了完成復(fù)雜的修改動(dòng)作

58、,往往需要臨時(shí)破壞數(shù)據(jù)庫(kù)的狀態(tài)一致性。因此,就有必要把這種對(duì)數(shù)據(jù)庫(kù)復(fù)雜修改的一連串動(dòng)作序列合并起來(lái),這就是事務(wù)。事務(wù)是數(shù)據(jù)庫(kù)維護(hù)數(shù)據(jù)一致性的單位,它將數(shù)據(jù)庫(kù)從一致性狀態(tài)轉(zhuǎn)換成新的一致性狀態(tài)。2. 事務(wù)提交提交事務(wù):即將在事務(wù)中由 SQL 語(yǔ)句所執(zhí)行的改變永久化。數(shù)據(jù)庫(kù)數(shù)據(jù)的更新操作提交以后,這些更新操作就不能再撤消。ORACLE 的提交命令如下:SQLCOMMIT;3. 事務(wù)回退事務(wù)回退的含義是:撤消未提交事務(wù)中的 SQL 語(yǔ)句所作的對(duì)數(shù)據(jù)修改。ORACLE 允許撤消未提交的整個(gè)事務(wù),也允許撤消部分(需設(shè)置保存點(diǎn))。回退之后,數(shù)據(jù)庫(kù)將恢復(fù)事務(wù)開(kāi)始時(shí)的狀態(tài)或保留點(diǎn)狀態(tài)?;赝嗣钊缦拢篠QLROL

59、LBACK;IL001100 ORACLE 數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí) ISSUE1.0管理 ORACLE 數(shù)據(jù)庫(kù)244. 保存點(diǎn)保存點(diǎn)就是將一個(gè)事務(wù)劃分成為若干更小的部分,以便在必要時(shí),使當(dāng)前事務(wù)只回退一部分,而其余工作得到保留。其格式為:SAVEPOINT 保存點(diǎn)名;ROLLBACK TO 保存點(diǎn)名;2.1.3 數(shù)據(jù)庫(kù)管理員(DBA)任何一個(gè)系統(tǒng)都需要一個(gè)負(fù)責(zé)管理和維護(hù)的人員,負(fù)責(zé)管理和維護(hù) ORACLE數(shù)據(jù)庫(kù)的人就是數(shù)據(jù)庫(kù)管理員(DataBase Administrator,簡(jiǎn)稱(chēng) DBA)。每個(gè) ORACLE 數(shù)據(jù)庫(kù)至少要有一名專(zhuān)職的數(shù)據(jù)庫(kù)管理員,其職責(zé)如下:保證數(shù)據(jù)的完整性和一致性。提高執(zhí)行速度,

60、調(diào)整系統(tǒng)性能。管理數(shù)據(jù)庫(kù)存儲(chǔ),減少數(shù)據(jù)冗余。安裝、升級(jí) ORACLE Server 和應(yīng)用工具。定期對(duì)數(shù)據(jù)進(jìn)行備份。DBA 為做好上述工作,需要了解以下知識(shí):ORACLE 產(chǎn)品結(jié)構(gòu)。DBA 工具。數(shù)據(jù)庫(kù)備份和恢復(fù)。數(shù)據(jù)字典用途。在 ORACLE 系統(tǒng)初始安裝后,存在以下三個(gè)具有 DBA 特權(quán)的數(shù)據(jù)庫(kù)用戶(hù):internal 用戶(hù)。sys 用戶(hù)。system 用戶(hù)。1. DBA 的操作系統(tǒng)帳戶(hù)在進(jìn)行許多數(shù)據(jù)庫(kù)的管理任務(wù)時(shí),必須能夠執(zhí)行操作系統(tǒng)命令,所以需要有個(gè)操作系統(tǒng)帳戶(hù),以便能完成操作系統(tǒng)的操作,此時(shí)要求此帳戶(hù)具有比一般數(shù)據(jù)庫(kù)用戶(hù)更多的操作系統(tǒng)權(quán)限或存取特權(quán)。數(shù)據(jù)庫(kù)的啟動(dòng)(startup)和關(guān)閉

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論