[OCI] Check Jobs DBCli
![[OCI] Check Jobs DBCli](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F1376a869-58fa-491e-926a-a6ead08f9c80.png&w=3840&q=75)
Ingeniero informático, Oracle ACE, DBA y Arquitecto OCI, con más de 15 años de experiencia en plataformas Oracle. Certificado en OCI Certified Architect Professional y OCI Migration and Integration Certified Professional.
Search for a command to run...
![[OCI] Check Jobs DBCli](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F1376a869-58fa-491e-926a-a6ead08f9c80.png&w=3840&q=75)
Ingeniero informático, Oracle ACE, DBA y Arquitecto OCI, con más de 15 años de experiencia en plataformas Oracle. Certificado en OCI Certified Architect Professional y OCI Migration and Integration Certified Professional.
No comments yet. Be the first to comment.
En el artículo de hoy vamos a ver las Calendar functions en 26ai, diseñadas para simplificar la "vida" a los desarrolladores. Antes de su existencia, esto se resolvía con ingeniosas combinaciones usan
![[26ai] SQL: Calendar functions/Aggregation Filters "CALENDAR"](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F587e3328-9877-4c7a-aad7-7811e251f81e.png&w=3840&q=75)
En el artículo de hoy vamos a ver como podemos recrear una PDB$Seed de manera fácil en caso que se quede corrupta y no tengamos backup. sys@> alter pluggable database PDB$SEED open read only; alter pl
![[OCI] Recreación PDB$SEED](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F289ede5b-558c-4f93-b5c0-fa04680c91ca.png&w=3840&q=75)
El artículo también se encuentra publicado en Ingles English version. En el artículo de hoy vamos a ver como podemos clonar una PDB usando RMAN Active Duplicate o bien usando una instrucción DDL entre
![[OCI] Clone PDB](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F8ce0c665-4a5d-459d-91cf-ffe3f47d8176.png&w=3840&q=75)
El artículo también se encuentra publicado en Ingles English version. En el artículo de hoy vamos a ver la nueva sintaxis introducida para simplificar aún más los joins evitando errores comunes, hacie
![[26ai] JOIN_TO_ME](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fuploads%2Fcovers%2F65605419d28f19cc44df7ef1%2F16a23f6e-ec4c-4f0a-9529-2c8a2af2ef5e.png&w=3840&q=75)
El artículo también se encuentra publicado en Ingles English version.
En el artículo de hoy voy a compartir un sh que utilizo para ver de una manera rápida los jobs que se ejecutan desde Oracle Database Cloud.
A continuación, te muestro lo que podemos ver cuando ejecutamos el sh:
¿Qué podemos ver? En la parte superior, veremos una entrada inicial dándonos algo de información de la máquina, como el host y la IP, el shape y su timezone.
A continuación, veremos una tabla resumen con el número de total de jobs que se han ejecutado dentro de nuestra máquina, incluyendo los correctos "Success", erróneos "Failure" y de estado desconocido "Others".
En caso que se encuentren jobs erróneos, nos vendrá un detalle de cada job . La estructura que sigue es:
Nombre del job ejecutado, junto el progreso y el número de hilos dentro del job cuyo estado es erróneo.
Código y descripción del error.
Lista de hilos erróneos.
El código del sh es el siguiente:
#!/bin/bash
JOB_NUM=`dbcli list-jobs -j | jq 'length'`
JOB_OK=`dbcli list-jobs -j | jq '[.[] | select(.status=="Success")] | length'`
JOB_KO=`dbcli list-jobs -j | jq '[.[] | select(.status=="Failure")] | length'`
JOB_UNKOWN=$((JOB_NUM - JOB_OK - JOB_KO))
get_Info(){
curl -s -H "Authorization: Bearer Oracle" http://169.254.169.254/opc/v2/instance/metadata/$1
}
get_Extracc_Info_Job(){
dbcli describe-job -i "\(1" -l Verbose | grep "\)2" | sed "s/.*$2:[[:space:]]*//"
}
get_Count_Task_Job(){
dbcli describe-job -i \(1 -l Verbose | awk '/Task Name/{flag=1; next} flag' | awk '{print \)NF}' | grep \(2 | sort | uniq -c | awk '{print \)1}'
}
design_report(){
for ((i=0; i<$1; i++)); do
printf $2
done
}
design_report 100 '+'
printf '\n'
printf '\n'
echo "Check Jobs in "`hostname`" ("\((get_Info privateIP0)") - Shape "\)(get_Info dbSystemShape)" - Timezone "$(get_Info timeZone)
printf '\n'
design_report 59 '-'
printf '\n'
echo "| ⏰ Jobs ("\({JOB_NUM}") ✅ Success "\){JOB_OK}" ❌ Failure "\({JOB_KO}" ◉ Others "\){JOB_UNKOWN}" |"
design_report 59 '-'
printf '\n'
printf '\n'
if [ "${JOB_KO}" -ne 0 ]; then
echo "Detail Jobs Failure"
design_report 25 '-'
printf '\n'
i=0;
dbcli list-jobs | grep Failure | awk '{print $1}' | while read -r linea; do
((i++))
percent=\((get_Extracc_Info_Job \){linea} "Progress")
if [ "$percent" != "NA" ]; then
percent_n=${percent%\%}
if [ "\(percent_n" -ge 1 ] && [ "\)percent_n" -le 25 ]; then
percent="◔ "${percent}
fi
if [ "\(percent_n" -ge 26 ] && [ "\)percent_n" -le 50 ]; then
percent="◑ "${percent}
fi
if [ "\(percent_n" -ge 51 ] && [ "\)percent_n" -le 100 ]; then
percent="◕ "${percent}
fi
design_report 3 '·' | sed "s/.*'·':[[:space:]]*//" | tr '·' ' '
echo \({i}") "\)(get_Extracc_Info_Job \({linea} "Description")" ("\){percent}") ✖ Failure (" \((get_Count_Task_Job \){linea} "Failure") ")"
design_report 5 '·' | sed "s/.*'·':[[:space:]]*//" | tr '·' ' '
echo \((get_Extracc_Info_Job \){linea} "Message")
design_report 5 '·' | sed "s/.*'·':[[:space:]]*//" | tr '·' ' '
echo "List Task Failure"
dbcli describe-job -i ${linea} -l Verbose | awk '/Task Name/{flag=1; next} flag' | grep "Failure" | cut -c1-60 | while read -r linea; do
design_report 6 '·' | sed "s/.*'·':[[:space:]]*//" | tr '·' ' '
echo "·"${linea}
done
fi
done
``
fi
design_report 100 '+'
printf '\n'
Y aquí, el link para descargar:
https://github.com/dbaenlasombra/OCI/blob/main/oci_dbcli_info.sh
Espero que os guste. ¡Nos vemos en el próximo artículo!