Oracle檢視物件空間使用情況show_space
tom大神寫了一個用於檢視Oracle資料庫物件空間使用情況。
下面演示一下如何使用:
–工具原始碼
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;
–用法演示
create table test_space
AS
select * from dba_tables;
/
SYS@orcl> exec show_space('TEST_SPACE');
Total Blocks ……………………… 112
Total Bytes ……………………… 917,504
Total MBytes ……………………… 0
Unused Blocks……………………… 3
Unused Bytes ……………………… 24,576
Last Used Ext FileId……………….. 1
Last Used Ext BlockId………………. 115,608
Last Used Block……………………. 5
PL/SQL 過程已成功完成。
SYS@orcl> delete from test_space;
已刪除3044行。
SYS@orcl> commit;
提交完成。
SYS@orcl> exec show_space('TEST_SPACE');
Total Blocks ……………………… 112
Total Bytes ……………………… 917,504
Total MBytes ……………………… 0
Unused Blocks……………………… 3
Unused Bytes ……………………… 24,576
Last Used Ext FileId……………….. 1
Last Used Ext BlockId………………. 115,608
Last Used Block……………………. 5
PL/SQL 過程已成功完成。
SYS@orcl> truncate table test_space;
表被截斷。
SYS@orcl> exec show_space(‘TEST_SPACE’);
Total Blocks ……………………… 8
Total Bytes ……………………… 65,536
Total MBytes ……………………… 0
Unused Blocks……………………… 7
Unused Bytes ……………………… 57,344
Last Used Ext FileId……………….. 1
Last Used Ext BlockId………………. 101,872
Last Used Block……………………. 1
PL/SQL 過程已成功完成。
drop table test_space;
相關文章
- 兩種檢視錶空間使用情況的方法
- 華納雲:如何檢視Linux硬碟空間使用情況Linux硬碟
- oracle 檢視錶空間Oracle
- 查詢表空間使用情況
- linux檢視埠占用情況Linux
- 依靠dba_hist_tbspc_space_usage檢視獲得表空間的歷史使用情況
- 檢視oracle臨時表空間佔用率的檢視Oracle
- 看下Linux 如何檢視埠占用情況Linux
- 查詢表空間使用情況的指令碼指令碼
- 在oracle中監視索引的使用情況Oracle索引
- 使用netstat命令檢視埠的使用情況
- 檢視LINUX程式記憶體佔用情況Linux記憶體
- DB2檢視索引的使用情況DB2索引
- Linux 伺服器硬碟使用情況檢視Linux伺服器硬碟
- 檢視埠被佔用情況,殺死埠
- 如何檢視Mac埠號以及佔用情況Mac
- CentOS 系統的磁碟空間佔用情況查詢CentOS
- 每天自動統計表空間的使用情況
- 檢視temp表空間的消耗明細情況
- 轉:Linux檢視GPU資訊和使用情況LinuxGPU
- 用 bmon 檢視網路頻寬使用情況
- (開發必看)windows檢視埠號使用情況Windows
- df-pv 工具檢視pvc,pv 容量使用情況
- 在Linux中,如何檢視磁碟詳細使用情況?Linux
- Oracle 歸檔使用情況分析Oracle
- Linux伺服器磁碟空間佔用情況分析與清理指南Linux伺服器
- 監視磁碟使用情況
- 【TUNE_ORACLE】檢視Oracle的壞塊在空閒空間中還是在已用空間中的SQL參考OracleSQL
- 在Linux中,如何檢視系統資源使用情況?Linux
- 在Linux中,如何檢視系統的磁碟使用情況?Linux
- Linux 檢視記憶體使用情況的幾種方法Linux記憶體
- 使用show engine innodb status 檢視記憶體使用情況記憶體
- GBase8s 檢視邏輯日誌使用情況
- oracle檢視物件DDL語句Oracle物件
- 檢視ORACLE中鎖定物件Oracle物件
- Linux檢視伺服器記憶體使用情況的命令Linux伺服器記憶體
- java程式碼實現檢視Tomcat記憶體使用情況JavaTomcat記憶體
- Oracle運維指令碼-檢視DB各時間段健康狀況Oracle運維指令碼
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle