数据库执行sql报错数据溢出
单独查询对应的数字进行计算是不是超过了某个字段类型的上限或下限
如果已经超过了,进行对字段进行cast类型转换处理,转换为dec num都可以尝试

这里就是从

max(T.BLOCK_ID as dec*8192+t.bytes)/1024/1024 max_MB,

换成了这个执行则不报错了

max(cast(T.BLOCK_ID as dec)*8192+t.bytes)/1024/1024 max_MB,
SELECT /*+parallel(20)*/
 a.FILE_ID,
 a.file_name,
 t.owner,
 t.segment_name,
 decode(t.partition_name, NULL,NULL,t.partition_name) partition_name,
 t.segment_type,
 a.BYTES / 1024 / 1024 datafile_size,
 max(cast(T.BLOCK_ID as dec)*8192+t.bytes)/1024/1024 max_MB,
 SUM(T.bytes)/ 1024 / 1024 sum_MB
  FROM DBA_EXTENTS T, DBA_DATA_FILES A
 WHERE T.TABLESPACE_NAME IN ('TS_SETT')
   AND A.FILE_ID = T.FILE_ID
GROUP BY a.FILE_ID,a.file_name,a.BYTES,t.owner,t.segment_name,t.segment_type,t.partition_name
having max(cast(T.BLOCK_ID as dec)*8192+t.bytes)/1024/1024 > 6000
 ORDER BY a.file_id, max(T.BLOCK_ID) DESC;
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