Compare commits
96 Commits
v100224
...
test-modif
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
abfe5af25d | ||
|
|
806deb1bed | ||
|
|
772f56a0c7 | ||
|
|
a63254eeae | ||
|
|
22232d89e3 | ||
|
|
e58a87826d | ||
|
|
dfb45fe9bb | ||
|
|
d6440e05e3 | ||
|
|
5ce6a49263 | ||
|
|
920f6bca1d | ||
|
|
4ad0376ddf | ||
|
|
da4bc80fad | ||
|
|
a2aaffcd86 | ||
|
|
6c198f807e | ||
|
|
7aaf4dc860 | ||
|
|
a1eb5ca51a | ||
|
|
2fc36734d9 | ||
|
|
b3f7817819 | ||
|
|
7be3142a28 | ||
|
|
1c62d6b3d5 | ||
|
|
d65ec2457d | ||
|
|
74151c3d59 | ||
|
|
45b8b6179f | ||
|
|
0ad1bd7040 | ||
|
|
45a67a6e61 | ||
|
|
b8ab331b10 | ||
|
|
8be1dca641 | ||
|
|
902f7e8423 | ||
|
|
8db0bd13d3 | ||
|
|
60a51ee98d | ||
|
|
a4f31f44a8 | ||
|
|
a2d95dd682 | ||
|
|
b646a0c12c | ||
|
|
b2104c6a1d | ||
|
|
54e620fc72 | ||
|
|
a99dbf20a0 | ||
|
|
98534e827a | ||
|
|
41e9097f99 | ||
|
|
436f12020a | ||
|
|
fb1c136904 | ||
|
|
c143a4d25d | ||
|
|
a2f09f1275 | ||
|
|
57d57273e1 | ||
|
|
98f57a6bc2 | ||
|
|
5713cfbe22 | ||
|
|
7b1c4a5114 | ||
|
|
09167bbf89 | ||
|
|
0f7a788c6b | ||
|
|
2be3bf6552 | ||
|
|
fbfc441577 | ||
|
|
b3270d5e08 | ||
|
|
02ddef481d | ||
|
|
b3ba6414ff | ||
|
|
11d0b89490 | ||
|
|
b2ddf8945f | ||
|
|
f34d4cbcaa | ||
|
|
ca1afbbad6 | ||
|
|
50c3afd85c | ||
|
|
0933917e87 | ||
|
|
ad8b5c9221 | ||
|
|
b71f09f5c5 | ||
|
|
3f34713c52 | ||
|
|
31041145bf | ||
|
|
b2b7bc120b | ||
|
|
673814a4c6 | ||
|
|
7971f53c4d | ||
|
|
97b27fd03b | ||
|
|
b32838edea | ||
|
|
3188a33462 | ||
|
|
6ad8a6028c | ||
|
|
3053b830eb | ||
|
|
8f52a24f1a | ||
|
|
006e08066c | ||
|
|
00c8ad528e | ||
|
|
482c80a6eb | ||
|
|
b9b67f8b2b | ||
|
|
0d0b0d8de4 | ||
|
|
21b3ccaf18 | ||
|
|
670ed6c2b8 | ||
|
|
a5752dde60 | ||
|
|
86d66b6255 | ||
|
|
8900c8bcfc | ||
|
|
fe3688483e | ||
|
|
f49a4fe72b | ||
|
|
1b3814261c | ||
|
|
cc07ea4a2c | ||
|
|
2c4333077f | ||
|
|
e59dc7eb32 | ||
|
|
aa22f4ed54 | ||
|
|
36a655bbbf | ||
|
|
a4bcab409a | ||
|
|
24089d76a0 | ||
|
|
0a11a0fb78 | ||
|
|
8d02a42628 | ||
|
|
11a88408ef | ||
|
|
163c3b7fe9 |
44
html/00_html_header.html
Normal file
44
html/00_html_header.html
Normal file
@@ -0,0 +1,44 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<!-- $Header: DB Report -->
|
||||
<!-- Author: yacine.oumghar@axiome.io -->
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Rapport de Base Oracle</title>
|
||||
|
||||
|
||||
<style type="text/css">
|
||||
body { font:12pt; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: #f9f9f9; padding: 20px; color: #333; }
|
||||
h1 { font-size:16pt; font-weight:bold; color:#336699; border-bottom:1px solid #336699; margin-top:0pt; margin-bottom:0pt; padding:0px 0px 0px 0px; }
|
||||
h2 { font-size:14pt; font-weight:bold; color:#336699; margin-top:10pt; margin-bottom:0pt; }
|
||||
h3 { font-size:14pt; font-weight:normal; color:#336699; margin-top:4pt; margin-bottom:0pt; }
|
||||
p { line-height: 1.0; margin-bottom: 1.2em; }
|
||||
pre { display: inline-block; background-color: #f8f8f8; border: 1px solid #ccc; padding: 1em; overflow-x: auto; font-family: monospace; font-size: 0.9em; line-height: 1.2; color: #333; white-space: pre-wrap; word-break: break-all; }
|
||||
a {color:#663300; }
|
||||
table { font-size:10pt; border-collapse: collapse; margin: 10px 0; background-color: #fff; empty-cells:show; white-space:nowrap; box-shadow: 0 2px 5px rgba(0,0,0,0.1); }
|
||||
li { font-size:10pt; color:black; padding-left:4px; padding-right:4px; padding-bottom:2px; }
|
||||
tr { color:black; background:white; }
|
||||
tr:hover { color:white; background:#0066CC; }
|
||||
tr.main { color:black; background:white; }
|
||||
tr.main:hover { color:black; background:white; }
|
||||
tr.selected { background-color: #d1eaff !important; }
|
||||
td { padding: 1px 5px; border: 1px solid #ddd; }
|
||||
th { background-color: #0066CC; color: white; font-weight:normal; cursor: pointer; }
|
||||
th:hover { background-color: #0066AA; }
|
||||
th.asc::after { content: " 🔼"; }
|
||||
th.desc::after { content: " 🔽"; }
|
||||
td.c { text-align:center; }
|
||||
font.n { font-size:10pt; font-style:italic; color:#336699; }
|
||||
font.f { font-size:10pt; color:#999999; border-top:1px solid #336699; margin-top:30pt; }
|
||||
.highlight { background: red; }
|
||||
.pct_warning { background: yellowgreen; }
|
||||
.pct_error { background: red; }
|
||||
/* Style pour les couleurs conditionnelles */
|
||||
.orange { background-color: #ff9800; }
|
||||
.red { background-color: #f44336; }
|
||||
/* Alignement des cellules numériques à droite */
|
||||
.numeric { text-align: right; }
|
||||
</style>
|
||||
|
||||
144
html/99_html_footer.html
Normal file
144
html/99_html_footer.html
Normal file
@@ -0,0 +1,144 @@
|
||||
|
||||
<br />
|
||||
</body>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const getCellValue = (tr, idx) => tr.children[idx].innerText || tr.children[idx].textContent;
|
||||
|
||||
const comparer = (idx, asc) => (a, b) => {
|
||||
const v1 = getCellValue(asc ? a : b, idx).replace(',', '.');
|
||||
const v2 = getCellValue(asc ? b : a, idx).replace(',', '.');
|
||||
return !isNaN(v1) && !isNaN(v2) ? parseFloat(v1) - parseFloat(v2) : v1.localeCompare(v2);
|
||||
};
|
||||
|
||||
// 🎯 Configuration des règles de colorisation
|
||||
const rules = [
|
||||
{
|
||||
keywords: ["percent_used", "% used", "utilisation", "%"],
|
||||
thresholds: [
|
||||
{ min: 90, color: "#fecaca", text: "#991b1b" }, // rouge
|
||||
{ min: 80, color: "#fef08a", text: "#92400e" }, // jaune
|
||||
{ min: 0, color: "#bbf7d0", text: "#065f46" } // vert
|
||||
]
|
||||
},
|
||||
{
|
||||
keywords: ["status"], // 👈 règle pour la colonne STATUS
|
||||
matchText: "FAILED", // mot-clé à détecter
|
||||
style: { // style à appliquer si trouvé
|
||||
color: "#fff",
|
||||
backgroundColor: "#dc2626", // rouge foncé
|
||||
fontWeight: "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
keywords: ["status"], // 👈 règle pour la colonne STATUS
|
||||
matchText: "COMPLETED", // mot-clé à détecter
|
||||
style: { // style à appliquer si trouvé
|
||||
backgroundColor: "#bbf7d0", // vert
|
||||
fontWeight: "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
keywords: ["account_status"], // 👈 règle pour la colonne STATUS
|
||||
matchText: "OPEN", // mot-clé à détecter
|
||||
style: { // style à appliquer si trouvé
|
||||
backgroundColor: "#bbf7d0", // vert
|
||||
fontWeight: "bold"
|
||||
}
|
||||
}
|
||||
// Tu peux ajouter d’autres règles ici si besoin
|
||||
];
|
||||
|
||||
// 🎨 Appliquer les règles de coloration dynamiquement
|
||||
const colorizeDynamicColumns = () => {
|
||||
document.querySelectorAll("table").forEach(table => {
|
||||
const rows = table.querySelectorAll("tr");
|
||||
if (rows.length === 0) return;
|
||||
|
||||
const headerRow = rows[0];
|
||||
const ths = headerRow.querySelectorAll("th");
|
||||
|
||||
rules.forEach(rule => {
|
||||
let targetIndex = -1;
|
||||
ths.forEach((th, index) => {
|
||||
const text = th.textContent.trim().toLowerCase();
|
||||
const match = rule.keywords.some(keyword => text.includes(keyword));
|
||||
if (match && targetIndex === -1) {
|
||||
targetIndex = index;
|
||||
}
|
||||
});
|
||||
|
||||
if (targetIndex !== -1) {
|
||||
rows.forEach((row, i) => {
|
||||
if (i === 0) return; // skip header
|
||||
|
||||
const cell = row.children[targetIndex];
|
||||
if (!cell) return;
|
||||
|
||||
const rawText = cell.textContent.trim();
|
||||
const numeric = parseFloat(rawText.replace('%', '').replace(',', '.'));
|
||||
|
||||
if (rule.matchText) {
|
||||
if (rawText.toUpperCase().includes(rule.matchText.toUpperCase())) {
|
||||
Object.entries(rule.style).forEach(([prop, val]) => {
|
||||
cell.style[prop] = val;
|
||||
});
|
||||
}
|
||||
} else if (!isNaN(numeric)) {
|
||||
for (const threshold of rule.thresholds) {
|
||||
if (numeric >= threshold.min) {
|
||||
cell.style.backgroundColor = threshold.color;
|
||||
cell.style.color = threshold.text;
|
||||
cell.style.fontWeight = 'bold';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// alignement à droite si numérique
|
||||
if (!isNaN(numeric)) {
|
||||
cell.classList.add("numeric");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// ➕ Appliquer alignement numérique à toutes les cellules numériques
|
||||
const alignNumericCells = () => {
|
||||
document.querySelectorAll('table tr:nth-child(n+2)').forEach(row => {
|
||||
Array.from(row.children).forEach(cell => {
|
||||
const value = parseFloat(cell.textContent.replace(',', '.'));
|
||||
if (!isNaN(value)) {
|
||||
cell.classList.add('numeric');
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// 🔁 Tri au clic sur les entêtes
|
||||
document.querySelectorAll('table th').forEach(th => {
|
||||
th.addEventListener('click', () => {
|
||||
const table = th.closest('table');
|
||||
const tbody = table.querySelector('tbody') || table;
|
||||
const rows = Array.from(tbody.querySelectorAll('tr:nth-child(n+2)'));
|
||||
const index = Array.from(th.parentNode.children).indexOf(th);
|
||||
const asc = !th.classList.contains('asc');
|
||||
table.querySelectorAll('th').forEach(th => th.classList.remove('asc', 'desc'));
|
||||
th.classList.toggle('asc', asc);
|
||||
th.classList.toggle('desc', !asc);
|
||||
rows.sort(comparer(index, asc)).forEach(row => tbody.appendChild(row));
|
||||
|
||||
// Recoloriser après le tri (au cas où les lignes changent de position)
|
||||
colorizeDynamicColumns();
|
||||
});
|
||||
});
|
||||
|
||||
// 🚀 Initialisation
|
||||
colorizeDynamicColumns();
|
||||
alignNumericCells();
|
||||
});
|
||||
</script>
|
||||
</html>
|
||||
@@ -1,3 +1,4 @@
|
||||
#!/bin/bash
|
||||
export LANG=en_US
|
||||
DATETIME=`date +%Y%m%d%H%M`
|
||||
HNAME=$(hostname)
|
||||
@@ -11,7 +12,7 @@ do
|
||||
export HTML_FILE=${OUTPUT_DIR}/Rapport_${HNAME}_${ORACLE_SID}_${DATETIME}.html
|
||||
. oraenv -s > /dev/null
|
||||
|
||||
cat sql/00_html_header.html >> ${HTML_FILE}
|
||||
cat html/00_html_header.html >> ${HTML_FILE}
|
||||
DATE_JOUR=$(date +"%d/%m/%Y %Hh%M")
|
||||
echo "<h1>Rapport de base de données ${ORACLE_SID} sur le serveur $HNAME </h1>
|
||||
<h2>Date : ${DATE_JOUR}</h2>
|
||||
@@ -23,7 +24,7 @@ do
|
||||
echo "<h1>Configuration système</h1>" >> ${HTML_FILE}
|
||||
for f in sh/*.sh
|
||||
do
|
||||
/bin/sh $f >> ${HTML_FILE}
|
||||
bash $f >> ${HTML_FILE}
|
||||
done
|
||||
|
||||
echo "<br><br>" >> ${HTML_FILE}
|
||||
@@ -33,33 +34,46 @@ do
|
||||
echo "<h1>Configuration de l'instance ASM</h1>" >> ${HTML_FILE}
|
||||
for f in asm/*.sql
|
||||
do
|
||||
# sed '1 s/^/SET PAGES 999 FEEDBACK OFF MARKUP HTML ON SPOOL ON PREFORMAT OFF ENTMAP OFF\n/' $f | sqlplus -s / as sysdba >> ${HTML_FILE}
|
||||
cat asm/sql_header.txt $f | sqlplus -s / as sysdba >> ${HTML_FILE}
|
||||
done
|
||||
fi
|
||||
|
||||
# vérifier si la base est une CDB
|
||||
if [ "$(/bin/sh sql/cdb/is_CDB.sh | tail -1)" == "YES" ]; then
|
||||
# Executer les scripts sql pour les PDB
|
||||
for f in sql/cdb/*.sql; do
|
||||
# Exécuter les scripts SQL pour les PDB
|
||||
cat sql/sql_header.txt $f | sqlplus -s / as sysdba >> ${HTML_FILE}
|
||||
done
|
||||
fi
|
||||
|
||||
# execution des scripts sql
|
||||
echo "<h1>Configuration de la base de données ${ORACLE_SID}</h1>" >> ${HTML_FILE}
|
||||
for f in sql/*.sql
|
||||
do
|
||||
# sed '1 s/^/SET PAGES 999 FEEDBACK OFF MARKUP HTML ON SPOOL ON PREFORMAT OFF ENTMAP OFF\n/' $f | sqlplus -s / as sysdba >> ${HTML_FILE}
|
||||
cat sql/sql_header.txt $f | sqlplus -s / as sysdba >> ${HTML_FILE}
|
||||
cat sql/sql_header.txt $f | sqlplus -s / as sysdba >> ${HTML_FILE}
|
||||
done
|
||||
|
||||
sed -i 's/<table.*>$/<table class="table table-striped">/g' ${HTML_FILE}
|
||||
# exécution des scripts dans sh/local si présents
|
||||
# Chemin du dossier local
|
||||
LOCAL_DIR="sh/local"
|
||||
|
||||
cat sql/99_html_footer.html >> ${HTML_FILE}
|
||||
# Exécution des scripts locaux si le dossier existe
|
||||
if [ -d "$LOCAL_DIR" ]; then
|
||||
echo "[INFO] Détection du dossier local : $LOCAL_DIR"
|
||||
for f in "$LOCAL_DIR"/*.sh; do
|
||||
[ -f "$f" ] || continue
|
||||
echo "[INFO] Exécution du script local : $f"
|
||||
bash "$f" >> ${HTML_FILE}
|
||||
done
|
||||
else
|
||||
echo "[INFO] Aucun script local détecté dans ${LOCAL_DIR}."
|
||||
fi
|
||||
|
||||
# coloriage des mots clé en rouge ou en vert
|
||||
for txt in INVALID FAILED NOARCHIVELOG OFFLINE MOUNTED
|
||||
do
|
||||
sed -i "s#<td>${txt}</td>#<td style='color: red; background-color: yellow;'>${txt}</td>#g" ${HTML_FILE}
|
||||
done
|
||||
|
||||
for txt in COMPLETED
|
||||
do
|
||||
sed -i "s#<td>${txt}</td>#<td style='color: white; background-color: green;'>${txt}</td>#g" ${HTML_FILE}
|
||||
done
|
||||
cat html/99_html_footer.html >> ${HTML_FILE}
|
||||
|
||||
echo Rapport dans le fichier html : ${HTML_FILE}
|
||||
done
|
||||
|
||||
# execution des scripts de synthèse :
|
||||
bash summary.sh
|
||||
@@ -8,16 +8,20 @@ echo "</pre>"
|
||||
|
||||
echo "<h2>Listeners en cours d'exécution :</h2>"
|
||||
echo "<pre>"
|
||||
ps -ef | grep tnslsnr| grep -v grep
|
||||
ps -ef | grep tnslsnr | grep -v grep
|
||||
echo "</pre>"
|
||||
|
||||
echo "<h2>Statut des listeners :</h2>"
|
||||
ps -ef | grep tnslsnr| grep -v grep | while read l
|
||||
echo "<h2>Statut du listener :</h2>"
|
||||
# ps -ef | grep tnslsnr | egrep -i "LISTENER_${ORACLE_SID}" | grep -v grep | while read l
|
||||
ps -ef | grep tnslsnr | egrep -i " LISTENER |${ORACLE_SID}" | grep -v grep | while read l
|
||||
do
|
||||
# Récupérer le chemin du binaire tnslsnr à partir de la sortie de ps
|
||||
binary_path=$(echo $l | awk '{print $8}' | sed 's#/bin/tnslsnr##')
|
||||
# Récupérer le chemin ORACLE_HOME à partir de la sortie de ps -ef
|
||||
# ---- La commande grep -o ne fonctionne pas sur AIX, on la remplace par perl -lne
|
||||
# binary_path=$(echo $l | grep -o '/[^ ]*' | sed 's#/bin/tnslsnr##')
|
||||
binary_path=$(echo $l | perl -lne 'print $1 if /(\S*tnslsnr\S*)/' | sed 's#/bin/tnslsnr##')
|
||||
# Extraire le nom du listener
|
||||
listener_name=$(echo $l | awk '{print $9}')
|
||||
# listener_name=$(echo $l | grep -o 'tnslsnr [^ ]*' | sed 's/tnslsnr //')
|
||||
listener_name=$(echo $l | perl -lne 'print $1 if /\btnslsnr\s+(\S+)/' | sed 's/tnslsnr //')
|
||||
# Construire la commande lsnrctl status
|
||||
lsnrctl_command="$binary_path/bin/lsnrctl status $listener_name"
|
||||
# exécuter la commande
|
||||
|
||||
73
sh/09_os_info.sh_modified
Normal file
73
sh/09_os_info.sh_modified
Normal file
@@ -0,0 +1,73 @@
|
||||
# faire des commandes pour AIX et pour Linux
|
||||
os_type=$(uname -s)
|
||||
|
||||
# Function to execute command and format output
|
||||
execute_command() {
|
||||
command="$1"
|
||||
output="$(eval "$command" 2>&1)" # Capture both stdout and stderr using eval
|
||||
# Print the command and its output in the specified format
|
||||
echo "--- Commande ---"
|
||||
echo "$command"
|
||||
echo "--- Résultat ---"
|
||||
echo "$output"
|
||||
echo "--- Fin Bloc ---"
|
||||
}
|
||||
|
||||
execute_command "ps -ef | grep pmon | grep -v grep"
|
||||
execute_command "ps -ef | grep tnslsnr | grep -v grep"
|
||||
|
||||
# Listener status
|
||||
ps -ef | grep tnslsnr | egrep -i " LISTENER |${ORACLE_SID}" | grep -v grep | while read l
|
||||
do
|
||||
binary_path=$(echo $l | perl -lne 'print $1 if /(\S*tnslsnr\S*)/' | sed 's#/bin/tnslsnr##')
|
||||
listener_name=$(echo $l | perl -lne 'print $1 if /\btnslsnr\s+(\S+)/' | sed 's/tnslsnr //')
|
||||
lsnrctl_command="$binary_path/bin/lsnrctl status $listener_name"
|
||||
export TNS_ADMIN=$binary_path/network/admin
|
||||
execute_command "$lsnrctl_command"
|
||||
done
|
||||
|
||||
execute_command "uptime"
|
||||
|
||||
case "$os_type" in
|
||||
AIX)
|
||||
execute_command "lsfs"
|
||||
;;
|
||||
Linux)
|
||||
execute_command "cat /etc/fstab | egrep -v '^#|^$'"
|
||||
;;
|
||||
esac
|
||||
|
||||
execute_command "crontab -l"
|
||||
execute_command "ulimit -a | sort"
|
||||
|
||||
case "$os_type" in
|
||||
AIX)
|
||||
execute_command "df -g"
|
||||
;;
|
||||
Linux)
|
||||
execute_command "df -h"
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$os_type" in
|
||||
Linux)
|
||||
execute_command "lsblk"
|
||||
execute_command "free -m"
|
||||
execute_command "lscpu"
|
||||
if sudo -l &> /dev/null ; then
|
||||
execute_command "sudo cat /var/log/messages | egrep -i 'error|failed' | tail -50"
|
||||
else
|
||||
echo "--- Commande ---"
|
||||
echo "sudo cat /var/log/messages | egrep -i 'error|failed' | tail -50"
|
||||
echo "--- Résultat ---"
|
||||
echo "L'utilisateur n'a les droits pour lire les fichiers log."
|
||||
echo "--- Fin Bloc ---"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$os_type" in
|
||||
AIX)
|
||||
execute_command "prtconf"
|
||||
;;
|
||||
esac
|
||||
22
sh/local/check_expdp_log.sh
Normal file
22
sh/local/check_expdp_log.sh
Normal file
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
# script pour vérifier les logs des fichiers datapump et voir si des erreurs sont présentes
|
||||
|
||||
EXPDP_DIR="/u04/expdp"
|
||||
CURRENT_DATE=$(date +%Y_%m) # date au format 2025_04
|
||||
|
||||
echo "<h2>Vérification des logs des exports Datapump</h2>"
|
||||
|
||||
# vérifier si une erreur ORA- est pésente dans les fichiers logs
|
||||
echo "<h3>Vérification de la présence d'erreurs dans les logs :</h3>"
|
||||
RESULT=$(find "${EXPDP_DIR}" -iname "export_*.log" -exec grep -H "ORA-" "{}" \;)
|
||||
if [ -z "$RESULT" ]; then
|
||||
echo "<pre>Aucune erreur ORA- détectée dans les fichiers logs du mois ${CURRENT_DATE}.</pre>"
|
||||
else
|
||||
echo "<pre>$RESULT</pre>"
|
||||
fi
|
||||
|
||||
# afficher les dernières lignes des fichiers log pour voir les les exports se sont bien déroulés
|
||||
echo "<h3>Vérification des dernières lignes dans les logs :</h3>"
|
||||
echo "<pre>"
|
||||
find "${EXPDP_DIR}" -iname "export_*.log" -exec bash -c 'echo "--- {} ---"; tail -3 "{}"' \;
|
||||
echo "</pre>"
|
||||
@@ -1,35 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<!-- $Header: DB Report -->
|
||||
<!-- Author: yacine.oumghar@axiome.io -->
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Rapport Base Oracle</title>
|
||||
|
||||
<style type="text/css">
|
||||
body {font:12pt Arial,Helvetica,Geneva,sans-serif; color:black; background:white;}
|
||||
h1 {font-size:16pt; font-weight:bold; color:#336699; border-bottom:1px solid #336699; margin-top:0pt; margin-bottom:0pt; padding:0px 0px 0px 0px;}
|
||||
h2 {font-size:14pt; font-weight:bold; color:#336699; margin-top:10pt; margin-bottom:0pt;}
|
||||
h3 {font-size:12pt; font-weight:bold; color:#336699; margin-top:4pt; margin-bottom:0pt;}
|
||||
pre {font:10pt monospace,Monaco,"Courier New",Courier; display: inline-block; padding: 10px; border: 1px solid #000; border-radius: 5px; background-color: #f5f5f5; overflow: auto;}
|
||||
|
||||
a {color:#663300;}
|
||||
table {font-size:10pt; border-collapse:collapse; empty-cells:show; white-space:nowrap; border:1px solid #336699;}
|
||||
li {font-size:10pt; color:black; padding-left:4px; padding-right:4px; padding-bottom:2px;}
|
||||
th {font-weight:bold; color:white; background:#0066CC; padding-left:4px; padding-right:4px; padding-bottom:2px;}
|
||||
tr {color:black; background:white;}
|
||||
tr:hover {color:white; background:#0066CC;}
|
||||
tr.main {color:black; background:white;}
|
||||
tr.main:hover {color:black; background:white;}
|
||||
td {vertical-align:top; border:1px solid #336699;padding-left: 5px;padding-right: 5px;}
|
||||
td.c {text-align:center;}
|
||||
font.n {font-size:10pt; font-style:italic; color:#336699;}
|
||||
font.f {font-size:10pt; color:#999999; border-top:1px solid #336699; margin-top:30pt;}
|
||||
div.google-chart {width:&&edb360_chart_width.; height:500px;}
|
||||
.highlight {background: red;}
|
||||
.pct_warning {background: yellowgreen;}
|
||||
.pct_error {background: red}
|
||||
</style>
|
||||
|
||||
96
sql/20c_datafile.sql
Normal file
96
sql/20c_datafile.sql
Normal file
@@ -0,0 +1,96 @@
|
||||
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 "Datafile"
|
||||
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 "Max Size MB"
|
||||
COL percent_used FORMAT 999.00 HEAD "% Used"
|
||||
|
||||
COL autoextensible FORMAT A15 HEAD "Auto Extensible"
|
||||
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
|
||||
-- WHERE
|
||||
-- (SELECT cdb FROM v$database) = 'NO'
|
||||
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;
|
||||
62
sql/20d_tempfile.sql
Normal file
62
sql/20d_tempfile.sql
Normal file
@@ -0,0 +1,62 @@
|
||||
prompt <h2>Détail des tempfile : </h2>
|
||||
|
||||
COL con_id HEAD "CON ID"
|
||||
COL pdb_name HEAD "PDB Name"
|
||||
COL file_id HEAD "File ID"
|
||||
COL file_name HEAD "Tempfile"
|
||||
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 "Max Size MB"
|
||||
-- COL percent_used FORMAT 999.00 HEAD "% Used"
|
||||
|
||||
COL autoextensible FORMAT A15 HEAD "Auto Extensible"
|
||||
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,
|
||||
d.bytes/1024/1024 AS file_size_mb,
|
||||
d.maxbytes/1024/1024 AS maxsize_mb,
|
||||
d.autoextensible,
|
||||
d.status
|
||||
FROM
|
||||
cdb_temp_files d
|
||||
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
|
||||
0 AS pdb_id,
|
||||
NULL AS pdb_name,
|
||||
d.file_id,
|
||||
d.tablespace_name,
|
||||
d.file_name,
|
||||
d.bytes/1024/1024 AS file_size_mb,
|
||||
d.maxbytes/1024/1024 AS maxsize_mb,
|
||||
d.autoextensible,
|
||||
d.status
|
||||
FROM
|
||||
dba_temp_files d
|
||||
WHERE
|
||||
(SELECT cdb FROM v$database) = 'NO'
|
||||
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;
|
||||
18
sql/20e_undo.sql
Normal file
18
sql/20e_undo.sql
Normal file
@@ -0,0 +1,18 @@
|
||||
prompt <h3>Détail du tablespace UNDO : </h3>
|
||||
|
||||
SELECT
|
||||
a.tablespace_name,
|
||||
a.file_id,
|
||||
a.bytes / 1024 / 1024 AS size_mb,
|
||||
a.autoextensible,
|
||||
b.bytes_free / 1024 / 1024 AS free_mb,
|
||||
(a.bytes - b.bytes_free) / 1024 / 1024 AS used_mb,
|
||||
ROUND(((a.bytes - b.bytes_free) / a.bytes) * 100, 2) AS pct_used
|
||||
FROM
|
||||
dba_data_files a
|
||||
JOIN
|
||||
(SELECT file_id, SUM(bytes) AS bytes_free
|
||||
FROM dba_free_space
|
||||
GROUP BY file_id) b
|
||||
ON a.file_id = b.file_id
|
||||
WHERE a.tablespace_name like 'UNDO%';
|
||||
@@ -1,7 +1,7 @@
|
||||
prompt <h2>Les dernières erreurs de la base de données (Les 30 derniers jours et les 50 dernières lignes)</h2>
|
||||
|
||||
SELECT
|
||||
TO_CHAR(ORIGINATING_TIMESTAMP, 'DD-MM-YYYY HH-MM-SS') "Date",
|
||||
TO_CHAR(ORIGINATING_TIMESTAMP, 'DD-MM-YYYY HH:MM:SS') "Date",
|
||||
MESSAGE_TEXT "Message"
|
||||
FROM
|
||||
X$DBGALERTEXT
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
<br />
|
||||
</body>
|
||||
|
||||
<script>
|
||||
function colorerMots(element) {
|
||||
const tds = document.querySelectorAll("td");
|
||||
for (const td of tds) {
|
||||
const text = td.textContent;
|
||||
const motsACouleur = ["Error", "Failed", "COMPLETED"];
|
||||
for (const mot of motsACouleur) {
|
||||
text = text.replace(mot, `<span style="color: red; background-color: yellow;">${mot}</span>`);
|
||||
}
|
||||
td.textContent = text;
|
||||
}
|
||||
}
|
||||
|
||||
colorerMots(element);
|
||||
|
||||
</script>
|
||||
</html>
|
||||
20
sql/cdb/01_show_pdbs.sql
Normal file
20
sql/cdb/01_show_pdbs.sql
Normal file
@@ -0,0 +1,20 @@
|
||||
prompt <h2>Liste des PLuggables Databases</h2>
|
||||
|
||||
col application_root for a25
|
||||
col application_pdb for a25
|
||||
col application_seed for a25
|
||||
|
||||
SELECT
|
||||
p.con_id,
|
||||
p.dbid,
|
||||
p.name,
|
||||
p.open_mode,
|
||||
p.restricted,
|
||||
p.open_time,
|
||||
p.application_root,
|
||||
p.application_pdb,
|
||||
p.application_seed
|
||||
FROM
|
||||
v$pdbs p
|
||||
ORDER BY
|
||||
con_id;
|
||||
7
sql/cdb/is_CDB.sh
Normal file
7
sql/cdb/is_CDB.sh
Normal file
@@ -0,0 +1,7 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Retourne YES ou NO selon que la base est une CDB ou non
|
||||
echo "
|
||||
SET PAGES 999 FEEDBACK OFF HEAD OFF
|
||||
select cdb from v\$database;
|
||||
exit" | sqlplus -s / as sysdba
|
||||
37
summary.sh
Normal file
37
summary.sh
Normal file
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
# Ce script exécute des sql pour fournir une vue global de certains aspect de la base
|
||||
# tous les datafiles, toutes les sauvegardes, toutes les erreur dans alertlog, ...
|
||||
export LANG=en_US
|
||||
DATETIME=`date +%Y%m%d%H%M`
|
||||
HNAME=$(hostname)
|
||||
OUTPUT_DIR=output/$(date +%Y%m%d)
|
||||
mkdir -p ${OUTPUT_DIR}
|
||||
|
||||
|
||||
# Execution des scripts sql
|
||||
for sqlfile in summary/*.sql
|
||||
do
|
||||
# on prepare le fichier output
|
||||
FILENAME=$(basename "$sqlfile" | cut -d_ -f2)
|
||||
BASENAME="${FILENAME%.*}"
|
||||
HTML_FILE=${OUTPUT_DIR}/Summary_${BASENAME}_${HNAME}_${DATETIME}.html
|
||||
# insertion du header HTML
|
||||
cat html/00_html_header.html >> ${HTML_FILE}
|
||||
|
||||
for sid in $(ps -eaf | grep pmon | egrep -v 'grep|ASM|APX1' | cut -d '_' -f3)
|
||||
do
|
||||
export ORAENV_ASK=NO
|
||||
export ORACLE_SID=$sid
|
||||
. oraenv -s > /dev/null
|
||||
|
||||
# ajout du nom de la base
|
||||
echo '<h3>Base de données : '$sid'</h3>' >> ${HTML_FILE}
|
||||
# ajouter le resultat du script sql dans la page html
|
||||
cat summary/01_sql_header.txt $sqlfile | sqlplus -s / as sysdba >> ${HTML_FILE}
|
||||
done
|
||||
|
||||
# insertion du footer HTML
|
||||
cat html/99_html_footer.html >> ${HTML_FILE}
|
||||
|
||||
echo Rapport synthèse pour ${FILENAME} dans : ${HTML_FILE}
|
||||
done
|
||||
1
summary/01_sql_header.txt
Normal file
1
summary/01_sql_header.txt
Normal file
@@ -0,0 +1 @@
|
||||
SET PAGES 999 FEEDBACK OFF MARKUP HTML ON SPOOL ON PREFORMAT OFF ENTMAP OFF
|
||||
93
summary/20_datafile.sql
Normal file
93
summary/20_datafile.sql
Normal file
@@ -0,0 +1,93 @@
|
||||
COL con_id HEAD "con_id"
|
||||
COL pdb_id HEAD "pdb_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 percent_used FORMAT 999.00 HEAD "percent_used"
|
||||
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 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,
|
||||
ROUND((a.bytes_alloc - NVL(b.bytes_free, 0)) / a.maxbytes * 100, 2) AS percent_used,
|
||||
(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,
|
||||
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,
|
||||
ROUND((a.bytes_alloc - NVL(b.bytes_free, 0)) / a.maxbytes * 100, 2) AS percent_used,
|
||||
(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,
|
||||
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;
|
||||
69
summary/21_tablespaces.sql
Normal file
69
summary/21_tablespaces.sql
Normal file
@@ -0,0 +1,69 @@
|
||||
prompt <h3>Détail des tablespaces : </h3>
|
||||
|
||||
COL TABLESPACE_NAME FORMAT A20 HEAD "tablespace"
|
||||
COL BIGFILE FORMAT A10 HEAD "bigfile"
|
||||
COL alloc FORMAT 99999999.00 HEAD "allocated_mb"
|
||||
COL used FORMAT 99999999.00 HEAD "used_mb"
|
||||
COL free FORMAT 99999999.00 HEAD "free_mb"
|
||||
COL max FORMAT 99999999.00 HEAD "maxsize_mb"
|
||||
COL Pct_Used FORMAT 999.00 HEAD "percent_used"
|
||||
|
||||
select
|
||||
a.tablespace_name,
|
||||
t.bigfile,
|
||||
a.bytes_alloc/1024/1024 alloc,
|
||||
(a.bytes_alloc - nvl(b.bytes_free, 0))/1024/1024 used,
|
||||
(nvl(b.bytes_free, 0))/1024/1024 free,
|
||||
maxbytes/1024/1024 Max,
|
||||
(a.bytes_alloc - nvl(b.bytes_free, 0)) / maxbytes * 100 Pct_Used
|
||||
from
|
||||
(
|
||||
select
|
||||
f.tablespace_name,
|
||||
sum(f.bytes) bytes_alloc,
|
||||
sum(decode(f.autoextensible, 'YES', f.maxbytes, 'NO', f.bytes)) maxbytes
|
||||
from
|
||||
dba_data_files f
|
||||
group by
|
||||
tablespace_name
|
||||
) a,
|
||||
(
|
||||
select
|
||||
f.tablespace_name,
|
||||
sum(f.bytes) bytes_free
|
||||
from
|
||||
dba_free_space f
|
||||
group by
|
||||
tablespace_name
|
||||
) b,
|
||||
dba_tablespaces t
|
||||
where
|
||||
a.tablespace_name = b.tablespace_name (+)
|
||||
and b.tablespace_name = t.tablespace_name
|
||||
union all
|
||||
select
|
||||
h.tablespace_name,
|
||||
dt.bigfile,
|
||||
(sum(h.bytes_free + h.bytes_used))/1024/1024 alloc,
|
||||
(sum(nvl(p.bytes_used, 0)))/1024/1024 used,
|
||||
(sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)))/1024/1024 free,
|
||||
(sum(f.maxbytes))/1024/1024 max,
|
||||
(sum(h.bytes_free + h.bytes_used) - sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0))) / sum(f.maxbytes) Pct_Used
|
||||
from
|
||||
sys.v_$temp_space_header h,
|
||||
sys.v_$temp_extent_pool p,
|
||||
dba_temp_files f,
|
||||
dba_tablespaces dt
|
||||
where
|
||||
p.file_id(+) = h.file_id
|
||||
and p.tablespace_name(+) = h.tablespace_name
|
||||
and f.file_id = h.file_id
|
||||
and f.tablespace_name = h.tablespace_name
|
||||
and h.tablespace_name = dt.tablespace_name
|
||||
group by
|
||||
h.tablespace_name,
|
||||
dt.contents,
|
||||
dt.bigfile
|
||||
order by
|
||||
1
|
||||
;
|
||||
13
summary/22_alertlog_errors.sql
Normal file
13
summary/22_alertlog_errors.sql
Normal file
@@ -0,0 +1,13 @@
|
||||
prompt <h3>Les dernières erreurs de la base de données (Les 30 derniers jours et les 50 dernières lignes)</h3>
|
||||
|
||||
SELECT
|
||||
TO_CHAR(ORIGINATING_TIMESTAMP, 'DD-MM-YYYY HH:MM:SS') "Date",
|
||||
MESSAGE_TEXT "Message"
|
||||
FROM
|
||||
X$DBGALERTEXT
|
||||
WHERE
|
||||
ORIGINATING_TIMESTAMP > SYSTIMESTAMP - 30
|
||||
AND REGEXP_LIKE(MESSAGE_TEXT, '(ORA-)')
|
||||
AND ROWNUM <=50
|
||||
ORDER BY
|
||||
ORIGINATING_TIMESTAMP DESC;
|
||||
28
summary/23_rman_backup.sql
Normal file
28
summary/23_rman_backup.sql
Normal file
@@ -0,0 +1,28 @@
|
||||
prompt <h3>Les dernières sauvegardes RMAN (30 derniers jours/50 dernières lignes)</h3>
|
||||
|
||||
ALTER SESSION SET NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS';
|
||||
|
||||
SELECT
|
||||
B.SESSION_KEY "Session Key",
|
||||
B.INPUT_TYPE "Type",
|
||||
TO_CHAR(B.START_TIME, 'DD-MM-YYYY HH24:MI') "Start Time",
|
||||
TO_CHAR(B.END_TIME, 'DD-MM-YYYY HH24:MI') "End Time",
|
||||
TO_CHAR(TRUNC(SYSDATE) + NUMTODSINTERVAL(ELAPSED_SECONDS, 'second'), 'hh24:mi:ss') "Duration",
|
||||
B.OUTPUT_DEVICE_TYPE "Device Type",
|
||||
B.INPUT_BYTES_DISPLAY "Input Bytes",
|
||||
B.OUTPUT_BYTES_DISPLAY "Output Bytes",
|
||||
CASE
|
||||
WHEN B.STATUS = 'FAILED' THEN
|
||||
'<span class="highlight">'
|
||||
|| B.STATUS
|
||||
|| '</span>'
|
||||
ELSE
|
||||
B.STATUS
|
||||
END "Status"
|
||||
FROM
|
||||
V$RMAN_BACKUP_JOB_DETAILS B
|
||||
WHERE
|
||||
B.START_TIME > ( SYSDATE - 30 )
|
||||
AND ROWNUM <= 50
|
||||
ORDER BY
|
||||
B.SESSION_KEY DESC;
|
||||
Reference in New Issue
Block a user