TOM大神編寫的show_space函式程式碼
-
CREATE OR REPLACE PROCEDURE show_space(p_segname IN VARCHAR2,
-
-
p_owner IN VARCHAR2 DEFAULT USER,
-
p_type IN VARCHAR2 DEFAULT 'TABLE',
-
p_partition IN VARCHAR2 DEFAULT NULL) AS
-
l_free_blks NUMBER;
-
l_total_blocks NUMBER;
-
l_total_bytes NUMBER;
-
l_unused_blocks NUMBER;
-
l_unused_bytes NUMBER;
-
l_lastusedextfileid NUMBER;
-
l_lastusedextblockid NUMBER;
-
l_last_used_block NUMBER;
-
l_segment_space_mgmt VARCHAR2(255);
-
l_unformatted_blocks NUMBER;
-
l_unformatted_bytes NUMBER;
-
l_fs1_blocks NUMBER;
-
l_fs1_bytes NUMBER;
-
l_fs2_blocks NUMBER;
-
l_fs2_bytes NUMBER;
-
l_fs3_blocks NUMBER;
-
l_fs3_bytes NUMBER;
-
l_fs4_blocks NUMBER;
-
l_fs4_bytes NUMBER;
-
l_full_blocks NUMBER;
-
l_full_bytes NUMBER;
-
-
PROCEDURE p(p_label IN VARCHAR2,
-
p_num IN NUMBER) IS
-
BEGIN
-
dbms_output.put_line(rpad(p_label, 40, '.') ||
-
to_char(p_num, '999,999,999,999'));
-
END;
-
BEGIN
-
EXECUTE IMMEDIATE 'select ts.segment_space_management from dba_segments seg,dba_tablespaces ts where seg.segment_name = :p_segname and (:p_partition is null or seg.partition_name = :p_partition) and seg.owner = :p_owner and seg.tablespace_name=ts.tablespace_name'
-
INTO l_segment_space_mgmt
-
USING p_segname, p_partition, p_partition, p_owner;
-
-
-- exception
-
-- when too_many_rows
-
-- then
-
-- dbms_output.put_line('This must be a partitioned table,use p_partition => ');
-
-- return;
-
-- end;
-
-
IF l_segment_space_mgmt = 'AUTO' THEN
-
dbms_space.space_usage(p_owner, p_segname, p_type, l_unformatted_blocks,
-
l_unformatted_bytes, l_fs1_blocks, l_fs1_bytes,
-
l_fs2_blocks, l_fs2_bytes, l_fs3_blocks, l_fs3_bytes,
-
l_fs4_blocks, l_fs4_bytes, l_full_blocks,
-
l_full_bytes, p_partition);
-
-
p('Unformatted Blocks ', l_unformatted_blocks);
-
p('FS1 Blocks (0-25) ', l_fs1_blocks);
-
p('FS2 Blocks (25-50) ', l_fs2_blocks);
-
p('FS3 Blocks (50-75) ', l_fs3_blocks);
-
p('FS4 Blocks (75-100) ', l_fs4_blocks);
-
p('Full Blocks ', l_full_blocks);
-
ELSE
-
dbms_space.free_blocks(segment_owner => p_owner, segment_name => p_segname,
-
segment_type => p_type, freelist_group_id => 0,
-
free_blks => l_free_blks);
-
END IF;
-
-
dbms_space.unused_space(segment_owner => p_owner, segment_name => p_segname,
-
segment_type => p_type, partition_name => p_partition,
-
total_blocks => l_total_blocks,
-
total_bytes => l_total_bytes,
-
unused_blocks => l_unused_blocks,
-
unused_bytes => l_unused_bytes,
-
last_used_extent_file_id => l_lastusedextfileid,
-
last_used_extent_block_id => l_lastusedextblockid,
-
last_used_block => l_last_used_block);
-
-
p('Total Blocks ', l_total_blocks);
-
p('Total Bytes ', l_total_bytes);
-
p('Total MBytes ', trunc(l_total_bytes / 1024 / 1024));
-
p('Unused Blocks', l_unused_blocks);
-
p('Unused Bytes ', l_unused_bytes);
-
p('Last Used Ext FileId', l_lastusedextfileid);
-
p('Last Used Ext BlockId', l_lastusedextblockid);
-
p('Last Used Block', l_last_used_block);
- END ;
-
呼叫方法:
-
SQL> create table t1 as select * from dba_objects ;
-
SQL> exec dbms_stats.gather_table_stats(user,'T1') ;
-
SQL> set serverout on ;
-
SQL> exec show_space('T1') ;
-
Total Blocks ........................... 2,944
-
Total Bytes ........................... 24,117,248
-
Total MBytes ........................... 23
-
Unused Blocks........................... 123
-
Unused Bytes ........................... 1,007,616
-
Last Used Ext FileId.................... 1
-
Last Used Ext BlockId................... 107,904
-
Last Used Block......................... 5
-
- PL/SQL 過程已成功完成。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28878983/viewspace-2136101/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- show_space函式原始碼函式原始碼
- 乾淨的程式碼: 編寫可讀的函式函式
- 提高程式碼質量:如何編寫函式函式
- 【PL/SQL】TOM 的 show_space()SQL
- js編寫trim()函式JS函式
- 感悟篇:如何寫好函式式程式碼函式
- 如何更好的編寫async函式函式
- 如何編寫冪等的Bash指令碼(函式)? · Fatih Arslan指令碼函式
- 寫擴充套件性好的程式碼:函式套件函式
- 如何編寫翻頁函式?函式
- c函式編寫規範函式
- [譯] 編寫函式式的 JavaScript 實用指南函式JavaScript
- 如何讀懂並寫出裝逼的函式式程式碼函式
- 【譯】高階函式:利用Filter、Map和Reduce來編寫更易維護的程式碼函式Filter
- 編寫小而美函式的藝術函式
- C++ 的函式分檔案編寫C++函式
- 編寫更好的CSS程式碼CSS
- 編寫可讀的程式碼
- 程式碼的藝術:如何寫出小而清晰的函式函式
- 每日10行程式碼52:編寫高質量python程式碼方法4——用輔助函式來取代複雜的表示式行程Python函式
- 如何編寫高質量的函式 -- 敲山震虎篇函式
- 編寫一個通用的事件監聽函式事件函式
- 一個用lua編寫的自定義函式函式
- 編寫自己的php擴充套件函式 (轉)PHP套件函式
- QTP指令碼編寫技巧 - 從函式中返回多個值的方法QT指令碼函式
- 解析如何在Bash中編寫函式函式
- 第2章 編寫測試函式函式
- 用TypeScript編寫釋出函式庫TypeScript函式
- 利用函式指標,編寫一段簡潔的程式碼,實現計算器的功能函式指標
- 分享常用的CSS函式,助你寫出更簡潔的程式碼CSS函式
- Sublime 編寫編譯 swift程式碼編譯Swift
- 如何編寫簡潔的程式碼?
- 編寫更好的C#程式碼C#
- 編寫易於理解的程式碼
- 編寫程式碼的好習慣
- 編寫高效的Android程式碼Android
- 編寫易讀的程式碼 (轉)
- 編寫自己的php擴充套件函式(一) (轉)PHP套件函式