使用DBC.DiskSpaceSize查询数据库大小遇[3807]错误,求排查
问题原因与解决办法
原因
Teradata数据库中不存在DBC.DiskSpaceSize这个系统对象,你应该是记错了系统视图的名称,或者混淆了其他数据库的类似空间统计对象。
解决办法
Teradata中有多个系统视图可用于统计数据库/表的磁盘空间,以下是两种常用方案:
方案1:使用DBC.DiskSpace视图(推荐,包含已用/分配空间字段)
DBC.DiskSpace是Teradata官方用于查看磁盘空间分配的系统视图,包含你需要的CURRENTPERM(已用空间)和MAXPERM(分配空间)字段,修改后的查询语句如下:
SELECT DATABASENAME, TABLENAME, SUM(CURRENTPERM)/1024/1024 (DECIMAL(10,2)) AS USED_SPACE_MB, SUM(MAXPERM)/1024/1024/1024 (DECIMAL(10,2)) AS SPACE_ALLOCATED_GB FROM DBC.DiskSpace WHERE DATABASENAME = 'My-Database-Name' AND MAXPERM > 0 GROUP BY 1,2 ORDER BY 3 DESC;
方案2:使用DBC.TableSize视图(专注表已用空间统计)
如果只需要统计表的已用空间,DBC.TableSize视图更简洁,字段TOTALPERM代表表的总已用空间:
SELECT DATABASENAME, TABLENAME, SUM(TOTALPERM)/1024/1024 (DECIMAL(10,2)) AS USED_SPACE_MB FROM DBC.TableSize WHERE DATABASENAME = 'My-Database-Name' GROUP BY 1,2 ORDER BY 3 DESC;
额外注意事项
- 执行上述查询需要当前用户拥有对应系统视图的
SELECT权限,若权限不足,请联系DBA进行授权。 - 若你的Teradata版本较旧,部分视图可能存在字段差异,可通过
HELP VIEW DBC.DiskSpace;或HELP VIEW DBC.TableSize;查看视图的字段详情。
内容的提问来源于stack exchange,提问作者user21077255
相关产品推荐
相关产品推荐

