共计 3988 个字符,预计需要花费 10 分钟才能阅读完成。
这篇文章主要为大家展示了“Oracle 如何查看对象空间使用情况”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“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;12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
–用法演示
create table test_spaceASselect * from dba_tables;/1234
SYS@orcl exec show_space(TEST_SPACE 1
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;1
已删除 3044 行。
SYS@orcl commit;1
提交完成。
SYS@orcl exec show_space(TEST_SPACE 1
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;1
表被截断。
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;
以上是“Oracle 如何查看对象空间使用情况”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!