Oracle Extent引數問題
昨天碰到一個很奇怪的問題,一個表,原先有1000w+的資料。然後我做了truncate,檢查後發現,仍然站了1g+的空間,再truncate了幾次,還是沒有變化。我以為是truncate了另外一個使用者了,但是仔細一看,沒錯啊。一時急了,直接把表drop掉了。不過在drop之前,我先備份了表結構,重建總可以了吧。
在重建的時候,我發現了問題的原因。原來這個表的initial達到了1g+,正好是檢視的大小。難怪怎麼截斷都不行呢。於是將initial引數改為1m,minextents也改為1m,建立後佔用空間就減少為1m了。
所以,影響表佔用空間大小的不僅僅只有資料,初始化引數也有非常大的影響力。如果Initial引數設定過大,則表的初始段也會變得非常大。浪費了大量的空間。
案例:
drop table aaa purge;
create table aaa(aa int) storage(initial 1m minextents 100000 next 100 maxextents unlimited pctincrease 0) tablespace zh;
查詢其大小:
SQL> select segment_name, round(bytes/1024/1024, 4) "size(M)" from user_segments where segment_name = 'AAA';
/
SEGMENT_NAME size(M)
-------------------------------------------------------------------------------- ----------
AAA 784
具體Oracle還有更復雜的機制,等以後有時間可以深入研究一下。比如下面的情況:
drop table aaa purge;
create table aaa(aa int) storage(initial 1m minextents 10 next 10 maxextents unlimited pctincrease 0) tablespace zh;
查詢發現:
SQL> select segment_name, bytes, blocks, extents from user_segments where segment_name = 'AAA';
SEGMENT_NAME BYTES BLOCKS EXTENTS
------------------------------------------ ---------- ---------- ----------
AAA 2097152 256 2
不是建表時指定的初始化引數,這是為何?
在重建的時候,我發現了問題的原因。原來這個表的initial達到了1g+,正好是檢視的大小。難怪怎麼截斷都不行呢。於是將initial引數改為1m,minextents也改為1m,建立後佔用空間就減少為1m了。
所以,影響表佔用空間大小的不僅僅只有資料,初始化引數也有非常大的影響力。如果Initial引數設定過大,則表的初始段也會變得非常大。浪費了大量的空間。
案例:
drop table aaa purge;
create table aaa(aa int) storage(initial 1m minextents 100000 next 100 maxextents unlimited pctincrease 0) tablespace zh;
查詢其大小:
SQL> select segment_name, round(bytes/1024/1024, 4) "size(M)" from user_segments where segment_name = 'AAA';
/
SEGMENT_NAME size(M)
-------------------------------------------------------------------------------- ----------
AAA 784
具體Oracle還有更復雜的機制,等以後有時間可以深入研究一下。比如下面的情況:
drop table aaa purge;
create table aaa(aa int) storage(initial 1m minextents 10 next 10 maxextents unlimited pctincrease 0) tablespace zh;
查詢發現:
SQL> select segment_name, bytes, blocks, extents from user_segments where segment_name = 'AAA';
SEGMENT_NAME BYTES BLOCKS EXTENTS
------------------------------------------ ---------- ---------- ----------
AAA 2097152 256 2
不是建表時指定的初始化引數,這是為何?
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-713839/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle歸檔引數設定問題Oracle
- oracle控制檔案及引數檔案問題Oracle
- Oracle 區 EXTENTOracle
- Oracle RAC引數設定優先順序別問題分析Oracle
- oracle 19c sec_case_sensitive_logon引數問題OracleGo
- spring呼叫帶引數的oracle函式應注意的問題SpringOracle函式
- Oracle Sequence不設定cache引數的幾個潛在問題Oracle
- Oracle引數-隱藏引數Oracle
- scala 呼叫 java 方法引數匹配問題Java
- oracle 引數Oracle
- Oracle 19C RAC open_links_per_instance引數問題Oracle
- 函式呼叫引數變數傳值的問題函式變數
- MyBatis傳入多個引數的問題MyBatis
- AIX maxperm引數導致監聽問題AI
- mysql的日誌引數修改的問題.MySql
- aix下jvm引數最佳化問題AIJVM
- Oracle 12c中db_file_multiblock_read_count 引數引發的效能問題OracleBloC
- Oracle引數檔案解析——引數解析Oracle
- Oracle 核心引數Oracle
- Oracle UNDO引數Oracle
- Oracle引數大全Oracle
- oracle引數配置Oracle
- oracle 效能引數Oracle
- ORACLE核心引數Oracle
- oracle引數整理Oracle
- Java新提案:Extent-Local變數Java變數
- 二維陣列作為引數傳遞問題陣列
- Laravel 框架中 whereRaw like 引數繫結問題Laravel框架
- 系統引數nofile設定不生效問題
- Python中func(*args, **kwargs)的引數問題Python
- request的get和post引數亂碼問題
- Java中形式引數與返回值問題Java
- rake 任務引數傳遞問題解決
- WPF 解決 CommandParameter 引數不更新問題
- Oracle引數檔案 各引數解釋Oracle
- oracle segment space management and extent management幾則Oracle
- Oracle:PDB 引數管理Oracle
- Oracle rman 配置引數Oracle