ajout des scripts de backup rman
This commit is contained in:
203
backup_rman.sh
Normal file
203
backup_rman.sh
Normal file
@@ -0,0 +1,203 @@
|
||||
#!/bin/sh
|
||||
#------------------------------------------------------------------------------
|
||||
# ORACLE DATABASE : BACKUP RMAN DB + AL
|
||||
#------------------------------------------------------------------------------
|
||||
# Historique :
|
||||
# 14/09/2011 : YAO - Creation
|
||||
# 13/10/2015 : YAO - ajout des params en ligne de commande
|
||||
# 24/10/2017 : YAO - ajout de level 0 + stby ctlfile + spfile including ctrl file
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# fonction init : c'est ici qu'il faut modifier toutes les variables liees
|
||||
# a l'environnement
|
||||
#------------------------------------------------------------------------------
|
||||
f_init() {
|
||||
|
||||
export ORACLE_OWNER=oracle
|
||||
export NLS_DATE_FORMAT="YYYY/MM/DD HH24:MI:SS"
|
||||
|
||||
# les differents repertoires
|
||||
export SCRIPTS_DIR=/home/oracle/scripts
|
||||
export BKP_LOG_DIR=$SCRIPTS_DIR/logs
|
||||
export BKP_LOCATION=/u02/backup/${ORACLE_SID}/backup_rman
|
||||
|
||||
# nombre de sauvegarde RMAN en ligne a garder
|
||||
export BKP_REDUNDANCY=2
|
||||
export DATE_JOUR=$(date +%Y%m%d-%H%M)
|
||||
export BKP_LOG_FILE=${BKP_LOG_DIR}/backup_rman_${ORACLE_SID}_${BKP_TYPE}_${DATE_JOUR}.log
|
||||
export RMAN_CMD_FILE=${SCRIPTS_DIR}/rman_cmdfile_${ORACLE_SID}_${BKP_TYPE}.rman
|
||||
# nombre de jours de conservation des logs de la sauvegarde
|
||||
export BKP_LOG_RETENTION=15
|
||||
# nombre de jours de conservation des archivelog sur disque
|
||||
export ARCHIVELOG_RETENTION=2
|
||||
|
||||
} # f_init
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# fonction d'aide
|
||||
#------------------------------------------------------------------------------
|
||||
f_help() {
|
||||
|
||||
cat <<CATEOF
|
||||
syntax : $O -s ORACLE_SID -t DB|AL
|
||||
|
||||
-s ORACLE_SID
|
||||
|
||||
-t
|
||||
-t DB => backup full (database + archivelog)
|
||||
-t AL => backup des archivelog seulement
|
||||
|
||||
CATEOF
|
||||
exit $1
|
||||
|
||||
} #f_help
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# fonction backup_is_running
|
||||
#------------------------------------------------------------------------------
|
||||
f_is_running() {
|
||||
|
||||
RUNNING_BKP=$($ORACLE_HOME/bin/sqlplus -s / as sysdba <<EOF
|
||||
-- set echo off heading off
|
||||
-- select distinct status from v\$rman_status where status like 'RUNNING%';
|
||||
SET ECHO OFF NEWP 0 SPA 0 PAGES 0 FEED OFF HEAD OFF TRIMS ON lines 132
|
||||
SELECT COUNT(*) FROM V\$RMAN_STATUS WHERE SUBSTR(STATUS,1,7)='RUNNING';
|
||||
exit
|
||||
EOF
|
||||
)
|
||||
|
||||
if [[ "$RUNNING_BKP" -ne 0 ]]; then
|
||||
f_print "Backup RMAN en cours ... on quitte"
|
||||
echo "Backup RMAN en cours ... on quitte"
|
||||
exit $1
|
||||
fi
|
||||
|
||||
} #f_help
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# fonction d'affichage de la date ds les logs
|
||||
#------------------------------------------------------------------------------
|
||||
f_print()
|
||||
{
|
||||
echo "[`date +"%Y/%m/%d %H:%M:%S"`] : $1" >> $BKP_LOG_FILE
|
||||
} #f_print
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# fonction de traitement des options de la ligne de commande
|
||||
#------------------------------------------------------------------------------
|
||||
f_options() {
|
||||
|
||||
case ${BKP_TYPE} in
|
||||
[dD][bB])
|
||||
BKP_DB_PLUS_AL=TRUE;
|
||||
;;
|
||||
[aA][lL])
|
||||
BKP_DB_PLUS_AL=FALSE;
|
||||
;;
|
||||
*) f_help 2;
|
||||
;;
|
||||
esac
|
||||
|
||||
} #f_options
|
||||
|
||||
|
||||
#----------------------------------------
|
||||
#------------ MAIN ----------------------
|
||||
#----------------------------------------
|
||||
|
||||
while getopts s:t:h o
|
||||
do
|
||||
case $o in
|
||||
t) BKP_TYPE=$OPTARG;
|
||||
;;
|
||||
s) ORACLE_SID=$OPTARG;
|
||||
;;
|
||||
h) f_help 0;
|
||||
;;
|
||||
*) f_help 2;
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# traitement de la ligne de commande
|
||||
f_options
|
||||
|
||||
|
||||
[ "${BKP_TYPE}" ] || f_help 2;
|
||||
BKP_TYPE=$(echo ${BKP_TYPE} | tr [a-z] [A-Z])
|
||||
[ "${ORACLE_SID}" ] || f_help 2;
|
||||
|
||||
# positionner les variables d'environnement ORACLE
|
||||
export ORACLE_SID
|
||||
ORAENV_ASK=NO
|
||||
PATH=/usr/local/bin:$PATH
|
||||
. oraenv -s
|
||||
|
||||
# inititalisation des variables d'environnement
|
||||
f_init
|
||||
|
||||
|
||||
# si ce n'est pas le user oracle qui lance le script, on quitte
|
||||
if (test `whoami` != $ORACLE_OWNER)
|
||||
then
|
||||
echo
|
||||
echo "-----------------------------------------------------"
|
||||
echo "Vous devez etre $ORACLE_OWNER pour lancer ce script"
|
||||
echo
|
||||
echo "-----------------------------------------------------"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# initialisation des chemins, s'ils n'existent pas ils seront crees par la commande install
|
||||
install -d ${BKP_LOCATION}
|
||||
install -d ${BKP_LOG_DIR}
|
||||
|
||||
# verifier si un backup RMAN est en cours
|
||||
f_is_running
|
||||
|
||||
# generation du script de la sauvegarde RMAN
|
||||
echo "
|
||||
run {
|
||||
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 ;
|
||||
CONFIGURE RETENTION POLICY TO REDUNDANCY ${BKP_REDUNDANCY};
|
||||
|
||||
CONFIGURE CONTROLFILE AUTOBACKUP ON;
|
||||
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '${BKP_LOCATION}/ctrlfile_auto_%F';
|
||||
" > ${RMAN_CMD_FILE}
|
||||
|
||||
# si sauvegarde DB (-t db) on ajoute cette ligne
|
||||
if [ "${BKP_DB_PLUS_AL}" == "TRUE" ]; then
|
||||
echo "
|
||||
BACKUP INCREMENTAL LEVEL 0 DEVICE TYPE DISK FORMAT '${BKP_LOCATION}/data_%T_%t_%s_%p' TAG 'DATA_${DATE_JOUR}' as compressed backupset database;
|
||||
" >> ${RMAN_CMD_FILE}
|
||||
fi
|
||||
|
||||
# on continue avec la partie commune : backup des archivelog + spfile + controlfile
|
||||
echo "
|
||||
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
|
||||
BACKUP DEVICE TYPE DISK FORMAT '${BKP_LOCATION}/arch_%T_%t_%s_%p' TAG 'ARCH_${DATE_JOUR}' AS COMPRESSED BACKUPSET ARCHIVELOG ALL DELETE ALL INPUT;
|
||||
|
||||
BACKUP SPFILE INCLUDE CURRENT CONTROLFILE FORMAT '${BKP_LOCATION}/spfile_ctrlfile_%T_%t_%s_%p' TAG 'SPFILE_CTRLFILE_${DATE_JOUR}';
|
||||
BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '${BKP_LOCATION}/standby_ctrlfile_%T_%t_%s_%p' TAG 'STBY-CTLFILE_${DATE_JOUR}';
|
||||
|
||||
CROSSCHECK ARCHIVELOG ALL;
|
||||
DELETE NOPROMPT ARCHIVELOG ALL;
|
||||
DELETE NOPROMPT OBSOLETE;
|
||||
DELETE NOPROMPT EXPIRED BACKUPSET;
|
||||
|
||||
# SQL 'ALTER DATABASE BACKUP CONTROLFILE TO TRACE';
|
||||
sql \"ALTER DATABASE BACKUP CONTROLFILE TO TRACE as ''${BKP_LOCATION}/controlfile_${ORACLE_SID}.trc'' reuse\";
|
||||
SQL \"CREATE PFILE=''${BKP_LOCATION}/pfile_${ORACLE_SID}.ora'' FROM SPFILE\";
|
||||
}
|
||||
" >> ${RMAN_CMD_FILE}
|
||||
|
||||
# Execution du script RMAN
|
||||
f_print "------------------------- DEBUT DE LA BACKUP -------------------------"
|
||||
${ORACLE_HOME}/bin/rman target / cmdfile=${RMAN_CMD_FILE} log=${BKP_LOG_FILE}
|
||||
|
||||
# Nettoyage auto des logs : duree de concervation determinee par la variable : ${BKP_LOG_RETENTION}
|
||||
f_print "------------------------- NETTOYAGE DES LOGS -------------------------"
|
||||
find ${BKP_LOG_DIR} -type f -iname "backup_rman_${BKP_TYPE}*.log" -mtime +${BKP_LOG_RETENTION} -exec rm -fv "{}" \; >> $BKP_LOG_FILE
|
||||
|
||||
f_print "------------------------- BACKUP ${BKP_TYPE} TERMINE -------------------------"
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
#---------------------------------------------------------------------------
|
||||
# 24/11/2021 - YAO nouvelle version
|
||||
# 24/01/2019 - YAO Adaptation après migration Crossway vers oda-cw
|
||||
#---------------------------------------------------------------------------
|
||||
# Environnement Variables
|
||||
export NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS'
|
||||
@@ -13,8 +13,8 @@ unset NLS_LANG
|
||||
function test_dba {
|
||||
if test "$(id|grep dba)"
|
||||
then
|
||||
return 0
|
||||
#echo " OK => Test Utilisateur DBA"
|
||||
#return 0
|
||||
echo " OK => Test Utilisateur DBA"
|
||||
else
|
||||
echo ""
|
||||
echo "============================================================="
|
||||
@@ -32,41 +32,41 @@ test_dba;
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# for r in $(ps -eaf | grep pmon | grep -v grep | cut -d '_' -f3)
|
||||
for r in $(ps -eaf | grep pmon | egrep -v 'grep|ASM|APX' | cut -d '_' -f3)
|
||||
for r in $(ps -eaf | grep pmon | egrep -v 'grep|ASM1|APX1' | cut -d '_' -f3)
|
||||
do
|
||||
# echo " Base de donnee a traiter: " $r
|
||||
echo " Base de donnee a traiter: " $r
|
||||
export ORACLE_SID=$r
|
||||
. oraenv -s
|
||||
# echo $ORACLE_SID $ORACLE_HOME
|
||||
sqlplus -S / as sysdba << EOF
|
||||
set pages 25 lines 250
|
||||
col HEURE_DEBUT for a20
|
||||
col HEURE_FIN for a20
|
||||
col LAST_BKP for a10
|
||||
col status for a25
|
||||
col IN_BYTES for a15
|
||||
col OUT_BYTES for a15
|
||||
set head off
|
||||
select '---------------------------------- '
|
||||
|| 'Database name : ' || name || ', Instance name = ' || instance_name
|
||||
|| ' ----------------------------------'
|
||||
from v\$database, v\$instance;
|
||||
set head on
|
||||
echo $ORACLE_SID $ORACLE_HOME
|
||||
sqlplus -S / as sysdba << EOF > /home/oracle/digora/log/rapport_rman_$r.log
|
||||
alter session set nls_date_format='DD/MM/YYYY HH24:MI:SS' ;
|
||||
set serveroutput on
|
||||
set linesize 250 heading off;
|
||||
set heading on pagesize 999;
|
||||
column status format a25;
|
||||
column input_bytes_display format a12;
|
||||
column output_bytes_display format a12;
|
||||
column device_type format a10;
|
||||
declare
|
||||
base varchar2(40) ;
|
||||
serv varchar2(40) ;
|
||||
begin
|
||||
select instance_name into base from v\$instance ;
|
||||
select host_name into serv from v\$instance ;
|
||||
dbms_output.put_line (' Vous trouverez ci dessous le rapport pour la base de donné :' || base || ' sur le serveur : '|| serv );
|
||||
end ;
|
||||
/
|
||||
select
|
||||
d.NAME || '_' || i.instance_name "DBNAME_INSTANCE"
|
||||
,SESSION_KEY "KEY"
|
||||
,INPUT_TYPE "BKP_TYPE"
|
||||
,to_char(START_TIME,'DD-MM-YYYY HH24:MI:SS') "HEURE_DEBUT"
|
||||
,to_char(END_TIME,'DD-MM-YYYY HH24:MI:SS') "HEURE_FIN"
|
||||
,to_char(trunc(sysdate) + numtodsinterval(ELAPSED_SECONDS, 'second'),'hh24:mi:ss') "DUREE"
|
||||
,cast((floor(sysdate-start_time)) as int) || 'd ' || round((round(sysdate-start_time, 2) - cast(floor(sysdate-start_time) as int))*24,0) || 'h' as "LAST_BKP"
|
||||
,INPUT_BYTES_DISPLAY "IN_BYTES"
|
||||
,OUTPUT_BYTES_DISPLAY "OUT_BYTES"
|
||||
,r.STATUS
|
||||
from V\$RMAN_BACKUP_JOB_DETAILS r, v\$database d, v\$instance i
|
||||
where start_time > (SYSDATE - 7)
|
||||
order by SESSION_KEY
|
||||
;
|
||||
b.input_type,
|
||||
b.status,
|
||||
to_char(b.start_time,'DD-MM-YY HH24:MI') "Start Time",
|
||||
to_char(b.end_time,'DD-MM-YY HH24:MI') "End Time",
|
||||
b.output_device_type device_type,
|
||||
b.input_bytes_display,
|
||||
b.output_bytes_display
|
||||
FROM v\$rman_backup_job_details b
|
||||
WHERE b.start_time > (SYSDATE - 30)
|
||||
ORDER BY b.start_time asc;
|
||||
EOF
|
||||
done
|
||||
|
||||
|
||||
8
check_rman_backup_1day.sh
Normal file
8
check_rman_backup_1day.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
export SCRIPTS_DIR=/home/oracle/exploit
|
||||
/home/oracle/scripts/running_instances.sh | while read d
|
||||
do
|
||||
export ORAENV_ASK=NO
|
||||
export ORACLE_SID=$d
|
||||
. oraenv > /dev/null
|
||||
sqlplus -S / as sysdba @${SCRIPTS_DIR}/check_rman_backup_1day.sql
|
||||
done
|
||||
Reference in New Issue
Block a user