本書系統(tǒng)、詳細(xì)介紹了Oracle 11g數(shù)據(jù)庫服務(wù)器的安裝、數(shù)據(jù)庫的創(chuàng)建、體系結(jié)構(gòu)、數(shù)據(jù)庫對象管理、SQL語言基礎(chǔ)、PL/SQL程序設(shè)計(jì)、數(shù)據(jù)庫安全、備份與恢復(fù)、基于Oracle數(shù)據(jù)庫實(shí)際應(yīng)用。本書重點(diǎn)突出實(shí)際案例和過程展示, 并提供大量習(xí)題供學(xué)生參考和實(shí)際練習(xí), 加強(qiáng)實(shí)踐, 使學(xué)生容易上手, 提高學(xué)生的動(dòng)手能力。
本書針對Oracle 11g編寫,基于Linux操作系統(tǒng)環(huán)境,以O(shè)racle數(shù)據(jù)庫應(yīng)用開發(fā)的常用知識(shí)點(diǎn)作為主要介紹對象。目前市場上Oracle數(shù)據(jù)庫相關(guān)的圖書雖然比較多,但是大部分教材是圍繞Oracle基礎(chǔ)教學(xué)的,內(nèi)容過于單一、比較簡單;其次,實(shí)踐技能知識(shí)不足,缺乏實(shí)際應(yīng)用案例;另外,開發(fā)環(huán)境都是針對Windows的,基于Linux環(huán)境的Oracle應(yīng)用開發(fā)相關(guān)教材幾乎沒有。本書以通俗易懂的文字,簡短精練的示例代碼,力求讓讀者盡快掌握Oracle數(shù)據(jù)庫應(yīng)用開發(fā)的基本知識(shí),本書在很多章節(jié)中均提供了若干綜合性的應(yīng)用開發(fā)實(shí)例,開發(fā)人員可以通過實(shí)例學(xué)習(xí),提高綜合編程能力。
本書敘述簡明易懂,有豐富的案例和習(xí)題,非常適合Oracle數(shù)據(jù)庫開發(fā)應(yīng)用的入門級用戶,可以使讀者逐漸全面地了解Oracle數(shù)據(jù)庫應(yīng)用開發(fā)的基本知識(shí)。本書可作為高等學(xué)校計(jì)算機(jī)相關(guān)專業(yè)的教材,以及初、中級Oracle數(shù)據(jù)庫培訓(xùn)班的培訓(xùn)教材,還可作為Oracle 應(yīng)用開發(fā)人員的參考資料。
大數(shù)據(jù)與云技術(shù)的快速發(fā)展,對數(shù)據(jù)庫具有更高的要求。Oracle數(shù)據(jù)庫系統(tǒng)是目前最優(yōu)秀的大型數(shù)據(jù)庫管理系統(tǒng)之一,也是當(dāng)前應(yīng)用最廣泛的關(guān)系數(shù)據(jù)庫產(chǎn)品,因其優(yōu)越的安全性、完整性、穩(wěn)定性和支持多種操作系統(tǒng)、多種硬件平臺(tái)等特點(diǎn),得到了廣泛的應(yīng)用。Oracle是一種非常復(fù)雜的軟件系統(tǒng),在激烈競爭的人才市場中,具有一定Oracle數(shù)據(jù)庫應(yīng)用開發(fā)經(jīng)驗(yàn)的人不但容易找到工作,而且還能獲得很好的職位和優(yōu)厚的待遇。為了適應(yīng)企業(yè)的需求,提高畢業(yè)生的就業(yè)率,越來越多的高校開設(shè)了Oracle數(shù)據(jù)庫應(yīng)用開發(fā)的相關(guān)課程。本教材是針對“校企結(jié)合”的教學(xué)改革而編寫的。對教材的知識(shí)結(jié)構(gòu)、深度、難度、實(shí)用性等方面都有一些新的要求。作者熟悉Oracle課程的知識(shí)體系,在多年教學(xué)和實(shí)踐中,積累了比較豐富的教學(xué)經(jīng)驗(yàn),在平時(shí)的教學(xué)過程中不斷積累有關(guān)方面的知識(shí),將最新、最前沿的知識(shí)與技能融入教材編寫過程中。本教材強(qiáng)調(diào)培養(yǎng)學(xué)生的實(shí)際編程開發(fā)能力、應(yīng)用能力與創(chuàng)新能力,通過大量有趣的典型實(shí)例,深入淺出地介紹了Oracle開發(fā)應(yīng)用的編程方法和相關(guān)技術(shù),并避免了一些枯燥、空洞的理論。
本書針對Oracle 11g編寫,基于Linux操作系統(tǒng)環(huán)境,以O(shè)racle數(shù)據(jù)庫應(yīng)用開發(fā)的常用知識(shí)點(diǎn)作為主要介紹對象。目前市場上Oracle數(shù)據(jù)庫相關(guān)的圖書雖然比較多,但是大部分教材是圍繞Oracle基礎(chǔ)教學(xué)的,內(nèi)容過于單一、比較簡單;其次,實(shí)踐技能知識(shí)不足,缺乏實(shí)際應(yīng)用案例;另外,開發(fā)環(huán)境都是針對Windows的,基于Linux環(huán)境的Oracle應(yīng)用開發(fā)相關(guān)教材幾乎沒有。本書以通俗易懂的文字,簡短精練的示例代碼,力求讓讀者盡快掌握Oracle數(shù)據(jù)庫應(yīng)用開發(fā)的基本知識(shí),本書在很多章節(jié)中均提供了若干綜合性的應(yīng)用開發(fā)實(shí)例,開發(fā)人員可以通過實(shí)例學(xué)習(xí),提高綜合編程能力。
本書各章的主要內(nèi)容如下。
第1 章:Oracle 11g數(shù)據(jù)庫安裝及創(chuàng)建數(shù)據(jù)庫。介紹如何在Linux環(huán)境下正確安裝數(shù)據(jù)庫,以及使用DBCA創(chuàng)建數(shù)據(jù)庫的過程。
第2 章:Oracle數(shù)據(jù)庫管理工具。介紹Oracle的常用數(shù)據(jù)庫管理工具,主要包括企業(yè)管理器、SQL*Plus、SQL Developer、網(wǎng)絡(luò)配置助手(Net configuration assistant)。
第3 章:物理存儲(chǔ)結(jié)構(gòu)。首先簡單介紹Oracle的體系結(jié)構(gòu),然后重點(diǎn)介紹Oracle的物理存儲(chǔ)結(jié)構(gòu)及其管理方法,包括數(shù)據(jù)文件、控制文件、重做日志文件的管理及數(shù)據(jù)庫的歸檔。
第4 章:邏輯存儲(chǔ)結(jié)構(gòu)。主要介紹Oracle 11g數(shù)據(jù)庫的邏輯存儲(chǔ)結(jié)構(gòu),包括表空間、段、區(qū)和數(shù)據(jù)塊的基本概念、組成及其管理。
第5 章:數(shù)據(jù)庫實(shí)例。介紹Oracle數(shù)據(jù)庫實(shí)例的構(gòu)成及其工作方式。
第6 章:模式對象管理。主要介紹表、表的完整性約束及分區(qū)表,對索引、表、索引、視圖、序列和同義詞視圖等也做了較為詳盡的講解。
第7 章:SQL基礎(chǔ)。主要介紹SQL語言應(yīng)用基礎(chǔ),包括數(shù)據(jù)查詢、數(shù)據(jù)更新(插入、修改、刪除)操作。
第8 章:PL/SQL基礎(chǔ)。介紹PL/SQL語言的特點(diǎn)、基礎(chǔ)語法、詞法單元、數(shù)據(jù)類型、控制結(jié)構(gòu)、游標(biāo)和異常處理機(jī)制。重點(diǎn)介紹游標(biāo)的使用方法和技巧。
第9 章:PL/SQL程序設(shè)計(jì)。介紹存儲(chǔ)過程、函數(shù)、觸發(fā)器三種數(shù)據(jù)對象的創(chuàng)建、調(diào)用及管理。通過多種典型例題的探討,希望讀者能夠從典型實(shí)例中快速掌握存儲(chǔ)過程、函數(shù)、觸發(fā)器的使用方法和技巧,并能靈活應(yīng)用它們,從而提高程序設(shè)計(jì)的能力。
第10 章:安全管理。主要介紹Oracle數(shù)據(jù)庫的認(rèn)證方法、用戶管理、權(quán)限管理、角色管理、概要文件管理等。
第11 章:備份與恢復(fù)。簡單介紹備份與恢復(fù)類型,詳細(xì)介紹物理備份與恢復(fù)、邏輯備份與恢復(fù)、利用RMAN備份與恢復(fù)。
第12 章:基于Oracle數(shù)據(jù)庫的應(yīng)用。介紹一個(gè)有線收費(fèi)管理系統(tǒng)的系統(tǒng)分析、數(shù)據(jù)庫的設(shè)計(jì)與實(shí)現(xiàn),以及應(yīng)用程序的設(shè)計(jì)與開發(fā)。該典型案例來源于一個(gè)實(shí)際應(yīng)用科研項(xiàng)目,通過對案例的學(xué)習(xí),希望讀者能夠領(lǐng)會(huì)到復(fù)雜問題的分析和解決過程。
本書敘述簡明易懂,有豐富的案例和習(xí)題,非常適合Oracle數(shù)據(jù)庫開發(fā)應(yīng)用的入門級用戶,可以使讀者逐漸全面地了解Oracle數(shù)據(jù)庫應(yīng)用開發(fā)的基本知識(shí)。本書可作為高等學(xué)校計(jì)算機(jī)相關(guān)專業(yè)的教材,以及初、中級Oracle數(shù)據(jù)庫培訓(xùn)班的培訓(xùn)教材,還可作為Oracle 應(yīng)用開發(fā)人員的參考資料。
本書第1、10、11章由張曉霞編寫,第8、9章由田瑩編寫,第2、3章由盧明編寫,第4章由云曉燕編寫,第5章由王彩霞編寫,第6章由包含編寫,第7章由唐笑飛編寫,第12章由孟丹編寫。全書由張曉霞統(tǒng)稿。
由于作者水平有限,書中難免有不足之處,懇請廣大讀者批評指正。
編 者
第1章 Oracle 11g數(shù)據(jù)庫安裝及
創(chuàng)建數(shù)據(jù)庫 1
1.1 Oracle數(shù)據(jù)庫概述 1
1.1.1 Oracle數(shù)據(jù)庫簡介 1
1.1.2 Oracle數(shù)據(jù)庫的特點(diǎn) 2
1.2 數(shù)據(jù)庫安裝前的準(zhǔn)備 2
1.2.1 安裝Oracle 11g的硬件與
軟件要求 2
1.2.2 設(shè)置環(huán)境變量 3
1.2.3 Oracle 11g數(shù)據(jù)庫安裝前的
預(yù)處理 4
1.3 Oracle 11g數(shù)據(jù)庫的安裝 5
1.3.1 安裝Oracle 11g數(shù)據(jù)庫
服務(wù)器 5
1.3.2 客戶端安裝過程 12
1.4 使用DBCA創(chuàng)建數(shù)據(jù)庫 14
1.4.1 配置監(jiān)聽 14
1.4.2 使用DBCA工具創(chuàng)建
數(shù)據(jù)庫 17
1.5 啟動(dòng)與關(guān)閉數(shù)據(jù)庫 24
1.5.1 Oracle數(shù)據(jù)庫實(shí)例的狀態(tài) 24
1.5.2 啟動(dòng)數(shù)據(jù)庫實(shí)例 24
1.5.3 關(guān)閉數(shù)據(jù)庫 27
本章小結(jié) 29
習(xí)題 29
第2章 Oracle數(shù)據(jù)庫管理工具 32
2.1 企業(yè)管理器 32
2.1.1 啟動(dòng)企業(yè)管理器 32
2.1.2 Oracle Enterprise Manager
管理頁面 33
2.2 SQL*Plus工具 34
2.2.1 SQL*Plus概述 35
2.2.2 啟動(dòng)SQL*Plus 35
2.2.3 SQL*Plus的命令規(guī)則 37
2.2.4 SQL*Plus的內(nèi)部命令 37
2.3 SQL Developer 42
2.3.1 客戶端SQL Developer登錄 42
2.3.2 從服務(wù)器登錄
SQL Developer 44
2.4 Net Configuration Assistant 45
2.5 案例實(shí)訓(xùn) 50
本章小結(jié) 51
習(xí)題 51
第3章 物理存儲(chǔ)結(jié)構(gòu) 53
3.1 Oracle數(shù)據(jù)庫體系結(jié)構(gòu) 53
3.2 Oracle的物理存儲(chǔ)結(jié)構(gòu) 54
3.3 數(shù)據(jù)文件 54
3.3.1 創(chuàng)建數(shù)據(jù)文件 55
3.3.2 修改數(shù)據(jù)文件的大小 55
3.3.3 改變數(shù)據(jù)文件的可用性 56
3.3.4 改變數(shù)據(jù)文件的名稱或位置 56
3.3.5 刪除數(shù)據(jù)文件 58
3.3.6 查詢數(shù)據(jù)文件信息 58
3.4 重做日志文件 59
3.4.1 重做日志文件的工作過程 59
3.4.2 添加重做日志文件組 60
3.4.3 添加重做日志文件組成員 60
3.4.4 改變重做日志文件組成員
文件的名稱或位置 61
3.4.5 刪除重做日志文件組成員 62
3.4.6 刪除重做日志文件組 62
3.4.7 重做日志文件組的切換 63
3.4.8 查看重做日志文件的信息 63
3.5 歸檔重做日志文件 64
3.5.1 重做日志文件歸檔概述 64
3.5.2 設(shè)置數(shù)據(jù)庫歸檔/非歸檔
模式 65
3.5.3 歸檔方式與目標(biāo)設(shè)置 65
3.5.4 歸檔信息查詢 66
3.6 控制文件 67
3.6.1 創(chuàng)建控制文件 67
3.6.2 實(shí)現(xiàn)多路鏡像控制文件 70
3.6.3 控制文件備份 70
3.6.4 刪除控制文件 71
3.6.5 查看控制文件的信息 71
3.7 案例實(shí)訓(xùn) 71
本章小結(jié) 73
習(xí)題 74
第4章 邏輯存儲(chǔ)結(jié)構(gòu) 76
4.1 邏輯存儲(chǔ)結(jié)構(gòu)概述 76
4.2 表空間管理 77
4.2.1 表空間的概念 77
4.2.2 表空間的類型 77
4.2.3 創(chuàng)建表空間 78
4.2.4 管理表空間 80
4.3 段 83
4.3.1 段的種類 83
4.3.2 段的管理方式 84
4.3.3 段信息查詢 84
4.4 區(qū) 85
4.4.1 區(qū)的概念 85
4.4.2 區(qū)的分配 85
4.5 數(shù)據(jù)塊 86
4.5.1 數(shù)據(jù)塊的概念 86
4.5.2 數(shù)據(jù)塊的管理 87
4.6 案例實(shí)訓(xùn) 88
本章小結(jié) 88
習(xí)題 89
第5章 數(shù)據(jù)庫實(shí)例 91
5.1 實(shí)例概述 91
5.2 Oracle內(nèi)存結(jié)構(gòu) 92
5.2.1 全局系統(tǒng)區(qū)SGA 92
5.2.2 程序全局區(qū)PGA 96
5.3 Oracle進(jìn)程結(jié)構(gòu) 97
5.3.1 Oracle進(jìn)程種類 97
5.3.2 Oracle后臺(tái)進(jìn)程 98
5.4 案例實(shí)訓(xùn) 101
本章小結(jié) 101
習(xí)題 101
第6章 模式對象管理 103
6.1 模式對象 103
6.2 表的管理 103
6.2.1 創(chuàng)建表 103
6.2.2 數(shù)據(jù)類型 104
6.2.3 表的完整性約束 105
6.2.4 利用子查詢創(chuàng)建表 108
6.2.5 修改表 108
6.2.6 刪除表 110
6.3 視圖管理 110
6.3.1 創(chuàng)建視圖 110
6.3.2 視圖DML操作 111
6.3.3 修改和刪除視圖 112
6.4 索引管理 112
6.4.1 索引概述 112
6.4.2 創(chuàng)建索引 113
6.4.3 刪除索引 114
6.5 分區(qū)表與分區(qū)索引管理 114
6.5.1 創(chuàng)建分區(qū)表 115
6.5.2 創(chuàng)建分區(qū)索引 117
6.5.3 查詢分區(qū)表和分區(qū)索引
信息 118
6.6 序列 118
6.6.1 創(chuàng)建序列 119
6.6.2 使用序列 119
6.6.3 修改與刪除序列 120
6.7 同義詞 120
6.8 案例實(shí)訓(xùn) 121
本章小結(jié) 122
習(xí)題 122
第5章 數(shù)據(jù)庫實(shí)例
本章要點(diǎn):數(shù)據(jù)庫和操作系統(tǒng)之間是使用數(shù)據(jù)庫實(shí)例進(jìn)行交互的。數(shù)據(jù)庫實(shí)例由一系列內(nèi)存結(jié)構(gòu)和后臺(tái)進(jìn)程組成。本章將介紹Oracle數(shù)據(jù)庫實(shí)例的構(gòu)成及其工作方式。
學(xué)習(xí)目標(biāo):理解數(shù)據(jù)庫實(shí)例的概念,掌握Oracle數(shù)據(jù)庫實(shí)例的構(gòu)成及其工作方式。重點(diǎn)掌握數(shù)據(jù)高速緩沖區(qū)、共享池、重做日志緩沖區(qū)、數(shù)據(jù)庫寫進(jìn)程、日志寫進(jìn)程、檢查點(diǎn)進(jìn)程的工作方式。
5.1 實(shí) 例 概 述
1. Oracle實(shí)例的概念
完整的Oracle數(shù)據(jù)庫通常由兩部分組成:Oracle數(shù)據(jù)庫和數(shù)據(jù)庫實(shí)例。
(1) Oracle數(shù)據(jù)庫是一系列物理文件的集合(數(shù)據(jù)文件、控制文件、聯(lián)機(jī)日志、參數(shù)文件等)。
(2) Oracle數(shù)據(jù)庫實(shí)例則是一組Oracle后臺(tái)進(jìn)程以及在服務(wù)器分配的共享內(nèi)存區(qū)。
數(shù)據(jù)庫中的數(shù)據(jù)是以文件的形式存儲(chǔ)在磁盤上,數(shù)據(jù)文件是一個(gè)靜態(tài)的概念,而對數(shù)據(jù)庫的訪問則是一個(gè)動(dòng)態(tài)的過程,需要通過數(shù)據(jù)庫服務(wù)器來進(jìn)行。數(shù)據(jù)庫服務(wù)器不僅包括數(shù)據(jù)文件,還包括訪問數(shù)據(jù)文件的內(nèi)存結(jié)構(gòu)和后臺(tái)進(jìn)程,這些內(nèi)存結(jié)構(gòu)和后臺(tái)進(jìn)程叫作實(shí)例。
在啟動(dòng)數(shù)據(jù)庫時(shí),Oracle首先在內(nèi)存中獲取一定的空間,啟動(dòng)各種用途的后臺(tái)進(jìn)程,即創(chuàng)建一個(gè)數(shù)據(jù)庫實(shí)例,然后由實(shí)例裝載數(shù)據(jù)文件和重做日志文件,最后打開數(shù)據(jù)庫。用戶操作數(shù)據(jù)庫的過程實(shí)質(zhì)上是與數(shù)據(jù)庫實(shí)例建立連接,然后通過實(shí)例來連接、操作數(shù)據(jù)庫的過程。引入實(shí)例的好處是非常明顯的,數(shù)據(jù)位于內(nèi)存中,用戶讀寫內(nèi)存的速度要比直接讀寫磁盤快得多,而且內(nèi)存數(shù)據(jù)可以在多個(gè)用戶之間共享,從而提高了數(shù)據(jù)庫訪問的并發(fā)性。
Oracle實(shí)例由內(nèi)存結(jié)構(gòu)和后臺(tái)進(jìn)程組成,其中內(nèi)存結(jié)構(gòu)又分為系統(tǒng)全局區(qū)(SGA)和程序全局區(qū)(PGA)。啟動(dòng)Oracle實(shí)例的過程,即分配內(nèi)存、啟動(dòng)后臺(tái)進(jìn)程。當(dāng)啟動(dòng)實(shí)例的時(shí)候分配SGA,當(dāng)服務(wù)器進(jìn)程建立時(shí)分配PGA。Oracle實(shí)例組成如圖5-1所示。
2. 數(shù)據(jù)庫與實(shí)例的關(guān)系
數(shù)據(jù)庫是數(shù)據(jù)集合,Oracle是一種關(guān)系型的數(shù)據(jù)庫管理系統(tǒng)。通常情況下所說的“數(shù)據(jù)庫”并不僅指物理的數(shù)據(jù)集合,還包含物理數(shù)據(jù)、數(shù)據(jù)庫管理系統(tǒng),即物理數(shù)據(jù)、內(nèi)存、操作系統(tǒng)進(jìn)程的組合體。
用戶訪問Oracle都是訪問一個(gè)實(shí)例, 實(shí)例名指的是用于響應(yīng)某個(gè)數(shù)據(jù)庫操作的數(shù)據(jù)庫管理系統(tǒng)的名稱,它同時(shí)也叫SID。實(shí)例名是由參數(shù)instance_name決定的。實(shí)例名用于對外部連接,在操作系統(tǒng)中要取得與數(shù)據(jù)庫的聯(lián)系,必須使用數(shù)據(jù)庫實(shí)例名。
圖5-1 Oracle實(shí)例組成
通常情況下,數(shù)據(jù)庫與實(shí)例是一一對應(yīng)的關(guān)系,即一個(gè)數(shù)據(jù)庫對應(yīng)一個(gè)實(shí)例。在并行Oracle數(shù)據(jù)庫服務(wù)器結(jié)構(gòu)中,數(shù)據(jù)庫與實(shí)例是一對多的關(guān)系,即一個(gè)數(shù)據(jù)庫對應(yīng)多個(gè)實(shí)例。多個(gè)“實(shí)例”同時(shí)驅(qū)動(dòng)一個(gè)數(shù)據(jù)庫的架構(gòu)稱作“集群”。同一時(shí)間一個(gè)用戶只能與一個(gè)實(shí)例聯(lián)系,當(dāng)某一個(gè)實(shí)例出現(xiàn)故障時(shí),其他實(shí)例照常運(yùn)行,從而保證數(shù)據(jù)庫的安全運(yùn)行。
例題5-1:分別查看Oracle數(shù)據(jù)庫名和數(shù)據(jù)庫實(shí)例名。
……