深圳-華為oracle數(shù)據(jù)庫基礎(chǔ)知識 issue1_第1頁
深圳-華為oracle數(shù)據(jù)庫基礎(chǔ)知識 issue1_第2頁
深圳-華為oracle數(shù)據(jù)庫基礎(chǔ)知識 issue1_第3頁
深圳-華為oracle數(shù)據(jù)庫基礎(chǔ)知識 issue1_第4頁
深圳-華為oracle數(shù)據(jù)庫基礎(chǔ)知識 issue1_第5頁
已閱讀5頁,還剩128頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

課程IL001100

ORACLE數(shù)據(jù)庫基礎(chǔ)知識

ISSUE1.0

華為技術(shù)

目錄

課程說明1

課程介紹1

課程目標(biāo)1

相關(guān)資料1

第1章ORACLE數(shù)據(jù)庫概述2

1.1產(chǎn)品概述2

1.1.1產(chǎn)品簡介2

1.1.2基本概念4

1.2ORACLE系統(tǒng)結(jié)構(gòu)5

1.2.2ORACLE物理結(jié)構(gòu)6

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

1.2.4進(jìn)程12

1.3存儲管理16

1.3.2邏輯結(jié)構(gòu)17

1.3.3表(Table)25

1.3.4視圖(View)30

1.3.5索引(Index)31

1.3.6同義詞(Synonym)33

1.3.7序列(Sequence)33

1.3.8數(shù)據(jù)庫鏈(DatabaseLink)34

第2章管理ORACLE數(shù)據(jù)庫36

2.1基本概念36

2.1.1數(shù)據(jù)字典36

2.1.2事務(wù)管理40

2.1.3數(shù)據(jù)庫管理員(DBA)41

2.1.4ORACLE的四種狀態(tài)44

2.2SQLTIus方式的ORACLE數(shù)據(jù)庫啟動和關(guān)閉45

2.2.1啟動數(shù)據(jù)庫45

2.2.2關(guān)閉數(shù)據(jù)庫46

2.3svrmgrl方式的ORACLE數(shù)據(jù)庫啟動和關(guān)閉48

2.3.1啟動數(shù)據(jù)庫48

2.3.2關(guān)閉數(shù)據(jù)庫52

2.4應(yīng)用開發(fā)工具(SQL*Plus)54

2.4.1SQL55

2.4.2PL/SQL57

2.4.3數(shù)據(jù)庫管理工具61

2.5ORACLE用戶及權(quán)限管理62

2.5.1ORACLE的用戶管理63

2.5.2ORACLE的權(quán)限管理65

2.6ORACLE數(shù)據(jù)庫的備份與恢復(fù)68

2.6.1Export轉(zhuǎn)入程序69

2.6.2Import轉(zhuǎn)入程序73

2.6.3增量卸出/裝入77

第3章ORACLE數(shù)據(jù)庫的網(wǎng)絡(luò)應(yīng)用80

3.1SQL*Net產(chǎn)品介紹80

3.2配置客戶機(jī)/服務(wù)器結(jié)構(gòu)82

3.2.1酉己置listener.ora83

3.2.2酉己置tnsnames.ora文件85

第4章常用任務(wù)示例89

4.1如何恢復(fù)被誤刪的數(shù)據(jù)文件89

4.2如何殺掉吊死session89

4.3如何修改字符集90

4.4如何追加表空間90

4.5如何加大表的maxextents值90

4.6如何查詢無效對象90

4.7怎樣分析SQL語句是否用到索引91

4.8怎樣判斷是否存在回滾段競爭93

4.9怎樣手工跟蹤函數(shù)/存儲過程執(zhí)行情況93

4.10多種業(yè)務(wù)使用同一數(shù)據(jù)庫如何分配回滾段94

4.11怎樣倒出、倒入文本數(shù)據(jù)95

4.11.1倒出95

4.11.2倒入95

4.12如何更新當(dāng)前數(shù)據(jù)庫日志備份方式為archive96

4.13Unix環(huán)境下如何實(shí)現(xiàn)自動備份96

iii

4.13.1設(shè)置運(yùn)行環(huán)境97

4.13.2倒出數(shù)據(jù)97

4.13.3異地備份99

4.13.4啟動備份進(jìn)程101

4.14怎樣分析ORACLE故障103

小結(jié)106

附錄AORACLE數(shù)據(jù)字典與視圖107

附錄B動態(tài)性能表118

附錄CSQL語言運(yùn)算符與函數(shù)122

IV

課程說明

課程介紹

本課程對應(yīng)的產(chǎn)品版本為:Oracle8.1.7o

課程目標(biāo)

完成本課程的學(xué)習(xí)后,您應(yīng)該能夠:

?掌握ORACLE數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)中物理結(jié)構(gòu)、系

統(tǒng)全局區(qū)和進(jìn)程的概念

?掌握ORACLE數(shù)據(jù)庫的存儲管理知識

?掌握管理ORACLE數(shù)據(jù)庫的方法

?了解ORACLE數(shù)據(jù)庫的網(wǎng)絡(luò)應(yīng)用

相關(guān)資料

ORACLE公司發(fā)布的相關(guān)資料。

1

第1章ORACLE數(shù)據(jù)庫概述

1.1產(chǎn)品概述

1.1.1產(chǎn)品簡介

數(shù)據(jù)庫技術(shù)產(chǎn)生于60年代末70年代初,到現(xiàn)在比

較知名的大型數(shù)據(jù)庫系統(tǒng)有ORACLE、Sybase>

Informix、DB2(IBM公司的)、Ingress、RDB、

SQLServer等。

ORACLE公司于1979年,首先推出基于SQL標(biāo)

準(zhǔn)的關(guān)系數(shù)據(jù)庫產(chǎn)品,可以在100多種硬件平臺上

運(yùn)行(包括微機(jī)、工作站、小型機(jī)、中型機(jī)和大型

機(jī)),支持多種操作系統(tǒng)。1986年,ORACLE推

出具有分布式結(jié)構(gòu)的版本5,可將數(shù)據(jù)和應(yīng)用駐留

在多臺計(jì)算機(jī)上,而相互間的通信是透明的。1988

年,推出版本6(V6.0)可帶事務(wù)處理選項(xiàng),提高

了事務(wù)處理的速度。1992年推出了版本7,可帶過

程數(shù)據(jù)庫選項(xiàng)、分布式數(shù)據(jù)庫選項(xiàng)和并行服務(wù)器選

項(xiàng),稱為ORACLE7數(shù)據(jù)庫管理系統(tǒng),它釋放出了

開放的關(guān)系型系統(tǒng)的真正潛力。目前,新版本為

ORACLE9i,通用版本為ORACLE8i。版本Oracle

8i是在企業(yè)內(nèi)和因特網(wǎng)上開發(fā)、布署和管理應(yīng)用高

移動性和可伸縮性的數(shù)據(jù)庫。Oracle8i最主要的

新特性是在數(shù)據(jù)庫中包括Java和因特網(wǎng)能力。

2

Oracle8i還包括能夠管理和訪問多媒體(視頻、

音頻、圖像、文本、空間)的OracleinterMedia。

Oracle8i還包括OracleWebDB,這個(gè)Web

