Резервное копирование

Материал из START-IP
Перейти к навигации Перейти к поиску

Типовой bash скрипт резервного копирования

backup.sh

#!/bin/bash

ORACLE_SID=startip
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/product/10.2.0/db_1
NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
PATH=$PATH:$ORACLE_HOME/bin
#LD_PRELOAD=/opt/oracle/libcwait.so
SQLPATH=/home/oracle/tmp

export PATH ORACLE_SID ORACLE_BASE ORACLE_HOME NLS_LANG SQLPATH

cd /backup/startip

. ~/.oracle

rman target=/ @backup.rman

for i in SIP_TYPES SIP_W ; do
    /backup/startip/exp_schema.sh $i
done


Скрипт для RMAN

backup.rman

CROSSCHECK BACKUP;

run {
    CONFIGURE CONTROLFILE AUTOBACKUP ON;
    CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   '/backup/startip/%d_%U';
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/startip/cf_%F';
#    CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;

    ALLOCATE CHANNEL c1 TYPE DISK FORMAT '/backup/startip/db_%d_%U' MAXPIECESIZE 1 G;
    BACKUP INCREMENTAL LEVEL 0 CUMULATIVE AS COMPRESSED BACKUPSET DATABASE  INCLUDE CURRENT CONTROLFILE;
    sql 'ALTER system ARCHIVE LOG CURRENT';
    BACKUP AS COMPRESSED BACKUPSET ARCHIVELOG ALL FORMAT '/backup/startip/arc_%d_%U' DELETE INPUT;
    COPY CURRENT CONTROLFILE TO '/backup/startip/ctl_last_copy';
    RELEASE CHANNEL c1;
}

CROSSCHECK BACKUP;
DELETE NOPROMPT OBSOLETE;
DELETE NOPROMPT EXPIRED BACKUP;


bash скрипт экспорта схемы

exp_schema.sh

#!/bin/bash

SCHEMA="$1"

mknod /tmp/exp.pipe.$$ p
gzip < /tmp/exp.pipe.$$ > /backup/startip/exp-$SCHEMA.dmp.gz &
exp '"/ as sysdba"' file=/tmp/exp.pipe.$$ owner="$SCHEMA" buffer=3000000 RECORDLENGTH=65535 DIRECT=Y COMPRESS=Y CONSISTENT=Y 2>&1

rm -f /tmp/exp.pipe.$$

Внимание: особенность скрипта в том, что создается сразу сжатая копия экспорта! импорт может быть выполнен аналогичным образом через pipe.