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 19c sec_case_sensitive_logon引數問題OracleGo
- Oracle 19C RAC open_links_per_instance引數問題Oracle
- Oracle RAC引數設定優先順序別問題分析Oracle
- LOG巨集的引數問題
- Oracle 核心引數Oracle
- Java新提案:Extent-Local變數Java變數
- 多端引數不統一問題
- Oracle:PDB 引數管理Oracle
- 函式呼叫引數變數傳值的問題函式變數
- WPF 解決 CommandParameter 引數不更新問題
- [20231109]bbed p命令dba引數問題.txt
- Oracle trigger問題Oracle
- ORACLE並行相關的引數Oracle並行
- Oracle GoldenGate常用引數詳解OracleGo
- oracle rac 核心引數詳解Oracle
- Oracle Table建立引數說明Oracle
- Oracle JDBC ResultSet引數測試OracleJDBC
- 使用 XmlCommand 對Oracle傳引數XMLOracle
- Oracle RAC引數檔案管理Oracle
- libusb:libusb_bulk_transfer的timeout引數問題
- 關於Jmeter引數化的編碼問題JMeter
- 解決Url帶中文引數亂碼問題
- tp6 路由匹配引數獲取問題路由
- 二維陣列作為引數傳遞問題陣列
- Laravel 框架中 whereRaw like 引數繫結問題Laravel框架
- mybatis中mapper.xml檔案引數問題MyBatisAPPXML
- Java中形式引數與返回值問題Java
- 系統引數nofile設定不生效問題
- Druid連線池引數maxWait配置錯誤引發的問題UIAI
- LMT下extent的分配
- 解決ajax請求引數過多導致引數被截斷的問題
- Oracle 12C TDE問題引發DG不同步案例分析Oracle
- Lcust 分散式執行時的引數化問題分散式
- 15.MyBatis傳入多個引數的問題MyBatis
- Oracle常用傻瓜問題1000問Oracle
- oracle O7_DICTIONARY_ACCESSIBILITY 引數Oracle
- [20190917]oracle引數deferred屬性.txtOracle
- Oracle面試寶典-引數篇Oracle面試
- Oracle RAC修改引數檔案位置Oracle