[ORACLE實(shí)例與數(shù)據(jù)庫(kù)詳解]:
在實(shí)際的開(kāi)發(fā)應(yīng)用中,關(guān)于Oracle數(shù)據(jù)庫(kù),經(jīng)常聽(tīng)見(jiàn)有人說(shuō)建立一個(gè)數(shù)據(jù)庫(kù),建立一個(gè)Instance,啟動(dòng)一個(gè)
Instance之類(lèi)的話(huà)。 其實(shí)問(wèn)他們什么是數(shù)據(jù)庫(kù),什么是Instance,很可能他們給的答案就是數(shù)據(jù)庫(kù)就是
Instance,Instance就是數(shù)據(jù)庫(kù)啊,沒(méi)有什么區(qū)別。在這里,只能說(shuō)雖然他們Oracle用了可能有了一定的經(jīng)
驗(yàn),不過(guò)基礎(chǔ)的概念還是不太清楚。
什么是數(shù)據(jù)庫(kù),其實(shí)很簡(jiǎn)單,數(shù)據(jù)庫(kù)就是存儲(chǔ)數(shù)據(jù)的一種媒介。比如常用的文件就是一種,在Oracle10G中,
數(shù)據(jù)的存儲(chǔ)有好幾種。第一種是文件形式,也就是在你的磁盤(pán)中創(chuàng)建一批文件,然后在這些文件中存儲(chǔ)信息
。第二種就是磁盤(pán)陣列形式,這個(gè)是什么意思呢,這個(gè)就是說(shuō)明數(shù)據(jù)庫(kù)不是存放為某個(gè)文件,而是把一個(gè)或
者多個(gè)磁盤(pán)格式化成Oracle的一種格式了,等于整個(gè)磁盤(pán)就是存放Oracle數(shù)據(jù)庫(kù)的,不能作為別的用途。這
樣的優(yōu)點(diǎn)是存儲(chǔ)性能高,因?yàn)椴辉俳柚鷦e的文件格式了,而是把整個(gè)磁盤(pán)都成為Oracle最適應(yīng)的文件系統(tǒng)格
式。當(dāng)然還可能有別的形式,比如網(wǎng)絡(luò)什么的。不過(guò)我們最常用的還是文件格式的,在文件格式中,數(shù)據(jù)庫(kù)
指的就是那些數(shù)據(jù)文件,控制文件以及REDO文件等等一系列文件。
而什么是Instance呢,Instance其實(shí)就是指的操作系統(tǒng)中一系列的進(jìn)程以及為這些進(jìn)程所分配的內(nèi)存塊。在
Oracle中,我們可以新建一個(gè)Oracle的Instance,這個(gè)時(shí)候雖然有了進(jìn)程還有SGA等一系列的內(nèi)存快,但是這
個(gè)時(shí)候并沒(méi)有把數(shù)據(jù)庫(kù)文件讀取進(jìn)來(lái)。所以只是一個(gè)實(shí)例,在后來(lái),你可以通過(guò)命令手動(dòng)或者自動(dòng)地把數(shù)據(jù)
庫(kù)文件加載進(jìn)我們的數(shù)據(jù)庫(kù)Instance中,這個(gè)時(shí)候的數(shù)據(jù)庫(kù)才可以讓我們真正的開(kāi)始訪問(wèn)操作。
所以說(shuō),數(shù)據(jù)庫(kù)的應(yīng)用如果想實(shí)現(xiàn),數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)Instance是缺一不可的,如果只有數(shù)據(jù)庫(kù)的那些文件,
那么,只能代表數(shù)據(jù)在這個(gè)文件中,但是我們無(wú)法直接進(jìn)行操作。而如果只有數(shù)據(jù)庫(kù)Instance,那么我們雖
然可以急性操作,但是也不知道操作哪些數(shù)據(jù),操作生成的數(shù)據(jù)也無(wú)法保存等等。所以,當(dāng)一個(gè)Oracle
Instance真正Load了一個(gè)Oracle Database了以后,數(shù)據(jù)庫(kù)才可以被我們使用。
在這里要注意一點(diǎn)的是,Oracle的實(shí)例在啟動(dòng)以后,只能load一次數(shù)據(jù)庫(kù),如果想把數(shù)據(jù)庫(kù)與Instance斷開(kāi)
,然后再重新掛在一個(gè)數(shù)據(jù)庫(kù)Instance,那么就需要你首先把數(shù)據(jù)庫(kù)Instance進(jìn)程結(jié)束,然后重新建立這個(gè)
instance的一個(gè)進(jìn)程,再load另外一個(gè)數(shù)據(jù)庫(kù)。否則肯定要拋除ORA-16169錯(cuò)誤,說(shuō)數(shù)據(jù)庫(kù)已經(jīng)被打開(kāi)。因?yàn)?
一個(gè)數(shù)據(jù)庫(kù)Instance在其生存期中最多只能load和打開(kāi)一個(gè)instance。
ORACLE實(shí)例 = 進(jìn)程 + 進(jìn)程所使用的內(nèi)存(SGA)實(shí)例是一個(gè)臨時(shí)性的東西,你也可以認(rèn)為它代表了數(shù)據(jù)庫(kù)某一
時(shí)刻的狀態(tài)!
數(shù)據(jù)庫(kù) = 重做文件 + 控制文件 + 數(shù)據(jù)文件 + 臨時(shí)文件數(shù)據(jù)庫(kù)是永久的,是一個(gè)文件的集合。
ORACLE實(shí)例和數(shù)據(jù)庫(kù)之間的關(guān)系
1. 臨時(shí)性和永久性
2. 實(shí)例可以在沒(méi)有數(shù)據(jù)文件的情況下單獨(dú)啟動(dòng) startup nomount , 通常沒(méi)什么意義
3. 一個(gè)實(shí)例在其生存期內(nèi)只能裝載(alter database mount)和打開(kāi)(alter database open)一
個(gè)數(shù)據(jù)庫(kù)
4. 一個(gè)數(shù)據(jù)庫(kù)可被許多實(shí)例同時(shí)裝載和打開(kāi)(即RAC),RAC環(huán)境中實(shí)例的作用能夠得到充分的體現(xiàn)!
[ORACLE實(shí)例與數(shù)據(jù)庫(kù)啟動(dòng)方式]:
1、AIX5.3用oracle用戶(hù)登陸。
2、登陸sqlplus。
$sqlplus /nolog
3、鏈接數(shù)據(jù)庫(kù)實(shí)例hrbhouse。
SQL> conn sys/vhfs@hrbhouse
as sysdba
Connected to an idle instance.
#查看狀態(tài)
SQL> show instance
instance "local"
SQL> show sga
ORA-01034: ORACLE not available
#數(shù)據(jù)庫(kù)為啟動(dòng)
4、啟動(dòng)實(shí)例hrbhouse下的數(shù)據(jù)庫(kù)。
SQL> startup
ORACLE instance started.
Total System Global Area 935329792 bytes
Fixed Size 2025304 bytes
Variable Size 247466152 bytes
Database Buffers 683671552 bytes
Redo Buffers 2166784 bytes
Database mounted.
Database opened.
#停止實(shí)例hrbhouse下的數(shù)據(jù)庫(kù)
SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/allenky/archive/2009/03/10/3975346.aspx
posted on 2009-10-25 21:57
零全零美 閱讀(389)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
oracle