Files
db_report/sql/11_get_db_size.sql
Yacine31 4e7683aee2 mise à jour v2
Grosse mise à jour :
- style moderne des tableaux et code
- code structuré et factorisé
- sql et sh affinés
2025-11-19 15:55:11 +01:00

55 lines
1.7 KiB
SQL

prompt <h2>Taille de la base de données :</h2>
WITH
sizes AS (
select /* db-html-report */ /*+ MATERIALIZE NO_MERGE */ /* 1f.60 */
'Data' file_type,
SUM(bytes) bytes
FROM v$datafile
UNION ALL
SELECT 'Temp' file_type,
SUM(bytes) bytes
FROM v$tempfile
UNION ALL
SELECT 'Log' file_type,
SUM(bytes) * MAX(members) bytes
FROM v$log
UNION ALL
SELECT 'Control' file_type,
SUM(block_size * file_size_blks) bytes
FROM v$controlfile
),
dbsize AS (
SELECT /*+ MATERIALIZE NO_MERGE */ /* 1f.60 */
'Total' file_type,
SUM(bytes) bytes
FROM sizes
)
SELECT d.dbid,
d.name db_name,
s.file_type,
s.bytes,
CASE
WHEN s.bytes > POWER(10,15) THEN ROUND(s.bytes/POWER(10,15),3)||' P'
WHEN s.bytes > POWER(10,12) THEN ROUND(s.bytes/POWER(10,12),3)||' T'
WHEN s.bytes > POWER(10,9) THEN ROUND(s.bytes/POWER(10,9),3)||' G'
WHEN s.bytes > POWER(10,6) THEN ROUND(s.bytes/POWER(10,6),3)||' M'
WHEN s.bytes > POWER(10,3) THEN ROUND(s.bytes/POWER(10,3),3)||' K'
WHEN s.bytes > 0 THEN s.bytes||' B' END approx
FROM v$database d,
sizes s
UNION ALL
SELECT d.dbid,
d.name db_name,
s.file_type,
s.bytes,
CASE
WHEN s.bytes > POWER(10,15) THEN ROUND(s.bytes/POWER(10,15),3)||' P'
WHEN s.bytes > POWER(10,12) THEN ROUND(s.bytes/POWER(10,12),3)||' T'
WHEN s.bytes > POWER(10,9) THEN ROUND(s.bytes/POWER(10,9),3)||' G'
WHEN s.bytes > POWER(10,6) THEN ROUND(s.bytes/POWER(10,6),3)||' M'
WHEN s.bytes > POWER(10,3) THEN ROUND(s.bytes/POWER(10,3),3)||' K'
WHEN s.bytes > 0 THEN s.bytes||' B' END approx
FROM v$database d,
dbsize s;