Creating automated Full and Incremental backups with RMAN


1)Scriptlərimizi saxlamaq üçün scripts qovluğunu yaradırıq

[pcsh lang=”bash” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

cd /home/oracle/
mkdir Scripts

[/pcsh]

2)Daha sonra həmin qovluğa daxil olub rman_full.sh faylını yazırıq və aşağıdakı FULL backup scripini fayla yazırıq.

[pcsh lang=”bash” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

vi rman_full.sh
ORACLE_SID=DB11G
ORACLE_HOME=/u01/app/oracle/product/11.2/db_1
PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID ORACLE_HOME PATH
$ORACLE_HOME/bin/./rman target sys/db11g@$ORACLE_SID log /tmp/rman.log <<EOF
set encryption on identified by 'db11g_rman' only;
run
{
backup incremental level 0 database format '/home/oracle/backup/rman/FULL_backup_OF_%d_ON_%D_%M_%Y_%s_%t.bkp' plus archivelog format '/home/oracle/backup/rman/ARC_%D_%M_%Y_%s_%t.bkp';
}
delete obsolete;
Y
EOF

[/pcsh]

4) Daha sonra inremental RMAN backup almaq üçün scripts papkasina girib fayl yaradırıq və aşağıdakı scripti ona yazırıq

[pcsh lang=”bash” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

[oracle@valehnote scripts]$ vi daily_rman_inc.sh
 
ORACLE_SID=DB11G
ORACLE_HOME=/u01/app/oracle/product/11.2/db_1
PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID ORACLE_HOME PATH
$ORACLE_HOME/bin/./rman target sys/db11g@$ORACLE_SID log /tmp/rman.log <<EOF
set encryption on identified by 'db11g_rman' only;
run
{
backup incremental level 1 database format '/home/oracle/backup/rman/INC_backup_OF_%d_ON_%D_%M_%Y_%s_%t.bkp' plus archivelog format '/home/oracle/backup/rman/ARC_%D_%M_%Y_%s_%t.bkp';
}
delete obsolete;
Y
EOF

[/pcsh]1) We are creating  scripts directory for storing our scripts

[pcsh lang=”bash” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

cd /home/oracle/
mkdir Scripts

[/pcsh]

2) To take full RMAN backups we create rman_full.sh file. Then write full backup script above to this file .

[pcsh lang=”bash” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

vi rman_full.sh
ORACLE_SID=DB11G
ORACLE_HOME=/u01/app/oracle/product/11.2/db_1
PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID ORACLE_HOME PATH
$ORACLE_HOME/bin/./rman target sys/db11g@$ORACLE_SID log /tmp/rman.log <<EOF
set encryption on identified by 'db11g_rman' only;
run
{
backup incremental level 0 database format '/home/oracle/backup/rman/FULL_backup_OF_%d_ON_%D_%M_%Y_%s_%t.bkp' plus archivelog format '/home/oracle/backup/rman/ARC_%D_%M_%Y_%s_%t.bkp';
}
delete obsolete;
Y
EOF

[/pcsh]

4) To take incremental backups we creating this script in scripts directory

[pcsh lang=”bash” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

[oracle@valehnote scripts]$ vi daily_rman_inc.sh
 
ORACLE_SID=DB11G
ORACLE_HOME=/u01/app/oracle/product/11.2/db_1
PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID ORACLE_HOME PATH
$ORACLE_HOME/bin/./rman target sys/db11g@$ORACLE_SID log /tmp/rman.log <<EOF
set encryption on identified by 'db11g_rman' only;
run
{
backup incremental level 1 database format '/home/oracle/backup/rman/INC_backup_OF_%d_ON_%D_%M_%Y_%s_%t.bkp' plus archivelog format '/home/oracle/backup/rman/ARC_%D_%M_%Y_%s_%t.bkp';
}
delete obsolete;
Y
EOF

[/pcsh]

Automatic backup with DataPump


İlk oncə DataPump eksportları üçün məntiqi direktoriya yaratmalı və onu fiziki direktoriyaya bağlamalıyıq

1)Fiziki DPDIR qovluğu yaradırıq:

[pcsh lang=”bash” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

cd /home/oracle/
mkdir DPDIR

[/pcsh]

2)Məntiqi direktoriyanı yaradırıq və fiziki direktoriyaya bağlayırıq:

[pcsh lang=”sql” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

CREATE OR REPLACE DIRECTORY dpdir AS '/home/oracle/DPDIR'

[/pcsh]

3)Əgər userimizin lazımi hüquqları yoxdursa ona aşağıdakı hüquqları veririk:

[pcsh lang=”sql” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

GRANT READ, WRITE ON DIRECTORY DPDIR TO SYSTEM;
GRANT FULL_EXP_DATABASE TO SYSTEM;
GRANT FULL_IMP_DATABASE TO SYSTEM;

[/pcsh]

4)Daha sonra direktoriyamızın olduğunu yoxlayırıq

[pcsh lang=”bash” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

SQL> select * from all_directories;

OWNER DIRECTORY_NAME DIRECTORY_PATH
------------------------------ ------------------------------ ------------------
SYS ORACLE_OCM_CONFIG_DIR /u01/app/oracle/pr
SYS DATA_PUMP_DIR /u01/app/oracle/ad
SYS DPDIR /home/oracle/DPDIR
SYS XMLDIR /ade/b/2125410156/

[/pcsh]

5) Daha sonra daily_backup.sh adlı bir script yaradırıq.

[pcsh lang=”bash” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

[oracle@valehnote scripts]$ vi daily_expdp.sh

TARIX=$(date +%Y_%m_%d_%H%M%S) #il,ay,gün,saat,dəqiqə,saniyədən ibarət TARİX dəyişəni yaradırıq
export ORACLE_HOME=/u01/app/oracle/product/11.2/db_1
cd $ORACLE_HOME/bin
./expdp system/db11g@DB11G directory=DPDIR schemas=SYSTEM,TEST dumpfile=DB_$TARIX.DMP logfile=DB_$TARIX.LOG #DataPump vasitəsilə SYSTEM və TEST sxemalarının backup-nı alırıq
cd /home/oracle/DPDIR
tar -cvf DB_$TARIX.tar DB_$TARIX.* # eksport olunmuş .log və .dmp fayllarını bir .tar faylında birləşdirik
gzip -9 DB_$TARIX.tar # dzip vasutəsilə .tar faylı yenidən arxivləyirik
rm DB_$TARIX.DMP # fayllar arxiv olunduqdan sonra onları silirik
rm DB_$TARIX.LOG

[/pcsh]

6) Aşağıdakı komandanı yazıb biz scriptin işləmə vaxtını təyin edirik .
İlk olaraq dəqiqə (41), sonra isə saat(23) daxil edilir. Yəni hər gün saat 23:41-də işləyəcək.

[pcsh lang=”bash” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

crontab -e
41 23 * * * sh /home/oracle/scripts/daily_expdp.sh > /home/oracle/DPDIR/expdp.log

[/pcsh]

Yuxarıdakı nümunədə biz DataPump vasitəsilə sxemalar üzrə eksport etdik bundan əlavə, biz bazanı tam və ya cədvəllərə görədə eksport edə bilərik.

Oracle Data Pump Cədvəllərə görə eksport və import aşağıdakı kimi yerinə yetirilir
============================
expdp scott/tiger tables=EMP,DEPT directory=dpdir dumpfile=EMP_DEPT.dmp logfile=EMP_DEPT.log
impdp scott/tiger tables=EMP,DEPT directory=dpdir dumpfile=EMP_DEPT.dmp logfile=EMP_DEPT.log

Oracle Data Pump vasitəsilə bazanın tam eksport və import olunması aşağıdakı kimi yerinə yetirilir
===============================
expdp system/password full=Y directory=dpdir dumpfile=fullexp.dmp logfile=fullexp.log
impdp system/password full=Y directory=dpdir dumpfile=fullexp.dmp logfile=fullexp.logİlk oncə DataPump eksportları üçün məntiqi direktoriya yaratmalı və onu fiziki direktoriyaya bağlamalıyıq

1)Fiziki DPDIR qovluğu yaradırıq:

