maj style html
This commit is contained in:
@@ -2,8 +2,44 @@
|
|||||||
<html lang="fr">
|
<html lang="fr">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>Synthèse des bases de données</title>
|
<title>Rapport Oracle</title>
|
||||||
<script src="https://cdn.tailwindcss.com"></script>
|
<style>
|
||||||
</head>
|
body {
|
||||||
<body class="bg-gray-100 min-h-screen flex items-center justify-center p-10">
|
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
padding: 20px;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
margin: 20px 0;
|
||||||
|
background-color: #fff;
|
||||||
|
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
th, td {
|
||||||
|
padding: 12px 15px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
background-color: #4CAF50;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr:hover {
|
||||||
|
background-color: #f1f1f1;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.selected {
|
||||||
|
background-color: #d1eaff !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h2>Rapport Oracle</h2>
|
||||||
94
summary/20_datafile.sql
Normal file
94
summary/20_datafile.sql
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
prompt <h2>CDB/PDB - Détail des datafiles : </h2>
|
||||||
|
|
||||||
|
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;
|
||||||
@@ -1,3 +1,14 @@
|
|||||||
|
<script>
|
||||||
|
// Permet de sélectionner une ligne en cliquant dessus
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
document.querySelectorAll('table tr').forEach(row => {
|
||||||
|
row.addEventListener('click', () => {
|
||||||
|
document.querySelectorAll('tr').forEach(r => r.classList.remove('selected'));
|
||||||
|
row.classList.add('selected');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -5,9 +5,8 @@ OUTPUT_DIR=output/$(date +%Y%m%d)
|
|||||||
mkdir -p ${OUTPUT_DIR}
|
mkdir -p ${OUTPUT_DIR}
|
||||||
|
|
||||||
HTML_FILE=${OUTPUT_DIR}/Summary_${HNAME}_${DATETIME}.html
|
HTML_FILE=${OUTPUT_DIR}/Summary_${HNAME}_${DATETIME}.html
|
||||||
DIV_ONGLETS=onglets.html
|
|
||||||
DIV_CONTENU=contenu.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)
|
for sid in $(ps -eaf | grep pmon | egrep -v 'grep|ASM|APX1' | cut -d '_' -f3)
|
||||||
do
|
do
|
||||||
@@ -15,22 +14,12 @@ do
|
|||||||
export ORACLE_SID=$sid
|
export ORACLE_SID=$sid
|
||||||
. oraenv -s > /dev/null
|
. oraenv -s > /dev/null
|
||||||
|
|
||||||
# ajouter la base dans le menu de la page html
|
|
||||||
echo '<button class="tab-button px-4 py-2 text-sm font-medium text-blue-600 \
|
|
||||||
border-b-2 border-blue-600" data-tab="tab1">'$sid'</button>' >> ${DIV_ONGLETS}
|
|
||||||
|
|
||||||
# ajouter le resultat du script sql dans la page html
|
# 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
|
done
|
||||||
# on ferme les DIV dans le menu html
|
|
||||||
# echo '</div>' >> ${DIV_ONGLETS}
|
|
||||||
|
|
||||||
# on ferme les DIV dans le contenu des onglets
|
|
||||||
# echo '</div>' >> ${DIV_CONTENU}
|
|
||||||
|
|
||||||
# on va concaténer les sources HTML dans une seule page
|
# on va concaténer les sources HTML dans une seule page
|
||||||
cat 00_header.html >> ${HTML_FILE}
|
cat 00_header.html >> ${HTML_FILE}
|
||||||
cat ${DIV_ONGLETS} >> ${HTML_FILE}
|
|
||||||
cat ${DIV_CONTENU} >> ${HTML_FILE}
|
cat ${DIV_CONTENU} >> ${HTML_FILE}
|
||||||
cat 99_footer.html >> ${HTML_FILE}
|
cat 99_footer.html >> ${HTML_FILE}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user