Oracle的启动机制
2019獨角獸企業重金招聘Python工程師標準>>>
問題1:搞不明白 ?表空間,數據表,數據庫 ? 這幾個概念在oracle里面是什么關系啊
oracle 數據庫就是指的oracle 整體,一般一個機器上只安裝一個oracle數據庫
oracle建立好以后,實際上oracle是一個一個的DBF文件,然后N個DBF文件組成一個表空間
你的表就建立在表空間下,比如我舉個例子:
一個數據庫叫jack,
jack下用戶使用的表空間有3個: users , abc, jacc
其中
users由d:\1.dbf組成
abc由d:\11.dbf d:\22.dbf組成
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不一致時需要進行恢復,在前滾后還要回滾,以后再說)
轉載于:https://my.oschina.net/ericliuandhisfriends/blog/473933
總結
以上是生活随笔為你收集整理的Oracle的启动机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在没有工具的情况下检查SSD 的TRIM
- 下一篇: 数字证书KeyTool使用(第二篇)