開發(fā)環(huán)境使開發(fā)者能建立使用標(biāo)準(zhǔn)的Web瀏覽器

和Oracle8i數(shù)據(jù)庫的動態(tài)的、數(shù)據(jù)驅(qū)動的Web

網(wǎng)站。ORACLE8i是一種通用叫法,它包括許多更

細(xì)版本,如ORACLE8.1.5.ORACLE8.1.6>

ORACLE8.1.7,華為公司TELLINONICA產(chǎn)品使

用版本ORACLE8.1.7序列。

£3說明:

"i”表示ORACLE數(shù)據(jù)庫與internet的結(jié)合。

ORACLE用多達(dá)5個(gè)號碼來完全識別一個(gè)版本,如

“.3”,命名方法如下:

值含義

第一8版本號(Version),是主要的標(biāo)識符,

位表示軟件的主要版本,包含顯著的新

功能,例如:版本8(也標(biāo)識為版本

8.0)o

第二1新特征版本號(NewFeatures

位ReleaseNumber),該位表力、新特征

版本級,例如:版本8.1。

第三7維護(hù)版本號(MaintenanceRelease

位Number),該位表示一個(gè)維護(hù)版本級。

也可能包含一些新特征,例如:版本

8.0.4、8.1,7o

3

第四2通用補(bǔ)丁級號(GenericPatchSet

位Number),該位表作一個(gè)通用補(bǔ)]級。

補(bǔ)丁級可以跨越所有操作系統(tǒng)和硬件

平臺使用,例如:補(bǔ)丁級版本

第五3專用平臺補(bǔ)丁級(PlatformSpecific

位PatchSetNumber),該位表與l個(gè)

只能應(yīng)用到特定的操作系統(tǒng)和硬件平

臺的補(bǔ)丁級,例如:補(bǔ)丁級.3o

可以用如下的SQL語句得至IORACLE版本信息:

SQL>select*fromproduct_component_version;

1.1.2基本概念

要了解ORACLE數(shù)據(jù)庫,需要先了解以下基本概

念:

?數(shù)據(jù)庫:是一個(gè)數(shù)據(jù)集合,我們大多數(shù)情況下講

的數(shù)據(jù)庫概念不僅是指物理數(shù)據(jù),還指內(nèi)存、進(jìn)

程對象的組合。ORACLE數(shù)據(jù)庫都將數(shù)據(jù)存儲

在文件中,在其內(nèi)部,數(shù)據(jù)庫結(jié)構(gòu)提供了數(shù)據(jù)對

文件的邏輯映射,允許不同類型的數(shù)據(jù)分開存

放。這些邏輯劃分稱為表空間。關(guān)于表空間的概

念將在下文中介紹。

?表空間(Tablespace):是數(shù)據(jù)庫的邏輯劃分,

每個(gè)數(shù)據(jù)庫至少有一個(gè)表空間(system表空

間)。

4

?數(shù)據(jù)文件(DataFile):每個(gè)表空間由同一磁盤

上的一個(gè)或多個(gè)文件組成,這些文件叫數(shù)據(jù)文

件。建立新表空間需要建立新的數(shù)據(jù)文件。

?實(shí)例(Instance):也稱為服務(wù)器(server),

是存取和控制數(shù)據(jù)庫的軟件機(jī)制,它由系統(tǒng)全局

區(qū)SGA和后臺進(jìn)程組成。

ORACLE數(shù)據(jù)庫啟動時(shí),實(shí)際是啟動ORACLE實(shí)

例,(安裝并打開數(shù)據(jù)庫)。一個(gè)數(shù)據(jù)庫可以被多

個(gè)實(shí)例訪問(這是ORACLE的并行服務(wù)器選項(xiàng))。

決定實(shí)例的大小及組成的參數(shù)存儲在init.ora文件

中,實(shí)例啟動時(shí)需要讀這個(gè)文件,并且在運(yùn)行時(shí)可

以由數(shù)據(jù)庫管理員修改,但要在下次啟動實(shí)例時(shí)才

會起作用。

ffl說明:

實(shí)例名字可以由環(huán)境變量ORACLE_SID來定義。

實(shí)例的init.ora文件名通常包含該實(shí)例的名字,格式

為initSID.ora:如一個(gè)實(shí)例的名字(SID)為ora817,

則init.ora文件名通常為initora817.ora0

1.2ORACLE系統(tǒng)結(jié)構(gòu)

任何硬件平臺或操作系統(tǒng)下的ORACLE體系結(jié)構(gòu)

是相同的,包括如下三個(gè)方面:

5

⑴物理結(jié)構(gòu):數(shù)據(jù)文件,日志文件,控制文件,

參數(shù)文件。

⑵系統(tǒng)全局區(qū)(SGA):共享池,數(shù)據(jù)緩沖區(qū),

日志緩沖區(qū),字典緩沖區(qū)。

⑶進(jìn)程:用戶進(jìn)程,服務(wù)器進(jìn)程,后臺進(jìn)程。

ORACLE數(shù)據(jù)庫體系結(jié)構(gòu)

1.2.2ORACLE物理結(jié)構(gòu)

一個(gè)ORACLE數(shù)據(jù)庫是數(shù)據(jù)的集合,被處理成一

個(gè)單位。一個(gè)ORACLE數(shù)據(jù)庫有一個(gè)物理結(jié)構(gòu)和

一個(gè)邏輯結(jié)構(gòu)。數(shù)據(jù)庫物理結(jié)構(gòu)是由構(gòu)成數(shù)據(jù)庫的

操作系統(tǒng)文件所決定。每一個(gè)ORACLE數(shù)據(jù)庫是

由四種類型的文件組成:數(shù)據(jù)文件、日志文件、控

制文件和參數(shù)文件。數(shù)據(jù)庫的文件為數(shù)據(jù)庫信息提

供真正的物理存儲。

6

ORACLE數(shù)據(jù)庫的物理結(jié)構(gòu)由四類文件組成

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

數(shù)據(jù)文件是物理存儲ORACLE數(shù)據(jù)庫數(shù)據(jù)的文件,

每一個(gè)ORACLE數(shù)據(jù)庫有一個(gè)或多個(gè)物理的數(shù)據(jù)

文件(datafile)。一個(gè)數(shù)據(jù)庫的所有數(shù)據(jù)文件包含了

全部數(shù)據(jù)庫數(shù)據(jù)。邏輯數(shù)據(jù)庫結(jié)構(gòu)(如表、索引)

的數(shù)據(jù)物理地存儲在數(shù)據(jù)庫的數(shù)據(jù)文件中。數(shù)據(jù)文

件有下列特征:

?每一個(gè)數(shù)據(jù)文件只與一個(gè)數(shù)據(jù)庫聯(lián)系

?一個(gè)表空間可包含一個(gè)或多個(gè)數(shù)據(jù)文件

圖1-2給出數(shù)據(jù)庫、表空間及數(shù)據(jù)文件之間關(guān)系。

奉維舞主問*二零主問弟三舞空間

i

35

圖"數(shù)據(jù)庫、表空間及數(shù)據(jù)文件之間關(guān)系

2.日志文件

每一個(gè)數(shù)據(jù)庫有兩個(gè)或多個(gè)日志文件(redologfile)

的組,每一個(gè)日志文件組用于收集數(shù)據(jù)庫日志。日

志的主要功能是記錄對數(shù)據(jù)所做的修改,所以對數(shù)

7

據(jù)庫做的全部修改是記錄在日志中。日志文件的主

要作用是保護(hù)數(shù)據(jù)庫以防止故障。為了防止日志文

件本身的故障,ORACLE允許鏡象日志(mirrored

redolog),可以在不同磁盤上維護(hù)兩個(gè)或多個(gè)日志

副本。日志文件中的信息僅在系統(tǒng)故障或介質(zhì)故障

時(shí)用來恢復(fù)數(shù)據(jù)庫。

3.控制文件

每一個(gè)ORACLE數(shù)據(jù)庫有一個(gè)控制文件(control

file),它記錄數(shù)據(jù)庫的物理結(jié)構(gòu),包含下列信息類

型:

?數(shù)據(jù)庫名。

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

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

為了安全起見,允許控制文件被鏡象。每一個(gè)

ORACLE數(shù)據(jù)庫的實(shí)例啟動時(shí),它的控制文件用于

標(biāo)識數(shù)據(jù)庫和日志文件,當(dāng)著手?jǐn)?shù)據(jù)庫操作時(shí)它們

被打開。當(dāng)數(shù)據(jù)庫的物理組成更改時(shí),ORACLE自

動更改該數(shù)據(jù)庫的控制文件。數(shù)據(jù)恢復(fù)時(shí),也要使

用控制文件。

4.參數(shù)文件

是一個(gè)文本文件,可直接使用文本編輯器對其內(nèi)容

進(jìn)行修改,該文件只在建立數(shù)據(jù)庫和啟動實(shí)例時(shí)被

訪問,修改該文件后必須重啟實(shí)例才生效。

8

系統(tǒng)初始參數(shù)文件:init.ora

生成的參數(shù)文件為:irdtSID.ora

參數(shù)文件作用如下:

?設(shè)置SGA的大小。

?設(shè)置數(shù)據(jù)庫的全部缺省值。

?設(shè)置數(shù)據(jù)庫的范圍。

.在數(shù)據(jù)庫建立時(shí)定義數(shù)據(jù)庫的物理屬性。

?指定控制文件名和路徑。

?通過調(diào)整內(nèi)存結(jié)構(gòu),優(yōu)化數(shù)據(jù)庫性能。

m說明:

ORACLE8.1.7版本數(shù)據(jù)庫實(shí)例參數(shù)文件

“initSID.ora”是在安裝ORACLE數(shù)據(jù)庫過程中產(chǎn)

生的,一般情況下不需要手工修改。

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

SGA(SystemGlobalArea)是ORACLE系統(tǒng)為

實(shí)例分配的一組共享緩沖存儲區(qū),用于存放數(shù)據(jù)庫

數(shù)據(jù)和控制信息,以實(shí)現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的管理和操

作,圖1-3給出實(shí)例與SGA及數(shù)據(jù)庫關(guān)系。

9

數(shù)據(jù)庫

0i-3實(shí)例與SGA及數(shù)據(jù)庫關(guān)系

SGA分為以下幾個(gè)部分:

⑴共享池。

⑵數(shù)據(jù)塊緩沖區(qū)。

⑶日志緩沖區(qū)。

(4)字典緩沖區(qū)。

下面分別介紹:

ffl說明:

SGA的尺寸應(yīng)小于物理內(nèi)存的一半。

在ORACLE系統(tǒng)中,所有用戶與ORACLE數(shù)據(jù)庫

系統(tǒng)的數(shù)據(jù)交換都要經(jīng)過SGA區(qū)。

1.共享池(SharedPool)

由共享SQL區(qū)和數(shù)據(jù)字典區(qū)組成,參數(shù)

shared_pool_size確定共享池大小,共享SQL區(qū)

包括:

⑴SQL或PL/SQL語句的文本。

(DSQL或PL/SQL語句的語法分析形式。

⑵SQL或PL/SQL語句的執(zhí)行方案。

10

CQ說明:

shared_pool_size=物理內(nèi)存x(15~20)%

對于OPS取下限。

2.數(shù)據(jù)塊緩沖區(qū)

用于存儲從數(shù)據(jù)文件中讀出的數(shù)據(jù),其大小由以下

兩個(gè)參數(shù)決定:

?DB_BLOCK_SIZE確定數(shù)據(jù)塊的大小,一般為

2K或4K。

?DB_BLOCK_BUFFERS確定數(shù)據(jù)塊的數(shù)目。

DB_BUFFERS=DB_BLOCK_BUFFERSX

DB_BLOCK_SIZE=物理內(nèi)存義(15?25)%,對

于OPS取上限。該值應(yīng)盡量大。

3.日志緩沖區(qū)

以記錄項(xiàng)的形式備份數(shù)據(jù)庫緩沖區(qū)中被修改的緩

沖塊,這些記錄項(xiàng)將被寫到日志文件中。日志緩沖

區(qū)大小由參數(shù)LOG_BUFFER確定

4.字典緩沖區(qū)

用于存放數(shù)據(jù)字典信息行。

11

5.SGA設(shè)置大小總原則

在設(shè)置各參數(shù)調(diào)整SGA大小時(shí),應(yīng)保證其小于物

理內(nèi)存的一半。

SGA的計(jì)算方法如下:

SGA=DB_BLOCK_BUFFERSX

DB_BLOCK_SIZE+SHARE_POOL_SIZE+SORT

_AREA_SIZE+1M+3XDB_BLOCK_SIZEX

(CPUs+2)XPARALELL_MAX_SREVERS

ffl說明:

OPS才有最后一項(xiàng)。

SORT_AREA_SIZE:排序區(qū),并發(fā)用戶數(shù)較多,

需要排序時(shí)該值宜大。

PARALELL_MAX_SREVERS:2xCPU個(gè)數(shù)x4

X并發(fā)用戶數(shù)。對單CPU不能修改此值。

1.2.4進(jìn)程

進(jìn)程是操作系統(tǒng)中的一種機(jī)制,它可執(zhí)行一系列的

操作步驟(在有些操作系統(tǒng)中使用作業(yè)(JOB)或任

務(wù)(TASK)的術(shù)語來表示進(jìn)程)。一個(gè)進(jìn)程通常有它

自己的專用存儲區(qū)。

ORACLE實(shí)例有兩種類型:單進(jìn)程實(shí)例和多進(jìn)程實(shí)

例。通常用的是多進(jìn)程實(shí)例。

12

單進(jìn)程ORACLE(又稱單用戶ORACLE)是一種

數(shù)據(jù)庫系統(tǒng),一個(gè)進(jìn)程執(zhí)行全部ORACLE代碼。

由于ORACLE部分和客戶應(yīng)用程序不能分別以進(jìn)

程執(zhí)行,所以O(shè)RACLE的代碼和用戶的數(shù)據(jù)庫應(yīng)

用是單個(gè)進(jìn)程執(zhí)行。在單進(jìn)程環(huán)境下的ORACLE

實(shí)例,僅允許一個(gè)用戶可存取。例如在MS-DOS

上運(yùn)行ORACLEo

多進(jìn)程ORACLE實(shí)例(又稱多用戶ORACLE)使

用多個(gè)進(jìn)程來執(zhí)行ORACLE的不同部分,對于每

一個(gè)連接的用戶都有一個(gè)進(jìn)程。在多進(jìn)程系統(tǒng)中,

進(jìn)程分為兩類:用戶進(jìn)程和ORACLE進(jìn)程。當(dāng)一

用戶運(yùn)行一應(yīng)用程序,如PRO*C程序(Pro*C是

一種開發(fā)工具,它把過程化語言C和非過程化語

言SQL最完善地結(jié)合起來,具有完備的過程處理

能力,又能完成任何數(shù)據(jù)庫的處理品任務(wù),使用戶

可以通過編程完成各種類型的報(bào)表。)或一個(gè)

ORACLE工具(如SQLTLUS),為用戶運(yùn)行的

應(yīng)用建立一個(gè)用戶進(jìn)程。ORACLE系統(tǒng)進(jìn)程又分為

服務(wù)器進(jìn)程和后臺進(jìn)程。

1.服務(wù)器進(jìn)程

用于處理用戶請求的進(jìn)程。處理過程如下:

(D分析SQL命令并生成執(zhí)行方案。

⑵從數(shù)據(jù)緩沖區(qū)或磁盤中讀取數(shù)據(jù)。

⑶將執(zhí)行結(jié)果返回給用戶。

13

2.后臺進(jìn)程

為所有數(shù)據(jù)庫用戶異步完成各種任務(wù),主要包括如

下進(jìn)程(ora817表示實(shí)例名):

ora_reco_ora817恢復(fù)進(jìn)程:該進(jìn)程是在具有分

布式選項(xiàng)時(shí)所使用的一個(gè)進(jìn)

程,自動地解決在分布式事務(wù)

中的故障。一個(gè)結(jié)點(diǎn)RECOB

臺進(jìn)程自動地連接到包含有懸

而未決的分布式事務(wù)的其它數(shù)

據(jù)庫中,RECO自動地解決所

有的懸而不決的事務(wù)。任何相

應(yīng)于已處理的懸而不決的事務(wù)

的行將從每一個(gè)數(shù)據(jù)庫的懸掛

事務(wù)表中刪去。

當(dāng)一數(shù)據(jù)庫服務(wù)器的RECO

后臺進(jìn)程試圖建立同一遠(yuǎn)程服

務(wù)器的通信,如果遠(yuǎn)程服務(wù)器

是不可用或者網(wǎng)絡(luò)連接不能建

立時(shí),RECO自動地在一個(gè)時(shí)

間間隔之后再次連接。

RECO后臺進(jìn)程僅當(dāng)在允許分

布式事務(wù)的系統(tǒng)中出現(xiàn),而且

DISTRIBUTED-

TRANSACTIONS參數(shù)是大于

Oo

ora_dbw0_ora817數(shù)據(jù)庫寫進(jìn)程:該進(jìn)程執(zhí)行將

緩沖區(qū)寫入數(shù)據(jù)文件,是負(fù)責(zé)

緩沖存儲區(qū)管理的一個(gè)

ORACLE后臺進(jìn)程。當(dāng)緩沖區(qū)

14

中的一緩沖區(qū)被修改,它被標(biāo)

志為“弄臟”,此進(jìn)程的主要

任務(wù)是將“弄臟”的緩沖區(qū)寫

入磁盤,使緩沖區(qū)保持“干凈”。

ora_pmon_ora817進(jìn)程監(jiān)控進(jìn)程:該進(jìn)程在用戶

進(jìn)程出現(xiàn)故障時(shí)執(zhí)行進(jìn)程恢

復(fù),負(fù)責(zé)清理內(nèi)存儲區(qū)和釋放

該進(jìn)程所使用的資源。例:它

要重置活動事務(wù)表的狀態(tài),釋

放封鎖,將該故障的進(jìn)程的ID

從活動進(jìn)程表中移去。PMON

還周期地檢查調(diào)度進(jìn)程

(DISPATCHER)和服務(wù)器進(jìn)

程的狀態(tài),如果已死,則重新

啟動(不包括有意刪除的進(jìn)

程)。PMON有規(guī)律地被呼醒,

檢查是否需要,或者其它進(jìn)程

發(fā)現(xiàn)需要時(shí)可以被調(diào)用。

ora_lgwr_ora817日志寫進(jìn)程:該進(jìn)程將日志緩

沖區(qū)寫入磁盤上的一個(gè)日志文

件,它是負(fù)責(zé)管理日志緩沖區(qū)

的一個(gè)ORACLE后臺進(jìn)程。

ora_ckpt_ora817檢查點(diǎn)寫進(jìn)程:該進(jìn)程在檢查

點(diǎn)出現(xiàn)時(shí),對全部數(shù)據(jù)文件的

標(biāo)題進(jìn)行修改,指示該檢查點(diǎn)。

ora_smon_ora817系統(tǒng)監(jiān)控進(jìn)程:該進(jìn)程實(shí)例啟

動時(shí)執(zhí)行實(shí)例恢復(fù),還負(fù)責(zé)清

理不再使用的臨時(shí)段。在具有

并行服務(wù)器選項(xiàng)的環(huán)境卜,

SMON對有故障CPU或?qū)嵗?/p>

15

進(jìn)行實(shí)例恢復(fù)。SMON進(jìn)程有

規(guī)律地被呼醒,檢查是否需要,

或者其它進(jìn)程發(fā)現(xiàn)需要時(shí)可以

被調(diào)用。

1.3存儲管理

前面已經(jīng)提到過,ORACLE數(shù)據(jù)庫都將數(shù)據(jù)存儲在

數(shù)據(jù)文件中,在其內(nèi)部,數(shù)據(jù)庫結(jié)構(gòu)提供了數(shù)據(jù)對

數(shù)據(jù)文件的邏輯映射,允許不同類型的數(shù)據(jù)分開存

放。這些邏輯劃分稱為表空間,圖1-4給出了詳細(xì)

的ORACLE數(shù)據(jù)庫存儲結(jié)構(gòu)圖。

?i-4ORACLE存儲結(jié)構(gòu)圖

16

對于用戶,通常關(guān)心的是ORACLE的邏輯結(jié)構(gòu),

是在邏輯上是如何組成的,是如何存儲數(shù)據(jù)的,下

面詳細(xì)介紹。

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

ORACLE的邏輯結(jié)構(gòu)是由一個(gè)或多個(gè)表空間組成,

一個(gè)數(shù)據(jù)庫劃分為一個(gè)或多個(gè)邏輯單位,該邏輯單

位稱為表空間(tablespace)o一個(gè)表空間可將相

關(guān)的邏輯結(jié)構(gòu)組合在一起。

?一個(gè)表空間由一組分類段組成。

?一個(gè)段由一組范圍組成。

?一個(gè)范圍由一批數(shù)據(jù)庫塊組成。

?一個(gè)數(shù)據(jù)庫塊對應(yīng)一個(gè)或多個(gè)物理塊。

每一個(gè)ORACLE數(shù)據(jù)庫包含有一個(gè)名為SYSTEM

的表空間,在數(shù)據(jù)庫建立時(shí)自動建立。在該表空間

中包含有整個(gè)數(shù)據(jù)庫的系統(tǒng)信息數(shù)據(jù),最小的數(shù)據(jù)

庫可只需要SYSTEM表空間。表空間利用增加數(shù)

據(jù)文件可擴(kuò)大表空間,表空間的大小為組成該表空

間的數(shù)據(jù)文件的大小的和。ORACLE數(shù)據(jù)庫中一表

空間是由一個(gè)或多個(gè)物理數(shù)據(jù)文件組成,一個(gè)數(shù)據(jù)

文件只可與一個(gè)表空間相聯(lián)系。當(dāng)為一表空間建立

一數(shù)據(jù)文件時(shí),ORACLE建立該文件,分配指定的

磁盤空間容量。在數(shù)據(jù)文件初始建立后,所分配的

磁盤不包含有任何數(shù)據(jù)。

17

一個(gè)模式(schema)為模式對象(schemaobject)

的一個(gè)集合,每一個(gè)數(shù)據(jù)庫用戶對應(yīng)一個(gè)模式。模

式對象為直接引用數(shù)據(jù)庫數(shù)據(jù)的邏輯結(jié)構(gòu),模式對

象包含如表、視圖、索引、同義詞等結(jié)構(gòu)。模式對

象是邏輯數(shù)據(jù)存儲結(jié)構(gòu),每一種模式對象在磁盤上

沒有一個(gè)相應(yīng)文件存儲其信息。一個(gè)模式對象邏輯

地存儲在數(shù)據(jù)庫的一個(gè)表空間中,每一個(gè)對象的數(shù)

據(jù)物理地包含在表空間的一個(gè)或多個(gè)數(shù)據(jù)文件中。

例如:表、索引等模式對象,在指定表空間的數(shù)據(jù)

文件上為該對象分配多少空間。圖1-5說明模式對

象、表空間和數(shù)據(jù)文件之間的關(guān)系。

圖"模式對象、表空間和數(shù)據(jù)文件之間的關(guān)系

18

模式與表空間之間的關(guān)系為:一個(gè)表空間可包含不

同模式的對象,而一個(gè)模式中的對象可包含在不同

的表空間中。

1.數(shù)據(jù)庫塊

數(shù)據(jù)庫塊(databaseblock)是ORACLE邏輯分配

空間的最底層,又稱邏輯塊、頁或ORACLE塊。

數(shù)據(jù)庫塊是數(shù)據(jù)庫使用和分配空間的最小單元,也

可以說是使用的最小I/O單元,一個(gè)數(shù)據(jù)塊與磁盤

上指定的物理空間大小相一致,一個(gè)數(shù)據(jù)庫塊對應(yīng)

一個(gè)或多個(gè)物理塊,塊的大小由參數(shù)db_block_size

確定。

PCTFREE和PCTUSED是開發(fā)人員用來控制數(shù)據(jù)

塊中可用插入和更新數(shù)據(jù)的空閑空間大小的參數(shù)。

?PCTFREE:設(shè)置數(shù)據(jù)塊中保持空閑的百分比。

?PCTUSED:當(dāng)數(shù)據(jù)塊空閑空間達(dá)至UPCTFREE

時(shí),此塊不允許插入數(shù)據(jù),只能修改或刪除塊中

的行,更新時(shí)可能使數(shù)據(jù)塊空閑空間變大,已用

數(shù)據(jù)空間變小,當(dāng)已用空間低于PCTUSED時(shí),

則可以重新插入數(shù)據(jù)。

PCTFREE及PCTUSED的選擇:

.經(jīng)常做查詢(select)的表,應(yīng)使PCTFREE小

些,盡量減少存儲空間浪費(fèi)。

19

?經(jīng)常做插入(insert)的表,應(yīng)使PCTUSED大

——止匕

~~1o

?經(jīng)常做更新(update)的表,應(yīng)使PCTFREE

大一些,給更新留出更大的空間,減少行移動。

ca說明:

這兩個(gè)參數(shù)只能在創(chuàng)建、修改表和聚簇(數(shù)據(jù)段)

時(shí)指定。另外,在創(chuàng)建、修改索引(索弓I段)時(shí)只

能指定PCTFREE參數(shù)。

經(jīng)常做插入的表設(shè)置舉例:

createtableCOMMINFOR

(SERIALNUMBERVARCHAR2(20)

notnull,

ENTERHISTIMEDATE

notnull,

ACCEPTBEGINTIMEDATE

null,

ACCEPTDURATIONNUMBER(10)

null,

ACCEPTERNOVARCHAR2(4)

null,

CALLINGPHONENOVARCHAR2(20)

null

20

ACCEPTIDNUMBER(10)

null,

OPERATIONTYPEVARCHAR2(10)

null,

APPELLANTNAMEVARCHAR2(16)

null,

CONTACTIDNUMBER(10)

null,

)

pctfree10

pctused90

initrans2

maxtrans255

TABLESPACESERVICE_RPT_DAT;

經(jīng)常做查詢的表設(shè)置舉例:

createtableAUTH

(

AUTHIDNUMBER(10)

notnull,

DESCRIPTIONVARCHAR2(50)

null

constraintPK_AUTHprimarykey(AUTHID)

)

21

pctfree10

pctused40

TABLESPACESERVICE_RPT_DAT;

2.范圍(Extent)

數(shù)據(jù)庫存儲空間分配的邏輯單位,一個(gè)范圍由一組

數(shù)據(jù)塊組成,范圍是由段分配的,分配的第一個(gè)范

圍稱初始范圍,以后分配的范圍稱增量范圍。

Extent是段中分配空間的邏輯單元。它有如下特性:

?一個(gè)或多個(gè)范圍構(gòu)成一個(gè)段。

?當(dāng)段增長時(shí),范圍自動添加到段中。

?DBA可以手工把范圍加到一個(gè)段中。

?一個(gè)范圍不能跨數(shù)據(jù)文件,即一個(gè)擴(kuò)展只屬于一

個(gè)數(shù)據(jù)文件。

?一個(gè)范圍由一片連續(xù)的ORACLEblock構(gòu)成。

每個(gè)段在定義時(shí)有許多存儲參數(shù)來控制范圍的分

配,主要是STORGAE參數(shù),主要包括如下幾項(xiàng):

?INITIAL:分配給段的第一個(gè)范圍的字節(jié)數(shù),缺

省為5個(gè)數(shù)據(jù)塊。

?NEXT:分配給段的下一個(gè)增量范圍的字節(jié)數(shù),

缺省為5個(gè)數(shù)據(jù)塊。

?MAXEXTENTS:最大擴(kuò)展次數(shù)。

22

?PCTINCREASE:每一個(gè)增量范圍都在最新分配

的增量范圍上增長,這個(gè)百分?jǐn)?shù)缺省為50%,

建表時(shí)通常設(shè)置為0,建表空間時(shí)為1%。

范圍在分配時(shí),遵循如下分配方式:

?初始創(chuàng)建時(shí),分配INITIAL指定大小的區(qū)。

?空間不夠時(shí),按NEXT大小分配第二個(gè)區(qū)。

?再不夠時(shí),按NEXT+NEXT*PCTINCREASE

分配。

可以對表、聚集、索引、回滾段、表空間等實(shí)體設(shè)

置存儲參數(shù)。

3.段

是表空間中一個(gè)指定類型的邏輯存儲結(jié)構(gòu),它由一

個(gè)或多個(gè)Extent組成,段將占用并增長存儲空間,

但是一個(gè)段不能跨越表空間,ORACLE中有數(shù)據(jù)

段、索引段、臨時(shí)段、回滾段和自舉段(包含打開

數(shù)據(jù)庫時(shí)要裝入的數(shù)據(jù)字典表)。

當(dāng)執(zhí)行建表命令時(shí),系統(tǒng)將自動創(chuàng)建一個(gè)段,若沒

有指定存儲參數(shù)子句storage,則系統(tǒng)會用相應(yīng)表

空間的storage,當(dāng)初始區(qū)用完后,系統(tǒng)會按next

和pctincrease的值分配新的區(qū)。

在這里要講一個(gè)比較重要的概念:回滾段?;貪L段

是當(dāng)某事務(wù)修改一個(gè)數(shù)據(jù)塊時(shí),用以存放數(shù)據(jù)以前

23

映像信息的數(shù)據(jù)段?;貪L段中的信息用以保存讀連

續(xù)性,并進(jìn)行事務(wù)回滾和事務(wù)恢復(fù)。例如,如果事

務(wù)通過把一列的關(guān)鍵值從10改為20來修改數(shù)據(jù)

塊,則原值10要存放于回滾段中,而數(shù)據(jù)塊將具

有新值20。如果事務(wù)被回滾,則值10從回滾段拷

回?cái)?shù)據(jù)塊。事務(wù)產(chǎn)生的重做記錄保證在事務(wù)提交或

回滾之前保持在回滾段中,而一個(gè)事務(wù)只能用一個(gè)

回滾段存放其所有的重做記錄,因此,如果回滾段

大小配置不恰當(dāng),當(dāng)ORACLE執(zhí)行一個(gè)大的事務(wù)

時(shí),就會出現(xiàn)回滾段溢出的錯(cuò)誤。所以設(shè)置回滾段

大小是一個(gè)比較重要的問題,這取決于數(shù)據(jù)庫應(yīng)用

的主要事務(wù)模式(穩(wěn)定的平均事務(wù)速度、頻繁大型

事務(wù)、不頻繁大型事務(wù)),并可通過一些測試來確

定。

這里還有另外一個(gè)概念:臨時(shí)段。用于以下SQL

操作:

?CREATEINDEX

?帶DISTINCT,ORDERBY,GROUPBY,

UNION,INTERSECT和MINUS子句的

SELECT語句

?無索引的JION語句

?某些相互關(guān)聯(lián)的子查詢

了解了邏輯結(jié)構(gòu)后,下面介紹數(shù)據(jù)庫中存儲對象。

24

1.3.3表(Table)

1.表的組成

表是數(shù)據(jù)庫的最基本的邏輯結(jié)構(gòu),一切數(shù)據(jù)都存放

在表中,一個(gè)ORACLE數(shù)據(jù)庫就是由若干個(gè)數(shù)據(jù)

表組成。其它數(shù)據(jù)庫對象都是為了用戶很好地操作

表中的數(shù)據(jù)。表是關(guān)系模型中反映實(shí)體與屬性關(guān)系

的二維表格,它由列和行組成,通過行與列的關(guān)系,

表達(dá)出了實(shí)體與屬性的關(guān)系,如圖1-6所示。

編號。螭碼。名稱。電話蒲地址。

DDD1Pdxj*3北?京市電信局C74987865d方平路15號*

則中國工商銀行”8806047死公主墳1號Q

DDD3,DRDE^鄧宏德。350。7856a友誼路27號。

主關(guān)鍵字"列/字段。

非空列。

圖1-6表(Table)的組成

表的組成部分有:

列/域/字段:表的內(nèi)容,也就是實(shí)體的各個(gè)屬性,

組成了表的各個(gè)列。

?列名:歹U的名稱。

?長度:該列所能容納的最大數(shù)據(jù)位數(shù)。

?類型:該列存儲的數(shù)據(jù)類型,常用數(shù)據(jù)類型如表

0-0所示。

?關(guān)鍵字:該列能唯一表示一行內(nèi)容,則稱該列為

關(guān)鍵字。

25

?非空列:該列值是不能為空的。

常用數(shù)據(jù)類型

數(shù)據(jù)類型說明串長度

Char(長度)定長字符串255

Varchar(長

變長字符串2000

度)

Number(精

數(shù)字

度,比例)

Daten期時(shí)間

大型可變長字

Long(長度)21億

符串

行/記錄:表中所有列組合在一起形成的一條信息,

稱之為一行或一條記錄。

?所屬表:記錄一定是歸屬于某一張表的。

?行號:每條記錄在數(shù)據(jù)庫中的一個(gè)定位位置。在

ORACLE數(shù)據(jù)庫中,每張表有一系統(tǒng)提供的偽

列來定位每條記錄。

?記錄長度:該記錄所有非空列的長度求和得出的

字節(jié)數(shù)。

2.建表命令

建表命令如下:

26

CREATETABLEtablename

(columnldatatype[DEFAULTexpression]

[constraint],

columnldatatype[DEFAULTexpression]

[constraint],

……)

[STORAGE子句]

[其他子句];

建表舉例:

createtableAUTOCALLLOG

(IDVARCHAR2(20)

notnull,

CityldNUMBER(4)

NULL

)

TABLESPACESERVICE_HIST_DAT

PCTFREE10

PCTUSED90

STORAGE

(INITIAL10M

NEXT10M

MINEXTENTS2

27

MAXEXTENTS500

pctiincrease0

);

3.刪除表中數(shù)據(jù)

刪除表中數(shù)據(jù)有以下兩種方式:

?Delete:刪除數(shù)據(jù)時(shí),數(shù)據(jù)庫需要寫日志,

ORACLE數(shù)據(jù)庫還需要占用回滾段,每次事務(wù)

越大,對數(shù)據(jù)庫的沖擊越大,所以在刪除或者更

新數(shù)據(jù)時(shí),一定要注意控制事務(wù)的大小。

ORACLE數(shù)據(jù)庫在刪除或更新數(shù)據(jù)時(shí),where

條件中加rownum控制每次刪除或更新的數(shù)量,

如:

deletefromt_my_tablewhere...and

rownum<2000;

?Truncate:刪除表中所有數(shù)據(jù),并回收空間。

ca說明:

用Delete刪除數(shù)據(jù)時(shí),只刪除數(shù)據(jù),但不釋放空間,

并且產(chǎn)生碎片。

可以采用導(dǎo)出后truncate表,然后再導(dǎo)入的方法解

決碎片的問題。

28

4.刪除表

刪除表命令為DROP,利用DROP命令刪除表注

忌:

?刪除表中全部行。

?刪除表中全部索引。

.如果它不是聚集的成分,系統(tǒng)將收回該表的所有

存儲空間。

.如果該表為視圖的基表,或在存儲過程、函數(shù)或

包中被引用,ORACLE將使這些對象無效但沒

有被刪除,在表恢復(fù)后,這些對象仍可使用。

5.建表約束

建表約束包括:

