Oracle的啓動機制

問題1:搞不明白  表空間,數據表,數據庫   這幾個概念在oracle裏面是什麼關係啊sql

oracle 數據庫就是指的oracle 總體,通常一個機器上只安裝一個oracle數據庫數據庫

oracle創建好之後,實際上oracle是一個一個的DBF文件,而後N個DBF文件組成一個表空間oracle

你的表就創建在表空間下,好比我舉個例子:spa

一個數據庫叫jack,日誌

jack下用戶使用的表空間有3個: users , abc, jaccsql語句

其中數據

users由d:\1.dbf組成查詢

abc由d:\11.dbf d:\22.dbf組成db

jacc 由 d:\jacc.dbf組成文件

你建的表能夠選擇放在這3個表空間的任意一個裏(若是不寫,就放在你這個用戶的默認表空間裏,通常都是users,這個表空間是系統本身創建的)

臨時表空間你也能夠用,可是隻能將臨時表放在裏面,臨時表空間主要放置一些臨時數據,好比你查詢一個複雜的sql語句,系統會將中間數據放在臨時表空間裏暫存

臨時表空間會本身刪除(能夠選擇會話結束就刪除)


問題2:我在系統默認的數據庫文件夾裏面看到了幾種文件(好比.ctl,.dbf等)

我聽我朋友說oracle是先讀取.ctl而後讀dbf而後讀日誌(好像是這樣,不知道記錯沒)

請問oracle這個控制文件.ctl究竟是作什麼用的呢?

oracle啓動的時候,讀取ctl文件(叫控制文件),這個控制文件裏記錄的內容告訴oracle目前這個數據庫都是由哪些dbf組成的。而後讀取全部的dbf文件,看這些dbf文件的最後修改時間是否和控制文件中記錄的同樣(同事還要比對日誌文件中記錄的最後修改時間),若是這些文件的最後修改時間都一致,那麼說明oracle上次關閉是正常的,假如不一致,則利用日誌文件重現以前的操做(日誌文件裏記錄oracle的全部操做),最終時全部類型的文件的最後修改時間一致,而後打開,相信你已經看出來了,若是ctl文件壞了的話,你的數據實際上全都沒法讀取,由於oracle已經不知道本身的結構了。所以oracle默認將控制文件複製3份保存,足見其重要性。

由於估計你沒有看過書,因此我用了淺顯易懂的詞來描述,他們在oracle中應該叫:

最後修改時間: SCN(System Change Number)

日誌文件:redo log(可能還涉及到Archive 歸檔文件)

重現操做:roll forward (前滾)(實際上發生SCN不一致時須要進行恢復,在前滾後還要回滾,之後再說)

相關文章
相關標籤/搜索