Linux环境下Oracle查询DBA_TS_QUOTAS数值列显示###如何解决
问题根因
bytes、max_bytes、blocks、max_blocks均为Oracle的数值类型字段,你在col格式化命令中为其错误指定了字符类型的格式aXX,SQL*Plus无法完成数值到指定长度字符的转换,就会用###填充显示。
调整方案
可选择任意一种方式修改脚本:
- 方案1:直接删除这4个数字字段的format定义,使用SQL*Plus默认的数值格式展示,适合快速查询场景
- 方案2:为数字字段指定匹配的数值格式,搭配单位转换函数可以实现更易读的展示效果
修改后脚本示例
最简修改版
col TABLESPACE_NAME format a30; col username format a30; col dropped format a20; set wrap off; set linesize 3000; set pagesize 500; Select TABLESPACE_NAME , username , bytes , max_bytes , blocks , max_blocks , dropped FROM DBA_TS_QUOTAS;
易读优化版(自动转MB单位、识别无限制配额)
col TABLESPACE_NAME format a30; col username format a30; col bytes format a20; col max_bytes format a20; col blocks format 9999999999; col max_blocks format 9999999999; col dropped format a20; set wrap off; set linesize 3000; set pagesize 500; Select TABLESPACE_NAME , username , round(bytes/1024/1024,2) || ' MB' as bytes , case when max_bytes = -1 then 'UNLIMITED' else round(max_bytes/1024/1024,2) || ' MB' end as max_bytes , blocks , case when max_blocks = -1 then 'UNLIMITED' else max_blocks end as max_blocks , dropped FROM DBA_TS_QUOTAS;
内容的提问来源于stack exchange,提问作者CrazyCoder
相关产品推荐
相关产品推荐