⑴非空完整性約束。

⑵唯一完整性約束。

⑶主碼完整性約束。

(4)check完整性約束。

⑸引用完整性約束。

例如:在下面語句中包括了除“唯一完整性約束”

外的所有約束。

SQL>createtableemp

(enochar(4)constrainte1primarykey,

29

enamechar(8)notnull,

salnumber(8,2)constraintck1

check(salbetween5000and10000),

mgrchar(4),

dnochar(2)constraintd2

referencesdep(dno)

ondeletecascade

);

引用完整性約束時(shí)需要注意以下幾點(diǎn):

⑴先建主表,后從表。

⑵從表引用的必須是主表的主碼或定義了唯一性

約束的列。

⑶從表的外來碼值必須匹配與主表的引用碼的值

⑷當(dāng)刪除主表記錄時(shí),從表指定了ondelete

cascade子句,連帶刪除從表記錄,否則,若

從表中有對應(yīng)記錄,則不能刪除主表記錄。

1.3.4視圖(View)

視圖,數(shù)據(jù)中表的窗口,在表上的查詢所形成的一

個(gè)數(shù)據(jù)集體。通過視圖,你將看到你所需要的信息,

而排除其它不關(guān)心的內(nèi)容。

?將表中所需要的列和行選取出來傳遞給用戶。

30

?不是真正將數(shù)據(jù)重新復(fù)制一遍,不占用存儲空

間。

?不僅在表的基礎(chǔ)上建立,還可在視圖的基礎(chǔ)之上

再建立視圖。

建立視圖主要基于:

?保護(hù)數(shù)據(jù)安全,防止機(jī)密數(shù)據(jù)泄露。

?簡化數(shù)據(jù)查詢方式,建立有效的查詢。

?保持?jǐn)?shù)據(jù)獨(dú)立性,保證程序不會隨著數(shù)據(jù)的位置

變化、名稱變化而需要修改。

ca說明:

ORACLE數(shù)據(jù)庫的視圖請參考“附錄AORACLE

數(shù)據(jù)字典與視圖”。

1.3.5索引(Index)

索引是與表相關(guān)的一種選擇結(jié)構(gòu)。索引可建立在一

表的一列或多列上,一旦建立,由ORACLE自動

維護(hù)和使用,對用戶是完全透明的。索引是邏輯地

和物理地獨(dú)立于數(shù)據(jù),它們的建立或刪除對表沒有

影響,所有應(yīng)用可繼續(xù)處理。

關(guān)于索引需要注意以下幾點(diǎn):

31

⑴索引是一種數(shù)據(jù)庫對象,并不改變表的邏輯結(jié)

構(gòu),而是在物理存儲結(jié)構(gòu)上增加一些輔助信息,

以提高查詢速度。

(2)當(dāng)表中記錄增加或刪除時(shí),索引結(jié)構(gòu)均要發(fā)生

變化,因此,當(dāng)有大量數(shù)據(jù)裝入數(shù)據(jù)庫時(shí),應(yīng)

該先裝入數(shù)據(jù),后建立索引,以提高數(shù)據(jù)裝入

速度。

⑶只有當(dāng)按指定的索引列的值查找或按索引列的

順序存取表時(shí),才可利用索引提高性能。

EQ說明:

當(dāng)索引被刪除后,原分配給索引的數(shù)據(jù)塊將全部返

回給索引所在的表空間.

建立索引可以:

?加快查詢速度。

?確保唯一性特征。可以為表中某一列建一個(gè)唯

一性索引,那么如果有人企圖向表中插入這樣

一行記錄,即它在這個(gè)有索引的列的數(shù)值與以

前已有值重復(fù),則這個(gè)操作就會失敗。

32

1.3.6同義詞(Synonym)

同義詞是表、視圖或其它數(shù)據(jù)庫實(shí)體的一個(gè)別名。

可以用與存取表、視圖等實(shí)體同樣的方法來存取別

名。

?簡單性(用戶名.表名一同義詞名)。

?表的獨(dú)立性(只需修改同義詞的定義,避免修改

大量應(yīng)用程序)。

1.3.7序歹ij(Sequence)

序列是一個(gè)數(shù)據(jù)庫對象,利用它可以生成唯一的整

數(shù),序列的值是由ORACLE程序自動生成。

創(chuàng)建序列:

SQL>createsequencezxkincrementby

10

startwith10maxvalue1000

cycle;

上例說明:

?incrementby10增量值為10。

?startwith10指定生成的第一個(gè)序列號為10。

?maxvalue1000指定序列可生成的最大值。

?cycle序列上升到最大值1000后,繼續(xù)由開始

值10開始生成。

33

引用序列:

序列當(dāng)前值:zxk.currval

序列下一個(gè)值:zxk.nextval

1.3.8數(shù)據(jù)庫鏈(DatabaseLink)

數(shù)據(jù)庫鏈?zhǔn)潜镜財(cái)?shù)據(jù)庫中的一個(gè)對象,利用它可以

存取遠(yuǎn)程數(shù)據(jù)庫上的對象。

在遠(yuǎn)程表或視圖之后附加@db鏈名,即可在SQL

語句中引用遠(yuǎn)程表或視圖。

有專用數(shù)據(jù)庫鏈和公用數(shù)據(jù)庫鏈之分,專用數(shù)據(jù)庫

鏈僅為建立者使用;公用數(shù)據(jù)庫鏈必須用關(guān)鍵字

public定義,公用數(shù)據(jù)庫鏈可為全部用戶使用。

創(chuàng)建數(shù)據(jù)庫鏈:

對由連接串“icd_main”指定的數(shù)據(jù)庫上的用戶

icdmain,口令為icd,建立一名為icdmainold的數(shù)

據(jù)庫鏈。

SQL>createdatabaselinkicdmainold

>connecttoicdmain

>identifiedbyicd

>using'icd_main';

下面給出使用數(shù)據(jù)庫鏈進(jìn)行查詢、插入、修改、刪

除舉例:

34

SQL>select*fromemp@icdmainold;

SQL>insertintoemp@icdmainold

>values('0001','zxk',5000,'001O','00');

SQL>updateemp@icdmainold

>setsal=sal+1000;

SQL>deletefromemp@icdmainold

>whereename='aaaa';

35

第2章管理ORACLE數(shù)據(jù)庫

本章主要講述管理ORACLE數(shù)據(jù)庫的一些必備知

識。

2.1基本概念

2.1.1數(shù)據(jù)字典

數(shù)據(jù)字典是ORACLE數(shù)據(jù)庫的最重要的部分之一,

是由一組只讀的表及其視圖所組成。這些表和視圖

是數(shù)據(jù)庫被建立同時(shí)由數(shù)據(jù)庫系統(tǒng)建立起來的,起

著系統(tǒng)狀態(tài)的目錄表的作用。數(shù)據(jù)字典描述表、歹U、

索引、用戶、訪問權(quán)以及數(shù)據(jù)庫中的其它實(shí)體,當(dāng)

其中的一個(gè)實(shí)體被建立、修改或取消時(shí),數(shù)據(jù)庫將

自動修改數(shù)據(jù)字典。因此,數(shù)據(jù)字典總是包含著數(shù)

