資料庫和例項instance的區別

bitifi發表於2015-09-22

在實際的開發應用中,關於Oracle資料庫,經常聽見有人說建立一個資料庫,建立一個Instance,啟動一個Instance之類的話。 其實問他們什麼是資料庫,什麼是Instance,很可能他們給的答案就是資料庫就是Instance,Instance就是資料庫啊,沒有什麼區別。在這裡,只能說雖然他們Oracle用了可能有了一定的經驗,不過基礎的概念還是不太清楚。

什麼是資料庫,其實很簡單,資料庫就是儲存資料的一種媒介。比如常用的檔案就是一種,在Oracle10G中,資料的儲存有好幾種。第一種是檔案形式,也就是在你的磁碟中建立一批檔案,然後在這些檔案中儲存資訊。第二種就是磁碟陣列形式,這個是什麼意思呢,這個就是說明資料庫不是存放為某個檔案,而是把一個或者多個磁碟格式化成Oracle的一種格式了,等於整個磁碟就是存放Oracle資料庫的,不能作為別的用途。這樣的優點是儲存效能高,因為不再借助別的檔案格式了,而是把整個磁碟都成為Oracle最適應的檔案系統格式。當然還可能有別的形式,比如網路什麼的。不過我們最常用的還是檔案格式的,在檔案格式中,資料庫指的就是那些資料檔案,控制檔案以及REDO檔案等等一系列檔案。

而什麼是Instance呢,Instance其實就是指的作業系統中一系列的程式以及為這些程式所分配的記憶體塊。在Oracle中,我們可以新建一個Oracle的Instance,這個時候雖然有了程式還有SGA等一系列的記憶體快,但是這個時候並沒有把資料庫檔案讀取進來。所以只是一個例項,在後來,你可以透過命令手動或者自動地把資料庫檔案載入進我們的資料庫Instance中,這個時候的資料庫才可以讓我們真正的開始訪問操作。

所以說,資料庫的應用如果想實現,資料庫和資料庫Instance是缺一不可的,如果只有資料庫的那些檔案,那麼,只能代表資料在這個檔案中,但是我們無法直接進行操作。而如果只有資料庫Instance,那麼我們雖然可以急性操作,但是也不知道操作哪些資料,操作生成的資料也無法儲存等等。所以,當一個Oracle Instance真正Load了一個Oracle Database了以後,資料庫才可以被我們使用。

在這裡要注意一點的是,Oracle的例項在啟動以後,只能load一次資料庫,如果想把資料庫與Instance斷開,然後再重新掛在一個資料庫Instance,那麼就需要你首先把資料庫Instance程式結束,然後重新建立這個instance的一個程式,再load另外一個資料庫。否則肯定要拋除ORA-16169錯誤,說資料庫已經被開啟。因為一個資料庫Instance在其生存期中最多隻能load和開啟一個instance。(T004)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30496894/viewspace-1806039/,如需轉載,請註明出處,否則將追究法律責任。

相關文章