达梦数据库批量统计表所占用的磁盘空间

有时候,我们需要了解数据库的一些表所占用的磁盘空间有多大,虽然通过管理工具可以查看,但是只能一张表一张表的看,效率很慢。因此,可以通过以下方式,批量统计每张表所占用的表磁盘间是多大。

原方法更新:直接使用达梦数据库内置系统存储过程统计表行数和表大小

SELECT 
B.OWNER,
B.TABLE_NAME,
ROUND(TABLE_USED_PAGES(B.OWNER,B.TABLE_NAME)*(PAGE/1024)/1024/1024,2) "GB",
TABLE_ROWCOUNT(B.OWNER,B.TABLE_NAME) "TABLE_ROWS"
FROM (
SELECT A.OWNER,
A.TABLE_NAME 
FROM ALL_TABLES A 
WHERE 
A.TABLE_NAME NOT LIKE 'CTI%' 
AND A.TABLE_NAME NOT LIKE 'SREF_CON_TAB%' 
AND A.TABLE_NAME NOT LIKE 'BM%'
) B
ORDER BY 3 DESC,1,2;

旧思路:首先创建一张临时表,用来存储统计的表所占用磁盘空间数据信息。然后通过脚本计算出表所使用的空间,最后将计算结果批量插入到临时表中即可。

具体脚本如下:

--DROP TABLE TABLESIZE_COUNT;
--创建一张临时表,其中OWNER为模式名,TABLE_NAME为表名,TABLE_USED_PAGES为表使用的空间大小,单位为K,TABLE_USED_SPACE为表占用的空间大小,单位为K
CREATE TABLE TABLESIZE_COUNT (OWNER VARCHAR(100),TABLE_NAME VARCHAR(100),TABLE_USED_PAGES INTEGER,TABLE_USED_SPACE INTEGER);
 
 
DECLARE
V_OWNER VARCHAR2(100);
V_TABNAME VARCHAR2(100);
STMT1  VARCHAR2(200);
STMT2  VARCHAR2(200);
NUM_ROWS1 NUMBER;
NUM_ROWS2 NUMBER;
BEGIN
        FOR REC IN
        (
                SELECT OWNER, TABLE_NAME FROM DBA_TABLES WHERE OWNER='HZQ' ORDER BY 1, 2
        )
        LOOP
                SELECT REC.OWNER, REC.TABLE_NAME INTO V_OWNER, V_TABNAME FROM DUAL;
                
                STMT1 := 'SELECT TABLE_USED_PAGES('''||V_OWNER||''','''||V_TABNAME||''')*(PAGE/1024)';
                EXECUTE IMMEDIATE STMT1 INTO NUM_ROWS1;
                EXECUTE IMMEDIATE 'INSERT INTO TABLESIZE_COUNT(OWNER,TABLE_NAME,TABLE_USED_PAGES) VALUES('''||V_OWNER||''','''||V_TABNAME||''','''||TO_NUMBER(NUM_ROWS1)||''');';
                STMT2 := 'SELECT TABLE_USED_SPACE('''||V_OWNER||''','''||V_TABNAME||''')*(PAGE/1024)';
                EXECUTE IMMEDIATE STMT2 INTO NUM_ROWS2;
                EXECUTE IMMEDIATE 'UPDATE TABLESIZE_COUNT SET TABLE_USED_SPACE= '''||TO_NUMBER(NUM_ROWS2)||''' WHERE OWNER= '''||V_OWNER||''' AND TABLE_NAME = '''||V_TABNAME||''';';
                COMMIT;
        END LOOP;
END;
--TRUNCATE TABLE TABLESIZE_COUNT;
--SELECT COUNT(*) FROM TABLESIZE_COUNT;
SELECT OWNER,TABLE_NAME,TABLE_USED_PAGES "TABLE_USED_PAGES(KB)",TABLE_USED_SPACE "TABLE_USED_SPACE(KB)" FROM TABLESIZE_COUNT;

在脚本执行完成后,直接查看该表信息即可。

示例如下:

附:

使用DM管理工具查看表所使用的空间大小:

1.选择要查看的模式下的表

2.右键选择【属性】

3.在表属性对话框中即可查看到表所使用的空间

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
达梦数据库中,可以使用以下语法来创建空间: create tablespace 空间名称 datafile '数据文件路径' size 大小; 例如,要创建一个名为tbs的空间,数据文件路径为'/dm7/data/DAMENG/tbs.DBF',大小为200MB,可以使用以下语句: create tablespace tbs datafile '/dm7/data/DAMENG/tbs.DBF' size 200; 此外,还可以使用alter语句对空间进行一些操作。比如,使用alter tablespace tbs rename datafile '旧文件路径' to '新文件路径'来更改空间的数据文件路径,使用alter tablespace tbs add datafile '数据文件路径' size 大小;来追加数据文件到空间中,使用alter tablespace tbs offline;将空间设置为脱机状态,使用alter tablespace tbs online;将空间设置为联机状态。还可以使用alter tablespace tbs datafile '数据文件路径' autoextend off;来关闭空间的自动扩展功能,使用alter tablespace tbs datafile '数据文件路径' autoextend on NEXT 增量 MAXSIZE 最大大小;来设置空间的自动扩展功能。 请注意,创建空间时建议将数据文件放在单独的磁盘上,以提高性能和可用性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [达梦数据库创建空间](https://blog.csdn.net/weixin_43389023/article/details/105475638)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [国产达梦数据库技术篇--操作空间](https://blog.csdn.net/zhuc_dongyc/article/details/106358711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

保定公民

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值