[pcsh lang=”bash” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

cd /home/oracle/
mkdir DPDIR

[/pcsh]

2)Məntiqi direktoriyanı yaradırıq və fiziki direktoriyaya bağlayırıq:

[pcsh lang=”sql” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

CREATE OR REPLACE DIRECTORY dpdir AS '/home/oracle/DPDIR'ss

[/pcsh]

3)Əgər userimizin lazımi hüquqları yoxdursa ona aşağıdakı hüquqları veririk:

[pcsh lang=”sql” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

GRANT READ, WRITE ON DIRECTORY DPDIR TO SYSTEM;
GRANT FULL_EXP_DATABASE TO SYSTEM;
GRANT FULL_IMP_DATABASE TO SYSTEM;

[/pcsh]

4)Daha sonra direktoriyamızın olduğunu yoxlayırıq

[pcsh lang=”bash” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

SQL> select * from all_directories;

OWNER DIRECTORY_NAME DIRECTORY_PATH
------------------------------ ------------------------------ ------------------
SYS ORACLE_OCM_CONFIG_DIR /u01/app/oracle/pr
SYS DATA_PUMP_DIR /u01/app/oracle/ad
SYS DPDIR /home/oracle/DPDIR
SYS XMLDIR /ade/b/2125410156/

[/pcsh]

5) Daha sonra daily_backup.sh adlı bir script yaradırıq.

[pcsh lang=”bash” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

[oracle@valehnote scripts]$ vi daily_expdp.sh

TARIX=$(date +%Y_%m_%d_%H%M%S) #il,ay,gün,saat,dəqiqə,saniyədən ibarət TARİX dəyişəni yaradırıq
export ORACLE_HOME=/u01/app/oracle/product/11.2/db_1
cd $ORACLE_HOME/bin
./expdp system/db11g@DB11G directory=DPDIR schemas=SYSTEM,TEST dumpfile=DB_$TARIX.DMP logfile=DB_$TARIX.LOG #DataPump vasitəsilə SYSTEM və TEST sxemalarının backup-nı alırıq
cd /home/oracle/DPDIR
tar -cvf DB_$TARIX.tar DB_$TARIX.* # eksport olunmuş .log və .dmp fayllarını bir .tar faylında birləşdirik
gzip -9 DB_$TARIX.tar # dzip vasutəsilə .tar faylı yenidən arxivləyirik
rm DB_$TARIX.DMP # fayllar arxiv olunduqdan sonra onları silirik
rm DB_$TARIX.LOG

[/pcsh]

6) Aşağıdakı komandanı yazıb biz scriptin işləmə vaxtını təyin edirik .
İlk olaraq dəqiqə (41), sonra isə saat(23) daxil edilir. Yəni hər gün saat 23:41-də işləyəcək.

[pcsh lang=”bash” tab_size=”4″ message=”” hl_lines=”” provider=”manual”]

crontab -e
41 23 * * * sh /home/oracle/scripts/daily_expdp.sh > /home/oracle/DPDIR/expdp.log

[/pcsh]

Yuxarıdakı nümunədə biz DataPump vasitəsilə sxemalar üzrə eksport etdik bundan əlavə, biz bazanı tam və ya cədvəllərə görədə eksport edə bilərik.

Oracle Data Pump Cədvəllərə görə eksport və import aşağıdakı kimi yerinə yetirilir
============================
expdp scott/tiger tables=EMP,DEPT directory=dpdir dumpfile=EMP_DEPT.dmp logfile=EMP_DEPT.log
impdp scott/tiger tables=EMP,DEPT directory=dpdir dumpfile=EMP_DEPT.dmp logfile=EMP_DEPT.log

Oracle Data Pump vasitəsilə bazanın tam eksport və import olunması aşağıdakı kimi yerinə yetirilir
===============================
expdp system/password full=Y directory=dpdir dumpfile=fullexp.dmp logfile=fullexp.log
impdp system/password full=Y directory=dpdir dumpfile=fullexp.dmp logfile=fullexp.log