1. 程式人生 > >oracle數據庫實例,數據庫的理解

oracle數據庫實例,數據庫的理解

www. name 概念 事物 hive 相同 alt 使用 我們

轉自http://www.cnblogs.com/advocate/archive/2010/08/20/1804066.html

加深一下理解

數據庫就是一個相片底片

實例就是相紙

一個底片可以沖多個相紙,但一張相紙最多沖一個底片。

tom的一個解釋
數據庫(database):物理操作系統文件或磁盤( disk)的集合。使用Oracle 10g 的自動存儲管理(Automatic Storage Management,ASM)或RAW 分區時,數據庫可能不作為操作系統中單獨的文件,但定義仍然不變。

實例(instance):一組Oracle 後臺進程/線程以及一個共享內存區,這些內存由同一個計算機上運行的線程/進程所共享。這裏可以維護易失的、非持久性內容(有些可以刷新輸出到磁盤)。就算沒有磁盤存儲,數據庫實例也能存在。也許實例不能算是世界上最有用的事物,不過你完全可以把它想成是最有用的事物,這有助於對實例和數據庫劃清界線。

這兩個詞有時可互換使用,不過二者的概念完全不同。實例和數據庫之間的關系是:數據庫可以由多個實例裝載和打開,而實例可以在任何時間點裝載和打開一個數據庫。實際上,準確地講,實例在其整個生存期中最多能裝載和打開一個數據庫!

補充:
一般來說,我們的一個數據庫對應一個實例,但在集群RAC情況下,共享數據庫文件時,一個數據庫是可以被多個實例同時使用的。

我們向數據庫寫數據或讀數據,則只能通過實例進行。

同一時間,一個實例只能打開一個數據庫,也就是一個實例只能操作或管理一個數據庫;通常,同一時間,一個數據庫只能被一個實例打開,但RAC情況除外。

安裝oracle時,通常會安裝一個實例——數據庫對(當然可以裝多對),而且他們的名字相同(也就是實例和數據庫名字相同),他們的名字當然可以不同,不管相不相同,他們的聯系是通過xxx/pfile/init.ora初始化文件聯系的。因為xxx就是實例的名字,而xxx.ora中的db_name,則記錄相應數據庫的名字。

下面演示啟動xxx實例,掛接數據庫,打開數據庫,關閉數據庫、卸載數據庫、關閉實例的過程。

  1、為了能進行以上操作,oracle的監聽必須首先啟動,這樣,我們才有機會連接到oracle服務器端。可以通過如下命令進行:lsnrctl start;

  2、oracle啟動,windows下通常在服務裏啟動oracle,一般情況下同時啟動相關實例,但也可以設置啟動oracle時,不啟動任何指定實例,這樣oracle的啟動速度相當快。

  3、設定我們需要啟動的相關實例。在console窗口中,輸入 set oracle_sid=xxx (unix環境下用export命令)

  4、用/nolog方式,進入sqlplus。 在console窗口中,輸入 sqlplus /nolog ,然後回車,則進入sqlplus環境。

  5、輸入命令 connect sys as sysdba 回車後,提示輸入口令,直接回車,則以sysdba的角色連接到oracle的空閑實例。

  6、輸入命令 startup nomount 回車,則啟動了xxx實例,由set oracle_sid=xxx設置。

  7、輸入命令 alter database mount 回車,則將相應的數據庫掛接到xxx實例。

  8、輸入命令 alter database open 回車,則打開了相應數據庫。

  9、輸入命令 shutdown,則關閉數據庫、卸載數據庫、關閉實例。

oracle數據庫實例,數據庫的理解