記錄刪除後,資料塊空間不釋放,請大家幫忙看看分析一下
原表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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- hpux刪除檔案後空間不釋放UX
- Mysql 刪除資料後為釋放物理空間MySql
- Linux 刪除檔案後空間不釋放Linux
- Mysql InnoDB刪除資料後釋放磁碟空間的方法MySql
- 刪除檔案後,磁碟空間沒有釋放的處理記錄
- MySQL 5.7的表刪除資料後的磁碟空間釋放MySql
- Oracle 刪除資料後釋放資料檔案所佔磁碟空間Oracle
- (轉載)刪除檔案後硬碟空間不釋放的問題硬碟
- oracle刪除(釋放)資料檔案/表空間流程Oracle
- jf6.2初學者問題,請大家幫忙看看
- 截斷表後空間不釋放的原因分析
- 解決linux下刪除檔案或oracle表空間後空間不釋放的問題LinuxOracle
- 解決刪除檔案後 WSL2 磁碟空間不釋放的問題
- Linux檔案刪除但空間不釋放問題篇Linux
- 刪除正在使用的檔案,空間不釋放的問題
- 大家幫幫忙,看看這個SQL怎麼寫!SQL
- Linux下資料檔案刪除檔案系統空間不釋放的問題Linux
- RM刪除檔案空間釋放詳解
- Linux檔案刪除空間未釋放Linux
- drop表空間以及對應的資料檔案後空間不釋放的問題
- 刪除表空間,資料檔案也刪除後,但作業系統層面上空閒空間不見增加。作業系統
- [待整理]oracle10g刪除(釋放)資料檔案/表空間流程Oracle
- 處理Linux刪除檔案後空間未釋放的問題Linux
- 解決linux刪除檔案後空間沒有釋放問題Linux
- linux下檔案刪除之後,空間沒有釋放問題Linux
- delete不釋放表空間delete
- 監聽Session事件不能編譯,大家幫忙看看Session事件編譯
- 安裝出錯,請幫忙看看(轉)
- php5.3.3呼叫https的wsdl,出現錯誤,請大家幫忙看看PHPHTTP
- 刪除資料庫表空間資料庫
- OS 刪除temp表空間 而磁碟空間未釋放的解決方案
- 歸檔日誌物理刪除後閃回恢復區空間未釋放
- 大家幫忙看看下面的需求第3和第4能實現不??
- linux中如何解決檔案已刪除但空間不釋放的案例Linux
- oracle 失誤刪掉資料檔案後,刪除表空間操作Oracle
- 請各位大佬幫忙看看我的 Page Object 模式用的對不對Object模式
- 各位高手請幫忙,不勝感激!!!!
- 請幫忙 理解一下 BOUNDED CONTEXTContext