From c143a4d25ded2177614ef68b5df9bd305614078f Mon Sep 17 00:00:00 2001 From: Yacine31 Date: Wed, 16 Apr 2025 19:49:46 +0200 Subject: [PATCH] maj style html --- summary/00_header.html | 44 +++++++++++++++++-- summary/20_datafile.sql | 94 +++++++++++++++++++++++++++++++++++++++++ summary/99_footer.html | 13 +++++- summary/run.sh | 15 +------ 4 files changed, 148 insertions(+), 18 deletions(-) create mode 100644 summary/20_datafile.sql diff --git a/summary/00_header.html b/summary/00_header.html index 8a7ea85..099a15a 100644 --- a/summary/00_header.html +++ b/summary/00_header.html @@ -2,8 +2,44 @@ - Synthèse des bases de données - - - + Rapport Oracle + + + + +

Rapport Oracle

\ No newline at end of file diff --git a/summary/20_datafile.sql b/summary/20_datafile.sql new file mode 100644 index 0000000..06fcb6a --- /dev/null +++ b/summary/20_datafile.sql @@ -0,0 +1,94 @@ +prompt

CDB/PDB - Détail des datafiles :

+ +COL con_id HEAD "con_id" +COL pdb_name HEAD "pdb_name" +COL file_id HEAD "file_id" +COL file_name HEAD "file_name" +COL tablespace_name FORMAT A20 HEAD "tablespace" + +COL file_size_mb FORMAT 999999999.00 HEAD "file_size_mb" +COL space_used_mb FORMAT 999999999.00 HEAD "space_used_mb" +COL space_free_mb FORMAT 999999999.00 HEAD "space_free_mb" +COL maxsize_mb FORMAT 999999999.00 HEAD "maxsize_mb" +COL percent_used FORMAT 999.00 HEAD "percent_used" + +COL autoextensible FORMAT A15 HEAD "autoextensible" +COL status head "status" +COL online_status format a15 head "online_status" + +WITH +-- Sous-requête pour les fichiers de données dans une CDB +cdb_files AS ( + -- cdb_files.sql + SELECT + p.con_id AS pdb_id, + p.pdb_name AS pdb_name, + d.file_id, + d.tablespace_name, + d.file_name, + a.bytes_alloc/1024/1024 AS file_size_mb, + (a.bytes_alloc - NVL(b.bytes_free, 0))/1024/1024 AS space_used_mb, + NVL(b.bytes_free, 0)/1024/1024 AS space_free_mb, + a.maxbytes/1024/1024 AS maxsize_mb, + ROUND((a.bytes_alloc - NVL(b.bytes_free, 0)) / a.maxbytes * 100, 2) AS percent_used, + d.autoextensible, + d.status, + d.online_status + FROM + ( + SELECT + f.file_id, + SUM(f.bytes) AS bytes_alloc, + SUM(DECODE(f.autoextensible, 'YES', f.maxbytes, 'NO', f.bytes)) AS maxbytes + FROM cdb_data_files f GROUP BY file_id + ) a + LEFT JOIN ( + SELECT + f.file_id, + SUM(f.bytes) AS bytes_free + FROM cdb_free_space f GROUP BY file_id + ) b ON a.file_id = b.file_id + JOIN cdb_data_files d ON a.file_id = d.file_id + RIGHT JOIN cdb_pdbs p ON d.con_id = p.pdb_id + WHERE + (SELECT cdb FROM v$database) = 'YES' + ORDER BY p.pdb_id, d.tablespace_name, d.file_name +), +-- Sous-requête pour les fichiers de données dans une non-CDB +non_cdb_files AS ( + -- non_cdb_files.sql + SELECT + NULL AS pdb_id, + NULL AS pdb_name, + d.file_id, + d.tablespace_name, + d.file_name, + a.bytes_alloc/1024/1024 AS file_size_mb, + (a.bytes_alloc - NVL(b.bytes_free, 0))/1024/1024 AS space_used_mb, + NVL(b.bytes_free, 0)/1024/1024 AS space_free_mb, + a.maxbytes/1024/1024 AS maxsize_mb, + ROUND((a.bytes_alloc - NVL(b.bytes_free, 0)) / a.maxbytes * 100, 2) AS percent_used, + d.autoextensible, + d.status, + d.online_status + FROM + ( + SELECT + f.file_id, + SUM(f.bytes) AS bytes_alloc, + SUM(DECODE(f.autoextensible, 'YES', f.maxbytes, 'NO', f.bytes)) AS maxbytes + FROM dba_data_files f GROUP BY file_id + ) a + LEFT JOIN ( + SELECT + f.file_id, + SUM(f.bytes) AS bytes_free + FROM dba_free_space f GROUP BY file_id + ) b ON a.file_id = b.file_id + JOIN dba_data_files d ON a.file_id = d.file_id + ORDER BY d.tablespace_name, d.file_name +) +-- Requête finale combinant les résultats des sous-requêtes +SELECT * FROM cdb_files +UNION ALL +SELECT * FROM non_cdb_files; diff --git a/summary/99_footer.html b/summary/99_footer.html index 11a09ca..1c4c9f4 100644 --- a/summary/99_footer.html +++ b/summary/99_footer.html @@ -1,3 +1,14 @@ + - + \ No newline at end of file diff --git a/summary/run.sh b/summary/run.sh index 0ad0353..e016b42 100644 --- a/summary/run.sh +++ b/summary/run.sh @@ -5,9 +5,8 @@ OUTPUT_DIR=output/$(date +%Y%m%d) mkdir -p ${OUTPUT_DIR} HTML_FILE=${OUTPUT_DIR}/Summary_${HNAME}_${DATETIME}.html -DIV_ONGLETS=onglets.html DIV_CONTENU=contenu.html -rm -f ${DIV_CONTENU} ${DIV_ONGLETS} 2>/dev/null +rm -f ${DIV_CONTENU} 2>/dev/null for sid in $(ps -eaf | grep pmon | egrep -v 'grep|ASM|APX1' | cut -d '_' -f3) do @@ -15,22 +14,12 @@ do export ORACLE_SID=$sid . oraenv -s > /dev/null - # ajouter la base dans le menu de la page html - echo '' >> ${DIV_ONGLETS} - # ajouter le resultat du script sql dans la page html - cat 01_sql_header.txt ../sql/20c_datafile.sql | sqlplus -s / as sysdba >> ${DIV_CONTENU} + cat 01_sql_header.txt 20_datafile.sql | sqlplus -s / as sysdba >> ${DIV_CONTENU} done -# on ferme les DIV dans le menu html -# echo '' >> ${DIV_ONGLETS} - -# on ferme les DIV dans le contenu des onglets -# echo '' >> ${DIV_CONTENU} # on va concaténer les sources HTML dans une seule page cat 00_header.html >> ${HTML_FILE} -cat ${DIV_ONGLETS} >> ${HTML_FILE} cat ${DIV_CONTENU} >> ${HTML_FILE} cat 99_footer.html >> ${HTML_FILE}