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