数据库执行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

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