oracle表存储表空间,Oracle的存储信息-表空间信息记录
經過前面的介紹,我們已經能夠對Oracle的存儲結構有了深入的了解,總結一下前面的內容:Oracle最小的數據存儲單位是數據塊(Block),如果以單個數據塊進行對象空間分配,那么顯然分配將過于頻繁,所以Oracle使用多個數據塊組成了區間(Extent),區間是Oracle數據庫對象的最小空間分配單位,對象的空間分配和擴展只能以區間為單位進行,多個區間組成了段(Segment),根據用途的不同,Oracle數據庫又存在不同的段類型。段存儲在表空間中,一個數據庫最終由一系列的表空間構成。
將以上的描述通過圖5-6來表示(圖中的數據塊大小為2kB)。
圖5-6? 存儲的物理結構示意圖
Oracle對于Block的空間管理使用手工段空間管理和自動段空間管理技術,對于Extent的管理則通過字典管理和本地管理兩種技術實現。Oracle的存儲信息可以通過不同的數據字典查詢得到,接下來將介紹一些主要的數據字典視圖。
表空間信息記錄(DBA_TABLESPACES)
DBA_TABLESPACES視圖記錄了數據庫的表空間信息,表空間是數據庫的一個邏輯概念,一個表空間可以由多個物理的數據文件組成。這個視圖中記錄了表空間的數據塊大小、Segment、Extent管理方式等重要信息:SQL>?select?tablespace_name,block_size,extent_management,
2??segment_space_management,contents,retention,bigfile
3??from?dba_tablespaces;
TABLESPACE_NAME?BLOCK_SIZE?EXTENT_MAN?SEGMEN?CONTENTS??RETENTION???BIG
---------------?----------?----------?------?---------?-----------?---
SYSTEM???????????????32768?LOCAL??????MANUAL?PERMANENT?NOT?APPLY???NO
UNDOTBS1?????????????32768?LOCAL??????MANUAL?UNDO??????NOGUARANTEE?NO
SYSAUX???????????????32768?LOCAL??????AUTO???PERMANENT?NOT?APPLY???NO
TEMP?????????????????32768?LOCAL??????MANUAL?TEMPORARY?NOT?APPLY???NO
USERS????????????????32768?LOCAL??????AUTO???PERMANENT?NOT?APPLY???NO
BOSSMGR??????????????32768?LOCAL??????AUTO???PERMANENT?NOT?APPLY???YES
DBMON????????????????32768?LOCAL??????AUTO???PERMANENT?NOT?APPLY???NO
TEMP1????????????????32768?LOCAL??????MANUAL?TEMPORARY?NOT?APPLY???NO
8?rows?selected.
注意這個視圖中的retention、bigfile信息都是Oracle 10g中增加的,BIGFILE指示一個表空間是否是大文件表空間,在本章后面的小節中將會詳細介紹大文件表空間;而Retention則和UNDO表空間的數據保留策略有關。
在AUM(Auto Undo Management)模式下,UNDO_RETENTION參數用以控制事務提交以后UNDO信息保留的時間,UNDO信息可以用于減少ORA-01555錯誤及一系列的閃回操作(Flashback)。該參數以秒為單位,在Oracle 9iR1中初始值為900秒,在Oracle 9iR2增加為10800秒。但是這是一個非擔保性(NO Guaranteed)限制,也就是說,如果有其他事務需要回滾空間,而空間出現不足時,這些信息仍然會被覆蓋,很多時候這是不希望被看到的。
從Oracle 10g開始,默認Oracle會啟用自動調整以滿足最長運行查詢的需要,而不管UNDO_RETENTION的值是多少。SQL>?select?*?from?v$version?where?rownum?<2;
BANNER
--------------------------------------------------------------------------------
Oracle?Database?11g?Enterprise?Edition?Release?11.2.0.1.0?-?64bit?Production
SQL>?show?parameter?undo_retention;
NAME?????????????????????????????????TYPE????????VALUE
------------------------------------?-----------?------------------------------
undo_retention???????????????????????integer?????900
SQL>?select?begin_time,end_time,undotsn,undoblks,tuned_undoretention?from?v$undostat
2??where?rownum<5?order?by?begin_time?desc;
BEGIN_TIME???????????END_TIME????????????????UNDOTSN???UNDOBLKS?TUNED_UNDORETENTION
--------------------?--------------------?----------?----------?-------------------
2011-1-4?18:21:56????2011-1-4?18:29:04?????????????2?????????23?????????????1896067
2011-1-4?18:11:56????2011-1-4?18:21:56?????????????2?????????20?????????????1894612
2011-1-4?18:01:56????2011-1-4?18:11:56?????????????2?????????26?????????????1891101
2011-1-4?17:51:56????2011-1-4?18:01:56?????????????2????????146?????????????1887939
從結果里可以看到,盡管當前的undo_retention的值是900,但是在2011-1-4 18:21:56至2011-1-4 18:29:04這段時間內,oracle自動將undo_retention的值調整成了1896067。
但這并不代表著默認的undo_retention的值(Oracle 10gR2開始,這個默認值是900)沒有作用,實際上,即使undo_retention的自動調整默認已被oracle采用,但由于oracle并不支持對lob字段的undo retention的自動調整,所以undo_retention的值依然對lob字段有效。同時Oracle增加了Guarantee控制,也就是說,你可以指定UNDO表空間必須嚴格滿足UNDO_RETENTION的限制,即使UNDO空間不足,Oracle也不會回收未過期的UNDO空間,這樣如果有用戶請求UNDO空間得不到滿足,則會報錯退出。Oracle通過這種機制使得用戶的期望可以被確保。
可以通過如下命令修改UNDO表空間的保證機制:SQL>?alter?tablespace?undotbs1?retention?guarantee;
Tablespace?altered
SQL>?alter?tablespace?undotbs1?retention?noguarantee;
Tablespace?altered
這個屬性有3個選項:GUARANTEE、NOGUARANTEE和NOT APPLY。對于其他表空間這個屬性不適用,顯示為NOT APPLY。
總結
以上是生活随笔為你收集整理的oracle表存储表空间,Oracle的存储信息-表空间信息记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php server 连接字符串,sql
- 下一篇: 5G手机市场 华为藏了个第一