Oracle數(shù)據(jù)庫(kù)實(shí)例及其相關(guān)概念
完整的Oracle數(shù)據(jù)庫(kù)通常由兩部分組成:Oracle數(shù)據(jù)庫(kù)實(shí)例和數(shù)據(jù)庫(kù)。
1)數(shù)據(jù)庫(kù)是一系列物理文件的集合(數(shù)據(jù)文件,控制文件,聯(lián)機(jī)日志,參數(shù)文件等);
2)Oracle數(shù)據(jù)庫(kù)實(shí)例則是一組Oracle后臺(tái)進(jìn)程/線程以及在服務(wù)器分配的共享內(nèi)存區(qū)。
在啟動(dòng)Oracle數(shù)據(jù)庫(kù)服務(wù)器時(shí),實(shí)際上是在服務(wù)器的內(nèi)存中創(chuàng)建一個(gè)Oracle實(shí)例(即在服務(wù)器內(nèi)存中分配共享內(nèi)存并創(chuàng)建相關(guān)的后臺(tái)內(nèi)存),然后由這個(gè)Oracle數(shù)據(jù)庫(kù)實(shí)例來(lái)訪問(wèn)和控制磁盤(pán)中的數(shù)據(jù)文件。Oracle有一個(gè)很大的內(nèi)存快,成為全局區(qū)(SGA)。
一、數(shù)據(jù)庫(kù)、表空間、數(shù)據(jù)文件
1.數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)是數(shù)據(jù)集合。Oracle是一種數(shù)據(jù)庫(kù)管理系統(tǒng),是一種關(guān)系型的數(shù)據(jù)庫(kù)管理系統(tǒng)。
通常情況了我們稱(chēng)的“數(shù)據(jù)庫(kù)”,并不僅指物理的數(shù)據(jù)集合,他包含物理數(shù)據(jù)、數(shù)據(jù)庫(kù)管理系統(tǒng)。也即物理數(shù)據(jù)、內(nèi)存、操作系統(tǒng)進(jìn)程的組合體。
數(shù)據(jù)庫(kù)的數(shù)據(jù)存儲(chǔ)在表中。數(shù)據(jù)的關(guān)系由列來(lái)定義,即通常我們講的字段,每個(gè)列都有一個(gè)列名。數(shù)據(jù)以行(我們通常稱(chēng)為記錄)的方式存儲(chǔ)在表中。表之間可以相互關(guān)聯(lián)。以上就是關(guān)系模型數(shù)據(jù)庫(kù)的一個(gè)最簡(jiǎn)單的描述。
當(dāng)然,Oracle也是提供對(duì)面象對(duì)象型的結(jié)構(gòu)數(shù)據(jù)庫(kù)的***大支持,對(duì)象既可以與其它對(duì)象建立關(guān)系,也可以包含其它對(duì)象。關(guān)于OO型數(shù)據(jù)庫(kù),以后利用專(zhuān)門(mén)的篇幅來(lái)討論。一般情況下我們的討論都基于關(guān)系模型。
2.表空間、文件
無(wú)論關(guān)系結(jié)構(gòu)還是OO結(jié)構(gòu),Oracle數(shù)據(jù)庫(kù)都將其數(shù)據(jù)存儲(chǔ)在文件中。數(shù)據(jù)庫(kù)結(jié)構(gòu)提供對(duì)數(shù)據(jù)文件的邏輯映射,允許不同類(lèi)型的數(shù)據(jù)分開(kāi)存儲(chǔ)。這些邏輯劃分稱(chēng)作表空間。
表空間(tablespace)是數(shù)據(jù)庫(kù)的邏輯劃分,每個(gè)數(shù)據(jù)庫(kù)至少有一個(gè)表空間(稱(chēng)作SYSTEM表空間)。為了便于管理和提高運(yùn)行效率,可以使用一些附加表空間來(lái)劃分用戶(hù)和應(yīng)用程序。例如:USER表空間供一般用戶(hù)使用,RBS表空間供回滾段使用。一個(gè)表空間只能屬于一個(gè)數(shù)據(jù)庫(kù)。
每個(gè)表空間由同一磁盤(pán)上的一個(gè)或多個(gè)文件組成,這些文件叫數(shù)據(jù)文件(datafile)。一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間。在Oracle7.2以后,數(shù)據(jù)文件創(chuàng)建可以改變大小。創(chuàng)建新的表空間需要?jiǎng)?chuàng)建新的數(shù)據(jù)文件。數(shù)據(jù)文件一旦加入到表空間中,就不能從這個(gè)表空間中移走,也不能與其它表空間發(fā)生聯(lián)系。
如果數(shù)據(jù)庫(kù)存儲(chǔ)在多個(gè)表空間中,可以將它們各自的數(shù)據(jù)文件存放在不同磁盤(pán)上來(lái)對(duì)其進(jìn)行物理分割。在規(guī)劃和協(xié)調(diào)數(shù)據(jù)庫(kù)I/O請(qǐng)求的方法中,上述的數(shù)據(jù)分割是一種很重要的方法。
3.Oracle數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)分為邏輯存儲(chǔ)結(jié)構(gòu)和物理存儲(chǔ)結(jié)構(gòu):
1)邏輯存儲(chǔ)結(jié)構(gòu):用于描述Oracle內(nèi)部組織和管理數(shù)據(jù)的方式;
2)物理存儲(chǔ)結(jié)構(gòu):用于描述Oracle外部即操作系統(tǒng)中組織和管理數(shù)據(jù)的方式。
二、Oracle數(shù)據(jù)庫(kù)實(shí)例
為了訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù),Oracle使用一組所有用戶(hù)共享的后臺(tái)進(jìn)程。此外,還有一些存儲(chǔ)結(jié)構(gòu)(統(tǒng)稱(chēng)為System Gloabl Area,即SGA),用來(lái)存儲(chǔ)最近從數(shù)據(jù)庫(kù)查詢(xún)的數(shù)據(jù)。數(shù)據(jù)塊緩存區(qū)和SQL共享池(Shared SQL Pool)是SGA的***部分,一般占SGA內(nèi)存的95%以上。通過(guò)減少對(duì)數(shù)據(jù)文件的I/O次數(shù),這些存儲(chǔ)區(qū)域可以改善數(shù)據(jù)庫(kù)的性能。
Oracle數(shù)據(jù)庫(kù)實(shí)例(instance)也稱(chēng)作服務(wù)器(server),是用來(lái)訪問(wèn)數(shù)據(jù)庫(kù)文件集的存儲(chǔ)結(jié)構(gòu)及后臺(tái)進(jìn)程的集合。一個(gè)數(shù)據(jù)庫(kù)可以被多個(gè)實(shí)例訪問(wèn)(這是Oracle并行服務(wù)器選項(xiàng))。
決定實(shí)例大小及組成的參數(shù)存儲(chǔ)在init.ora文件中(在9i中是spfile)。Oracle數(shù)據(jù)庫(kù)實(shí)例啟動(dòng)時(shí)需要讀這個(gè)文件,并且在運(yùn)行時(shí)可以由數(shù)據(jù)庫(kù)管理員修改。對(duì)該文件的任何修改都只有在下一次啟動(dòng)時(shí)才啟作用。實(shí)例的init.ora文件件通常包含實(shí)例的名字:如果一個(gè)實(shí)例名為orcl,那么init.ora文件通常被命名為initorcl.ora。另一個(gè)配置文件config.ora用來(lái)存放在數(shù)據(jù)庫(kù)創(chuàng)建后就不再改變的變量值(如數(shù)據(jù)庫(kù)的塊大小)。實(shí)例的config.ora文件通常也包含該實(shí)例的名字:如果實(shí)例的名字為orcl,則config.ora一般將被命名為configorcl.ora。為了便于使用config.ora文件的設(shè)置值,在實(shí)例的init.ora文件中,該文件必須通過(guò)IFILE參數(shù)作為包含文件列出。
【編輯推薦】