1. 程式人生 > >Oracle中資料庫與例項的區別

Oracle中資料庫與例項的區別

一個數據庫可以包含一個或者多個例項
例項的定義:由作業系統後臺程序和分配的記憶體區域構成。說
得簡單點就是oracle在nomount狀態就分配了記憶體區域,一個實
例也就差不多快形成了。

例項是個動態概念,它由一系列程序和記憶體區域組成;而資料庫是個靜態概念,主要指的是構成資料庫的一系列檔案,如資料檔案、重做日誌檔案、控制檔案等。一般情況下例項與資料庫是一對一的,但是在多例項資料庫環境下,一個數據庫可以對應多個例項。

例項由稱為系統全域性區(SGA)的共享記憶體以及若干後臺程序組成。生存期就是它在記憶體中存在的時間。資料庫是由磁碟上的物理檔案組成,可以永久存在。例項與資料庫可以是多對一的關係。在開啟資料庫的時候,nomount階段就是建立並啟動例項,即根據初始化引數檔案分配記憶體,啟動後臺服務程序。

簡單來說有時候這兩個名詞有時可以互換使用、但是其概念還是不同的。
例項 instance =程序 + 程序所使用的記憶體(SGA)
資料庫 database=物理作業系統檔案或磁碟(disk)的集合(redo檔案+control檔案+data檔案+臨時檔案)

例項是一個臨時性的東西,你也可以認為它代表了資料庫某一時刻的狀態!
資料庫是永久的,是一個檔案的集合。

ORACLE例項和資料庫之間的關係
1.臨時性和永久性
2.例項可以在沒有資料檔案的情況下單獨啟動 startup nomount , 通常沒什麼意義
3.一個例項在其生存期內只能裝載(alter database mount)和開啟(alter database open)一個數據庫
4.一個數據庫可被許多例項同時裝載和開啟(即RAC),RAC環境中例項的作用能夠得到充分的體現!

資料庫例項也稱作伺服器, 是用來訪問資料庫檔案集的儲存結構及後臺程序的集合.
1、一個數據庫可以被多個例項訪問(稱為真正的應用群集選項).
2、一個例項在其生存期內只能裝載(alter database mount)和開啟(alter database open)一個數據庫
3、Oracle的例項在啟動以後,只能load一次資料庫,如果想把資料庫與Instance斷開,然後再重新掛在一個數據庫Instance,那麼就需要你首先把資料庫Instance程序結束,然後重新建立這個instance的一個程序,再load另外一個數據庫。否則肯定要拋除ORA-16169錯誤,說資料庫已經被開啟。因為一個數據庫Instance在其生存期中最多隻能load和開啟一個instance。.
4、另外例項可以在沒有資料檔案的情況下單獨啟動 startup nomount , 通常沒什麼意義

ORACLE服務= 例項+資料庫
例項是一群為你服務的程序,資料庫是你真實需要的資料
比如你去飯店吃飯享受服務,廚師+服務員的服務相當於例項,食材、飯菜什麼相當於資料庫的資料

轉自:blog1 blog2