Saturday, December 6, 2025

tbs size

 
-- ==== COPY-PASTE THIS ENTIRE BLOCK ====
SET LINESIZE 200
SET PAGESIZE 100
COLUMN table_name        FORMAT A30
COLUMN partition_name     FORMAT A30
COLUMN current_total_gb   FORMAT 9,999,999.99
COLUMN one_partition_gb   FORMAT 9,999,999.99
COLUMN projected_12m_gb   FORMAT 9,999,999.99
COLUMN recommended_rds_gb FORMAT 9,999,999
SELECT
    'YOUR_TABLE_NAME'                                      AS table_name,
    ROUND(SUM(bytes)/1024/1024/1024, 2)                             AS current_total_gb,
    ROUND(SUM(CASE WHEN partition_name = 'THE_PARTITION_YOU_JUST_LOADED' 
                   THEN bytes ELSE 0 END)/1024/1024/1024, 2)       AS one_partition_gb,
    ROUND(SUM(CASE WHEN partition_name = 'THE_PARTITION_YOU_JUST_LOADED' 
                   THEN bytes ELSE 0 END)/1024/1024/1024, 2) * 12   AS projected_12_months_gb,
    ROUND(SUM(CASE WHEN partition_name = 'THE_PARTITION_YOU_JUST_LOADED' 
                   THEN bytes ELSE 0 END)/1024/1024/1024, 2) * 12 * 1.4 AS recommended_rds_storage_gb,
    'Safe buffer = 40% (growth, temp, undo, redo, statistics, future partitions)' AS note
FROM dba_segments
WHERE owner = 'YOUR_SCHEMA_NAME'
  AND segment_name = 'YOUR_TABLE_NAME'
  AND segment_type LIKE '%PARTITION';
-- Optional: also show the breakdown by partition so they see only one is big
SELECT 
    partition_name,
    ROUND(SUM(bytes)/1024/1024/1024, 2) AS size_per_partition_gb
FROM dba_segments
WHERE owner = 'YOUR_SCHEMA_NAME'
  AND segment_name = 'YOUR_TABLE_NAME'
  AND segment_type LIKE '%PARTITION'
GROUP BY partition_name
ORDER BY size_per_partition_gb DESC;

No comments: