====== Beispiele für ein RMAN Script ======
Über ein zentrales Script werden allen Datenbanken auf dem Host einzeln gesichert.\\
Ein zentrales Script für die Sicherung der Oracle Datenbank (Single Instance / ASM Umgebungen / RAC) finden Sie hier:
[[https://orapowershell.codeplex.com/SourceControl/latest#bash/backup/README.txt| OraPowerShell Bash Backup Scripts]]
Mit diesen Scripts wird nicht nur die DB, sonder je nach Bedarf auch weitere Einstellungen und Konfigurationen von einer RAC oder ASM Umgebung.\\
----
===== Alte manuelle Version zu Informationszwecken =====
Aufruf:
* backup.sh mit einem Eintrag auf die runRMAN.sh pro DB
* runRMAN.sh ruft eigentliche RMAN Sicherung auf, sichert Traces vom Controlfile und spfile
* info.sql spoolt metadaten aus der DB
OS:Unix\\
DB:11g\\
#!/bin/sh
# Enviroment
DAY_OF_WEEK="`date +%w`"
export DAY_OF_WEEK
DAY="`date +%d`"
export DAY
SCRIPTS=/home/oracle/backup
export SCRIPTS
BACKUP_DEST=/backuptest/flash_recovery_area
export BACKUP_DEST
if [ ! -d ${BACKUP_DEST} ]; then
echo "Backup Directory ${BACKUP_DEST} not exist"
echo " "
exit 2
fi
if [ ! -d ${SCRIPTS} ]; then
echo "Script Directory ${SCRIPTS} not exist"
echo " "
exit 3
fi
echo ------------- START BACKUP V1 at "`date`" ---- -------------- > "${SCRIPTS}/backup_${DAY_OF_WEEK}.log" 2>&1
## Start Backup for each DB
## Parameter ORACLE_HOME ORACLE_SID ORACLE_DBNAME NLS_LANG
${SCRIPTS}/runRMAN.sh /u01/app/oracle/product/11.2.0/dbhome_1 gpi1 GPI .UTF8 >> "${SCRIPTS}/backup_${DAY_OF_WEEK}.log" 2>&1
echo ------------- Finish BACKUP V1 at "`date`" ------------------ >> "${SCRIPTS}/backup_${DAY_OF_WEEK}.log" 2>&1
#!/bin/sh
# Parameter
ORACLE_HOME=$1
export ORACLE_HOME
ORACLE_SID=$2
export ORACLE_SID
ORACLE_DBNAME=$3
export ORACLE_DBNAME
NLS_LANG=$4
export NLS_LANG
# Test Parameter
if [ "$4" = "" ]; then
echo "Syntax: $f ORACLE_HOME ORACLE_SID ORACLE_DBNAME NLS_LANG"
echo " "
echo " "
exit 2
fi
if [ ! -d $1 ]; then
echo "Directory ORACLE_HOME=$1 not exist"
echo " "
exit 3
fi
if [ ! -d ${BACKUP_DEST}/${ORACLE_DBNAME} ]; then
echo "Backup Directory ${BACKUP_DEST}/${ORACLE_DBNAME} not exist"
echo " "
exit 4
fi
#Enviroment for execute as cronjob
LD_LIBRARY_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
# Run RMAN Script for this DB
#${ORACLE_HOME}/bin/rman target / nocatalog @${SCRIPTS}/backup.rman
# Delete old Trace of Controlfile
rm ${BACKUP_DEST}/${ORACLE_DBNAME}/controlfile_trace_${DAY_OF_WEEK}.trc
# Run Script to generate Trace of Controlfile
# Run Script to generate Copy of pfile
${ORACLE_HOME}/bin/sqlplus / as sysdba << EOScipt
ALTER DATABASE backup controlfile TO trace AS '${BACKUP_DEST}/${ORACLE_DBNAME}/controlfile_trace_${DAY_OF_WEEK}.trc';
CREATE pfile='${BACKUP_DEST}/${ORACLE_DBNAME}/init_${ORACLE_DBNAME}_${DAY_OF_WEEK}.ora' FROM spfile;
exit;
EOScipt
#Run Script to get DB Metadata Information
${ORACLE_HOME}/bin/sqlplus / as sysdba @${SCRIPTS}/info.sql
#PatchLevel of the database
$ORACLE_HOME/OPatch/opatch lsinventory > ${BACKUP_DEST}/${ORACLE_DBNAME}/software_lsinventory_${ORACLE_DBNAME}.log
#Save Password File
cp ${ORACLE_HOME}/dbs/orapw${ORACLE_SID} ${BACKUP_DEST}/${ORACLE_DBNAME}/orapw${ORACLE_SID}_${DAY_OF_WEEK}
# Set Config
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE MAXSETSIZE TO 10G;
CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
SHOW ALL;
# test old backup
crosscheck backup;
delete noprompt EXPIRED backup;
crosscheck archivelog all;
DELETE noprompt EXPIRED archivelog all;
#Backup DB
SQL "alter system checkpoint";
backup incremental LEVEL 0 tag "full_backup" DATABASE;
#Backup archivelogs
SQL "alter system archive log current";
backup archivelog ALL tag "archive_backup" DELETE input;
#Delete old Backups
delete noprompt obsolete;
#Backup controlfile and spfile
backup current controlfile tag "controlfile_backup";
backup spfile tag "spfile_backup";
#Summary info
list backup summary;
spool ${BACKUP_DEST}/${ORACLE_DBNAME}/dbinfo_${ORACLE_SID}_${DAY_OF_WEEK}.log
set pagesize 200
column name format a60
column parameter format a40
column value format a30
column property_value format a30
column property_name format a30
column tablespace_name format a20
column FLASHBACK_ON format a40
column LOG_MODE format a20
---------------- version --------------------
ttitle "#########################version#########################" skip 2
select * from v$version;
select * from v$option;
select
---------------- patchlevel --------------------
ttitle "#########################patchlevel#########################" skip 2
select * from sys.registry$history;
---------------- properties --------------------
ttitle "#########################properties#########################" skip 2
select property_name,property_value from database_properties;
---------------- charset -------------------
ttitle "#########################charset#########################" skip 2
select * from nls_database_parameters;
-------------- dbid ------------------------
ttitle "#########################dbid#########################" skip 2
select name,dbid from v$database;
-------------- datastructur ---------------
ttitle "#########################datastructur#########################" skip 2
select name as datafile_name from v$datafile;
select name as tempfile_name from v$tempfile;
select member as logfile_name from v$logfile;
select tablespace_name,block_size from dba_tablespaces order by tablespace_name;
------ archive -----------------------------
ttitle "#########################archive and flashback#########################" skip 2
archive log list
select FLASHBACK_ON,LOG_MODE from v$database;
spool off
exit;