數據文件相關知識
想查看系統中有多少個數據文件我們可以通過動態數據字典或靜態數據字典來查看:通過靜態數據字典查看數據文件
通過動態數據字典來查看數據文件
直接查看數據文件的內容是看不到的,必須通過一個邏輯的結構即表空間來查看數據文件的內容。表空間是一個邏輯存儲結構,而數據文件是一個物理的結構。
如何查看錶空間
也可以通過dba_tablespaces查看錶空間
數據字典是一個邏輯的存儲結構,而數據文件是一個真實的存儲結構,如果有了表空間,而沒有數據文件是不可以,表空間和數據文件是相對應的,如果沒有數據文件,表空間不可能獨立存在,如果只有表空間沒有數據文件也是不行的,就好比如果電腦沒有硬盤,你不能再邏輯上看到C盤D盤,在這裏硬盤就相當於是數據文件,而C盤就相當於是表空間。我們可以把多個數據文件組成一個表空間,然後在表空間裏面存儲數據,表空間和數據文件是對應的,一個表空間可以是由一個或多個數據文件組成的,但是一個數據文件只能在一個表空間當中,我們如何查看錶空間和數據文件之間的對應關係呢?
也可以查看錶空間的大小
也可以在上述的表空間中創建新的數據文件。如果表空間不夠用了,只需創建相應的數據文件即可。表空間大小就是組成數據文件的大小的總和,最終數據文件存放在硬盤裏的,但是我們可以把數據文件存放在不同的硬盤裏面,只要在一個表空間即可,這樣就解決了硬盤大小對文件的限制,可以將多個硬盤中的數據文件組成一個表空間。
所以在表空間中DBA會存放很多的表,視圖,索引,同義詞等對象。
段:例如在xx表空間DBA創建了一個名爲test的表,這張表表空間所佔用的空間,我們稱之爲段。根據段中存儲的對象的不同分爲了數據段,索引段,回退段,臨時段等
可以查看段的信息
對於段又有個更小的單位,稱之爲“區”
區(extent):區是磁盤空間分配的最小單位,磁盤按區劃分,每次至少分配一個區,區由連續的數據塊組成,段主要由一個或多個區構成,當段創建時,它至少包含一個區,當段中所有空間已經使用完成時,系統自動爲該段分配一個新區,區不能跨數據文件存在,只能存在於一個數據文件中。
段是由區組成的,段必須是區的整數倍,假如一張表是25MB,一個區大小是4MB,那麼段的大小是28MB,如果在表裏添加了3MB的數據,此時段的空間還能容納表,現在表的大小是28MB,如果又添加了1MB,此時29MB,那麼段的空間是32MB.
查看EXAMPLE表空間的區和段的分佈情況
在oracle數據庫中最小的存儲單位是塊(block)--8KB,oracle數據庫中的數據存儲於數據塊中。數據塊是oracle服務器所能讀取或寫入的最小存儲單元,oracle服務器以數據塊爲單位管理數據文件的存儲空間,數據塊的取值範圍爲2-64KB,其默認大小與oracle版本有關。
查看操作系統的最小存儲單元
[root@orclsrv ~]# tune2fs -l /dev/sda1
通過OEM也可以查看這些信息
創建表空間和數據文件
SQL>create tablespace xx datafile '/u01/xx.dbf' size 100m autoextend on
2 next 5m maxsize 200m;
表空間已創建。
修改表空間的名字爲yy
爲了好管理,我們希望表空間的名字和數據文件的名字一致。
解決辦法:
-
使用操作系統命令將數據文件拷貝一份
-
把表空間offline
-
然後對數據文件重命名
將表空間offline
對數據文件重命名
查看修改情況
將表空間online
提示需要恢復/u01/yy.dbf
將表空間online
如何擴展表空間大小 - 直接改變數據文件大小
2.給表空間增加數據文件
如果表空間所在的分區的空間不夠用了
刪除表空間
創建臨時表空間
刪除臨時表空間與刪除表空間的命令是一樣的。
如果對此文有什麼問題的話,請加下面微信一起探討