DBMS(Data Base Management System)資料庫管理系統,顧名思義是一個管理資料的系統,那麼首先得有資料,然後管理就是通過Instance(執行個體)來體現,執行個體就是一些記憶體結構和後台進程,其實簡單的說就是一個在啟動並執行程式,程式在作業系統上運行時會產生一個個的進程. 資料其實就是作業系統中一個個檔案,和平時我們接觸的txt,word檔案沒啥大區別.當初沒資料庫的時候資料就是儲存在像txt這樣的檔案中,然後是直接去手工編輯或通過一些應用程式去編輯.但普通檔案有資料冗餘,不一致,安全性等問題.
關聯式資料庫中最重要的內容,就是一個個的表(table),那些表就是儲存在資料檔案中.這種檔案的尾碼名為dbf.可以通過select * from dba_data_files;查看他們的位置.例如在windows上c:\app\Administrator\oradata\ora11r2. 在linux上:/home/Oracle/oradata/ora11r2.不過我們用的時候一般是使用資料表空間(tablespace)這樣一個邏輯結構來間接的使用資料檔案.
資料表空間和資料檔案的關係是:一個資料表空間至少包括一個資料檔案,也可以是多個.而一個資料檔案只能屬於一個資料表空間.就相當於在windows上一個檔案夾下面有很多檔案一樣.
表與資料檔案的關係:一般情況一個表就屬於一個資料檔案,但表比較大或資料檔案的空間快被用完時一個表可能會儲存在幾個資料檔案中.但一個表只會在一個資料表空間下,不會屬於幾個資料表空間.
當我們建立一個使用者時可以指定一個資料表空間,則使用者建立的表就預設儲存到那個資料表空間了,但建表時也可以明確指定把表指定到某個資料表空間.多個使用者可以共用一個資料表空間.Oracle安裝好後會預設建立一些資料檔案和資料表空間.
系統資料表空間(system tablespace)對就的資料檔案是system.dbf:有點像windows的C盤,Oracle系統資料表和資料字典就儲存在這.另外注意的是所有使用者建立的函數,儲存過程等一些對象都是儲存在系統資料表空間(可以通過select * from dba_source 查看這些資訊),只有使用者建立的表才儲存到自己指定的資料表空間中.
undo資料表空間,在做DML操作之前Oracle會把舊值複製到這資料表空間裡,當commit之後再把舊值刪除. temp資料表空間做排序等操作時在這裡.
以上講的是系統預設建立的資料表空間,我們也可以自己建立資料表空間:create tablespace mySpace datafile 'd:\mydata' 100M; --我們還可以添加一些其他參數做更多的設定
更多Oracle相關資訊見Oracle 專題頁面 http://www.bkjia.com/topicnews.aspx?tid=12