千家信息网

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

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要为大家展示了"Oracle如何查看对象空间使用情况",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Oracle如何查看对象空间使用情况"这篇文章
千家信息网最后更新 2025年11月07日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安全错误 数据库的锁怎样保障安全 网络技术计算机三级要学多久 国家网络安全法外呼限制 海南招聘网络安全 网络安全100强排名 山东视觉点胶软件开发 数据库实验的心得体会100字 全球大学生网络安全研究 数据库设置表空间自动增长 数据库简明教程电子书 平谷区网络软件开发大概费用 网吧要服务器吗 破解软件数据库方法 上海c语言软件开发哪家正规 重庆做游戏软件开发的电话 wep和软件开发 网络安全检查自查工作报告 cydia自动弹出一个数据库 青岛电视台网络技术中心 四川单招专科学软件开发 电信有多少服务器 中国网络安全法律法规有哪些 法规库包括哪些子数据库 山西曙光服务器维修调试价格 多台服务器的分布式文件系统 全省广播电视网络安全考试 软件开发编辑是一个专业吗 软件开发公司财务部 pve服务器怎么自己买 信息安全网络安全协议 网络安全面临的常见威胁
0