oracle 的資料庫 表空間 表是什麼關係

2021-06-27 09:42:26 字數 1245 閱讀 7900

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語句,系統會將中間資料放在臨時表空間裡暫存

臨時表空間會自己刪除(可以選擇會話結束就刪除)

不知道我說明白了沒,有問題歡迎繼續追問

追問

首先先謝謝您的熱心解答。

我在系統預設的資料庫資料夾裡面看到了幾種檔案(比如.ctl,.dbf等)

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

請問oracle這個控制檔案.ctl到底是做什麼用的呢?

回答

你這個問題,就涉及到oracle的啟動機制了,如果你沒有看過書的,我給你你講起來也不太容易,簡單說幾句,

oracle啟動的時候,讀取ctl檔案(叫控制檔案),這個控制檔案裡記錄的內容告訴oracle目前這個資料庫都是由哪些dbf組成的。然後讀取所有的dbf檔案,看這些dbf檔案的最後修改時間是否和控制檔案中記錄的一樣(同事還要比對日誌檔案中記錄的最後修改時間),如果這些檔案的最後修改時間都一致,那麼說明oracle上次關閉是正常的,假如不一致,則利用日誌檔案重現之前的操作(日誌檔案裡記錄oracle的所有操作),最終時所有型別的檔案的最後修改時間一致,然後開啟,相信你已經看出來了,如果ctl檔案壞了的話,你的資料實際上全都無法讀取,因為oracle已經不知道自己的結構了。因此oracle預設將控制檔案複製3份儲存,足見其重要性。

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

日誌檔案:redo log(可能還涉及到archive 歸檔檔案)

重現操作:roll forward (前滾)(實際上發生scn不一致時需要進行恢復,在前滾後還要回滾,以後再說)

以上,請您參考

oracle 資料庫表空間

1 建立表空間 格式 建立表空間 create tablespace 表空間名 datafile 表空間檔案儲存物理路徑.ora size 500m defaultstorage autoextend on initial 100m next 100m minextents 20 maxextent...

Oracle資料庫表空間

永久表空間 表空間是資料庫的邏輯劃分,乙個表空間只屬於乙個資料庫。所有的資料庫物件都存放在指定的表空間中。但主要存放的是表,所以稱作表空間 臨時表空間 oracle臨時表空間主要用來做查詢和存放一些緩衝區的資料。臨時表空間消耗的主要原因是需要讀查詢的中間結果進行排序。重啟資料庫可以釋放臨時表空間 建...

Oracle資料庫表調整表空間

調整表 table 所屬表空間 調整索引 index 所屬表空間 生成table遷移語句 select alter table table name move tablespace 新錶空間名 from user all tables 生成index遷移語句 select alter index i...