資料庫程式,一般都要使用電腦的記憶體和持久存放裝置(例如磁碟)進行操作。磁碟提供了持久儲存和儲存大量資訊的空間。但是,從磁碟中獲得資訊要比從記憶體中擷取資訊的速度慢很多,因此,很多資料庫引擎利用記憶體來緩衝資訊,從而加快資料的訪問速度。
資訊如何儲存和從什麼地方擷取對於終端查詢使用者來說是透明的,但是,如果你打算管理oracle,你就需要熟悉oracle的處理方式。本文討論兩個基礎但是很重要和記憶體和磁碟相關的概念:資料庫和執行個體。
資料庫
在oracle中,資料庫用於描述用來儲存資訊的物理檔案的集合。主要有三種類型的物理檔案:
- 資料檔案(Data files) ------這些檔案是資料庫的主要檔案:其中包括資料表、索引和所有其他的段。
- 控制檔案(Control files)----這些檔案告訴你資料檔案、臨時檔案和重做記錄檔在哪裡,還會指出與檔案狀態有關的其他中繼資料。
- 重做記錄檔(Redo-log files)----用於記錄所有對資料的修改資訊,這些資訊可用於資料備份和恢複。
無論使用多少檔案,它們都是資料庫的一部分。
執行個體
如果沒用記憶體結構和後台進程操作資料庫,那麼這些資料庫檔案本身將毫無意義,oralce用術語執行個體定義用於訪問資料庫的一組後台進程和記憶體結構。
一個執行個體主要使用兩種記憶體結構:
- 系統全域區(System Global Area,SGA),又叫共用全域區(Shared Gloabl Area):由oracle進程共用的記憶體地區。
- 程式全域區(Program Global Area,PGA),又叫私人全域區:特定進程私人的記憶體地區。
SGA包括用於儲存從資料檔案中讀取的資訊的資料庫緩衝,用於儲存中繼資料資訊的資料字典緩衝和用於儲存最近使用的SQL和PL/SQL語句的庫緩衝。PGA用於為每個特定的進程需要的資訊分配記憶體,包括排序空間、數組、遊標等。執行個體還包括相互協作的一組後台進程,他們用於實現不同的功能。例如資料庫寫入器進程,負責儲存所有對資料庫的修改;進程監視器,負責清除失敗的使用者進程。
啟動oracle伺服器:從啟動oracle的不同步驟中可以看出資料庫和執行個體之間的區別。第一步是執行個體自身的啟動,不同的後台進程被啟動並且分配了相應的記憶體區。第二步是執行個體裝載資料庫。最後是開啟資料庫。
儘管通常情況下在啟動oracle的時候這些步驟一起完成,但是有時你需要讓oracle停留在某個階段。我們看下相關的文法,可以使用SQL*PLUS登入oracle嘗試這些命令。
STARTUP或者STARTUP OPEN告訴oracle一次完成三步操作。如果你只想啟動oracle執行個體,可以使用命令STARTUP NOMOUNT,oracle將只啟動執行個體但是不會裝載資料庫,即啟動一個空執行個體。
為什麼需要這麼做呢?有時你可能需要建立新的控制檔案或者新的資料庫,而這些操作必須在訪問資料庫之前完成。你也可以輸入STARTUP MOUNT(或者你之前輸入了STARTUP NOMOUNT你可以輸入ALTER DATABASE MOUNT)告訴oracle裝載資料庫檔案。在這種情況下,執行個體將會訪問和資料庫有關的所有資訊。但是這時使用者還不能訪問資料庫。一個必須進行的操作的例子是重新命名有SYSTEM資料表空間使用的檔案。當完成了所有的修改後,你可以輸入ALTER DATABASE OPEN命令使所有的使用者都可以訪問資料庫。