記錄刪除後,資料塊空間不釋放,請大家幫忙看看分析一下
原表6G大小,但是記錄只有20W,該表中不存在LOB型別的欄位
SQL> select bytes from dba_segments where segment_name='OCP_PROCESS_CCR_LOG';
BYTES
----------
6380584960
SQL> select count(*) from ocs.ocp_process_ccr_log ;
COUNT(*)
----------
201902
SQL> desc ocs.ocp_process_ccr_log ;
Name Type Nullable Default
----------------- ------------- -------- -------
SEQ_ID NUMBER
SESSION_ID VARCHAR2(100) Y
CMD_TYPE NUMBER(6) Y
CCR_REQUEST_TYPE NUMBER(1) Y
CCR_NUMBER NUMBER(8) Y
SOURCE_EVENT_TYPE NUMBER(9) Y
ORIGIN_HOST VARCHAR2(50) Y
BILLING_NBR VARCHAR2(30) Y
CREATED_TIME DATE Y
USED_UNIT NUMBER Y
CC_REQUEST_ACTION NUMBER Y
新建立一張表,CTAS,表比原來小得多了。
SQL> create table xigua_test tablespace TICKET_DATA03_TBS as select * from ocs.ocp_process_ccr_log ;
Table created.
SQL> select bytes from dba_segments where segment_name='XIGUA_TEST';
BYTES
----------
28311552
SQL> select count(*) from xigua_test;
COUNT(*)
----------
211403
這是日誌表,定製了策略,刪除15分鐘之前的記錄。理論上表佔用的空間應該很小才對,現在卻漲到了6G了,原本以為是高水位的問題,但結果發現不是。現在這個表還不斷的增長之中,高水位之下空閒空間也不多。
SQL> set serveroutput on
SQL> declare
2 v_unformatted_blocks number;
3 v_unformatted_bytes number;
4 v_fs1_blocks number;
5 v_fs1_bytes number;
6 v_fs2_blocks number;
7 v_fs2_bytes number;
8 v_fs3_blocks number;
9 v_fs3_bytes number;
10 v_fs4_blocks number;
11 v_fs4_bytes number;
12 v_full_blocks number;
13 v_full_bytes number;
14 begin
15 dbms_space.space_usage (
16 'OCS',
17 'OCP_PROCESS_CCR_LOG',
18 'TABLE',
19 v_unformatted_blocks,
20 v_unformatted_bytes,
21 v_fs1_blocks,
22 v_fs1_bytes,
23 v_fs2_blocks,
24 v_fs2_bytes,
25 v_fs3_blocks,
26 v_fs3_bytes,
27 v_fs4_blocks,
28 v_fs4_bytes,
29 v_full_blocks,
30 v_full_bytes);
31 dbms_output.put_line('Unformatted Blocks = '||v_unformatted_blocks);
32 dbms_output.put_line('Blocks with 00-25% free space = '||v_fs1_blocks);
33 dbms_output.put_line('Blocks with 26-50% free space = '||v_fs2_blocks);
34 dbms_output.put_line('Blocks with 51-75% free space = '||v_fs3_blocks);
35 dbms_output.put_line('Blocks with 76-100% free space = '||v_fs4_blocks);
36 dbms_output.put_line('Full Blocks = '||v_full_blocks);
37 end;
38 /
Unformatted Blocks = 0
Blocks with 00-25% free space = 2
Blocks with 26-50% free space = 1
Blocks with 51-75% free space = 9
Blocks with 76-100% free space = 561
Full Blocks = 775902
PL/SQL procedure successfully completed
SQL> select bytes from dba_segments where segment_name='OCP_PROCESS_CCR_LOG';
BYTES
----------
6380584960
SQL> select count(*) from ocs.ocp_process_ccr_log ;
COUNT(*)
----------
201902
SQL> desc ocs.ocp_process_ccr_log ;
Name Type Nullable Default
----------------- ------------- -------- -------
SEQ_ID NUMBER
SESSION_ID VARCHAR2(100) Y
CMD_TYPE NUMBER(6) Y
CCR_REQUEST_TYPE NUMBER(1) Y
CCR_NUMBER NUMBER(8) Y
SOURCE_EVENT_TYPE NUMBER(9) Y
ORIGIN_HOST VARCHAR2(50) Y
BILLING_NBR VARCHAR2(30) Y
CREATED_TIME DATE Y
USED_UNIT NUMBER Y
CC_REQUEST_ACTION NUMBER Y
新建立一張表,CTAS,表比原來小得多了。
SQL> create table xigua_test tablespace TICKET_DATA03_TBS as select * from ocs.ocp_process_ccr_log ;
Table created.
SQL> select bytes from dba_segments where segment_name='XIGUA_TEST';
BYTES
----------
28311552
SQL> select count(*) from xigua_test;
COUNT(*)
----------
211403
這是日誌表,定製了策略,刪除15分鐘之前的記錄。理論上表佔用的空間應該很小才對,現在卻漲到了6G了,原本以為是高水位的問題,但結果發現不是。現在這個表還不斷的增長之中,高水位之下空閒空間也不多。
SQL> set serveroutput on
SQL> declare
2 v_unformatted_blocks number;
3 v_unformatted_bytes number;
4 v_fs1_blocks number;
5 v_fs1_bytes number;
6 v_fs2_blocks number;
7 v_fs2_bytes number;
8 v_fs3_blocks number;
9 v_fs3_bytes number;
10 v_fs4_blocks number;
11 v_fs4_bytes number;
12 v_full_blocks number;
13 v_full_bytes number;
14 begin
15 dbms_space.space_usage (
16 'OCS',
17 'OCP_PROCESS_CCR_LOG',
18 'TABLE',
19 v_unformatted_blocks,
20 v_unformatted_bytes,
21 v_fs1_blocks,
22 v_fs1_bytes,
23 v_fs2_blocks,
24 v_fs2_bytes,
25 v_fs3_blocks,
26 v_fs3_bytes,
27 v_fs4_blocks,
28 v_fs4_bytes,
29 v_full_blocks,
30 v_full_bytes);
31 dbms_output.put_line('Unformatted Blocks = '||v_unformatted_blocks);
32 dbms_output.put_line('Blocks with 00-25% free space = '||v_fs1_blocks);
33 dbms_output.put_line('Blocks with 26-50% free space = '||v_fs2_blocks);
34 dbms_output.put_line('Blocks with 51-75% free space = '||v_fs3_blocks);
35 dbms_output.put_line('Blocks with 76-100% free space = '||v_fs4_blocks);
36 dbms_output.put_line('Full Blocks = '||v_full_blocks);
37 end;
38 /
Unformatted Blocks = 0
Blocks with 00-25% free space = 2
Blocks with 26-50% free space = 1
Blocks with 51-75% free space = 9
Blocks with 76-100% free space = 561
Full Blocks = 775902
PL/SQL procedure successfully completed
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10867315/viewspace-670609/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mysql InnoDB刪除資料後釋放磁碟空間的方法MySql
- MySQL 5.7的表刪除資料後的磁碟空間釋放MySql
- (轉載)刪除檔案後硬碟空間不釋放的問題硬碟
- Linux檔案刪除但空間不釋放問題篇Linux
- Linux檔案刪除空間未釋放Linux
- 解決刪除檔案後 WSL2 磁碟空間不釋放的問題
- RM刪除檔案空間釋放詳解
- 處理Linux刪除檔案後空間未釋放的問題Linux
- [待整理]oracle10g刪除(釋放)資料檔案/表空間流程Oracle
- linux中如何解決檔案已刪除但空間不釋放的案例Linux
- 請各位大佬幫忙看看我的 Page Object 模式用的對不對Object模式
- Oracle資料庫高水位釋放——LOB欄位空間釋放Oracle資料庫
- c# 刪除某個資料夾下所有空目錄,解決因刪除空目錄後上一組成空目錄沒有刪除的情況C#
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- 誤刪GreatSQL資料?別慌,Binlog來幫忙SQL
- 刪除4G資料1300萬資料時間花費記錄
- 如何釋放Mac空間?釋放Mac系統空間小技巧Mac
- 請問新建話題是不是有問題?版主幫忙看看
- Tablespace表空間刪除
- 新建外掛,提示沒有許可權,請大家幫看看。
- 手機資料夾清理技巧!刪除幾個資料夾,瞬間騰出幾G記憶體空間記憶體
- 安裝時提示錯誤,請高手幫忙解決一下
- 面試官給我挖坑:rm刪除檔案之後,空間就被釋放了嗎?面試
- oracle級聯刪除使用者,刪除表空間Oracle
- MYSQL資料庫表記錄刪除解決方案MySql資料庫
- MySQL---資料刪除之後表檔案不變MySql
- 刪除臨時表空間組
- Mac記憶體空間不足怎麼辦?試試刪除這幾個資料夾!Mac記憶體
- lsof |grep deleted 釋放磁碟空間delete
- 解決:rm: 無法刪除"tomcat": 裝置或資源忙,linux下資料夾不能刪除TomcatLinux
- 真機除錯裝置不夠?華為AGConnect雲除錯幫你忙除錯GC
- Redis刪除大量key後,佔用的系統記憶體卻沒有釋放?Redis記憶體
- Ubuntu 強制刪除資料夾(非空)Ubuntu
- Python如何遞迴刪除空資料夾Python遞迴
- iOS pod刪除某一個框架記錄一下 eg: JMessageiOS框架
- GBase XDM(單機/分片叢集)資料庫 刪除記錄資料庫
- 為什麼刪除記錄表檔案不會減小?(記錄的插入與刪除在磁碟上的變化)
- mysql刪除一條記錄MySql
- 請求結束後刪除檔案