據(jù)庫的當(dāng)前描述。數(shù)據(jù)字典提供有關(guān)該數(shù)據(jù)庫的信

息,可提供的信息如下:

?ORACLE用戶的名字。

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

?模式對象的名字(表、視圖、索引、同義詞等)。

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

?列的缺省值。

?有關(guān)數(shù)據(jù)庫中對象的空間分布信息及當(dāng)前使用

情況。

36

?審計(jì)信息(如誰存取或修改各種對象)。

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

可用SQL存取數(shù)據(jù)字典,由于數(shù)據(jù)字典為只讀,

只允許查詢。數(shù)據(jù)字典中全部基本表和用戶可存取

視圖為ORACLE用戶SYS所持有,所有對象包含

在SYS模式中,安全管理員對該帳號要嚴(yán)格控制。

當(dāng)ORACLE數(shù)據(jù)庫系統(tǒng)啟動后,數(shù)據(jù)字典總是可

用,它駐留在SYSTEM表空間中。數(shù)據(jù)字典包含

視圖集,在許多情況下,每一視圖集有三種視圖包

含有類似信息,彼此以前綴相區(qū)別,前綴為USER、

ALL和DBAo

?前綴為USER的視圖,為用戶視圖,是在用戶

的模式內(nèi)。

?前綴為ALL的視圖為擴(kuò)展的用戶視圖(為用戶

可存取的視圖)。

?前綴為DBA的視圖為DBA的視圖(為全部用

戶可存取的視圖)。

常用數(shù)據(jù)字典與視圖

ORACLE數(shù)據(jù)庫有三個(gè)可查看系統(tǒng)數(shù)據(jù)庫字典的

用戶:system、internal、sys,其它用戶只能查看

授權(quán)表空間的數(shù)據(jù)庫字典,以某一用戶登錄數(shù)據(jù)庫

后可查看一些數(shù)據(jù)字典,了解數(shù)據(jù)庫的資源情況,

37

對日常維護(hù)的故障定位能起很大的幫助,下面就一

些常用的數(shù)據(jù)表(視圖)進(jìn)行簡單的說明:

(1)dba_tablespaces(user_tablespaces)

除三個(gè)系統(tǒng)用戶以外的用戶登錄可查看

user_tablespaces表。

dba_tablespaces(userjablespaces)表可查看本

數(shù)據(jù)庫的表空間,它存放各個(gè)表空間的屬性,包括:

表空間名、表空間宿主、以及存儲參數(shù)(irdtial、next、

maxextents>minextents>blocks等)等。

(2)dba_data_files(user_data_files)

該表可查看數(shù)據(jù)庫所有數(shù)據(jù)庫數(shù)據(jù)文件,它存放了

各個(gè)數(shù)據(jù)文件的屬性,包括:表空間名、宿主、數(shù)

據(jù)文件名、大小、可用空間以及ID號等。

(3)dba_segments(user_segments)

該表可查看數(shù)據(jù)庫所有段,它存放了各個(gè)段的屬

性,包括:段名、表空間名、宿主、大小、第一個(gè)

區(qū)間的塊號等。

(4)dba_rollback_segs

該表可查看數(shù)據(jù)庫所有回滾段,它存放了各個(gè)數(shù)據(jù)

庫回滾段的屬性,包括:回滾段名、表空間名、宿

主、存儲參數(shù)(initial、next、maxextents>minextents

等)、第一個(gè)區(qū)間的塊號、占用數(shù)據(jù)庫文件ID號。

(5)dba_extents

38

該表可查看數(shù)據(jù)庫所有區(qū)間,它存放了各個(gè)區(qū)間的

屬性,包括:區(qū)間ID、使用段ID、所屬對象(object)

名、宿主、占用數(shù)據(jù)庫文件ID(對應(yīng)dba_data_files

中的ID號)、塊號等。

常見應(yīng)用:查看各對象的區(qū)間是否已達(dá)到了最大區(qū)

間數(shù)量(maxextents)。

selectobject_name,sum(*)fromdba_extents

groupbyobject_name;

(6)dba_free_spaces

可查看數(shù)據(jù)庫表空間的使用情況,如查看各數(shù)據(jù)庫

表空間的可用空間:

selecttablespace_name,sum(bytes)from

dba_free_spacesgroupbytalbespace_name;

以上為常用的數(shù)據(jù)字典,可在維護(hù)中靈活應(yīng)用。在

維護(hù)過程中,第一步應(yīng)查看數(shù)據(jù)庫管理系統(tǒng)的運(yùn)行

日志,日志文件的存放路徑應(yīng)版本不同而不同,一

般:ORACLEworkgroup版,日志文件存放路徑為:

$ORACLE_HOME/rdbms/alert_'SID'.log,OPS版,

日志文件存放路徑為:

$ORACLE_HOME/../../admin/bdump/alert_'SID'.l

ogo可用命令:taillogfilename查看,或用vi

logfilename,按shift+g到文件尾進(jìn)行查看。

39

CQ說明:

附錄A詳細(xì)列出了ORACLE的數(shù)據(jù)字典與視圖,

供參考。

2.1.2事務(wù)管理

1.事務(wù)(transaction)

數(shù)據(jù)庫是多用戶的共享資源,在多個(gè)用戶并行地存

取數(shù)據(jù)時(shí),應(yīng)對數(shù)據(jù)做并發(fā)控制,以免存取不正確

的數(shù)據(jù),破壞數(shù)據(jù)庫的一致性。

數(shù)據(jù)庫的任何狀態(tài)變化都要能反映客觀世界的某

種真實(shí)存在的合理狀態(tài),反映到數(shù)據(jù)庫中,就是數(shù)

據(jù)要滿足一定的約束條件,這種約束條件就是一致

性約束。

有時(shí),為了完成復(fù)雜的修改動作,往往需要臨時(shí)破

壞數(shù)據(jù)庫的狀態(tài)一致性。因此,就有必要把這種對

數(shù)據(jù)庫復(fù)雜修改的一連串動作序列合并起來,這就

是事務(wù)。

事務(wù)是數(shù)據(jù)庫維護(hù)數(shù)據(jù)一致性的單位,它將數(shù)據(jù)庫

從一致性狀態(tài)轉(zhuǎn)換成新的一致性狀態(tài)。

2.事務(wù)提交

提交事務(wù):即將在事務(wù)中由SQL語句所執(zhí)行的改

變永久化。數(shù)據(jù)庫數(shù)據(jù)的更新操作提交以后,這些

40

更新操作就不能再撤消。ORACLE的提交命令如

下:

SQL>COMMIT;

3.事務(wù)回退

事務(wù)回退的含義是:撤消未提交事務(wù)中的SQL語

句所作的對數(shù)據(jù)修改。ORACLE允許撤消未提交的

整個(gè)事務(wù),也允許撤消部分(需設(shè)置保存點(diǎn))?;赝?/p>

之后,數(shù)據(jù)庫將恢復(fù)事務(wù)開始時(shí)的狀態(tài)或保留點(diǎn)狀

態(tài)。回退命令如下:

SQL>ROLLBACK;

4.保存點(diǎn)

保存點(diǎn)就是將一個(gè)事務(wù)劃分成為若干更小的部分,

以便在必要時(shí),使當(dāng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論