千家信息网

Oracle如何查看对象空间使用情况

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"Oracle如何查看对象空间使用情况",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Oracle如何查看对象空间使用情况"这篇文章
千家信息网最后更新 2026年11月01日Oracle如何查看对象空间使用情况

这篇文章主要为大家展示了"Oracle如何查看对象空间使用情况",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"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如何查看对象空间使用情况"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

对象 情况 空间 成功 内容 篇文章 过程 学习 帮助 工具 易懂 更多 条理 源码 知识 编带 行业 资讯 资讯频道 频道 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网新科技 互联网金融公司科技 互联网 的科技创新 壹账通互联网科技 互联网 视角下的科技创新 万达互联网科技 深圳艾佳互联网科技 互联网 科技服务平台 顺网科技2021年互联网排名 深圳互联网科技怎么样 团飞科技与伯堂互联网服务平台 重庆互联网医院沙龙医盟信息科技 消费医药和互联网科技 华夏恒生科技与互联网科技 山东大美朱楼互联网科技有限公司 信承诺互联网科技有限公司 互联网科技接地气 普陀区互联网教育科技管理办法 互联网科技机房 保山互联网科技靠谱吗 互联网科技保险 金融科技还是互联网 互联网科技大会案例 成都玖崟互联网科技有限公司乐商圈怎么样 北京大学互联网科技怎么样 广西互联网科技孵化中心 民营互联网公司国防科技 高科技互联网发展前景如何 易企秀互联网科技是做什么的 武汉亿视互联网科技有限公司
0