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

DataPump-la avtomatik backup alınması


İ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:

cd /home/oracle/
mkdir DPDIR

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

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

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

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

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

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/

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

[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

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.

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

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

PCTFREE and PCTUSED params


Hər iki parameter db bloklarında yaddaş sahəsinin idarə olunması üçündür. Daha dəqiq PCTFREE və PCTUSED db blokuna sətrlərin insert və update olunması zamanı  boş yaddaş sahəsinin  istifadəsini idarə etmək üçündür. PCTFREE  gələcək updatelər üçün DB blokunda nə qədər yer reserve olunmasını təyin edən blokun yaddaş parametridir. Misal üçün PCTFREE=10 təyin etdikdə, Oracle bloka yeni sətirləri  90% dolana kimi əlavə edəcək və 10% gələcək update-lər üçün saxlayacaq. Oracle Advanced Compression istifadə olunduqdaisə blokun dolmuş hissəsi  PCTFREE ölçüsünə çatdıqda oracle blokun sıxılması işlədir.

Əgər db bloku PCTFREE faizinə kimi dolursa onda, PCTUSED parametrinin dəyərindən aşağı düşməyincə həmin bloka yeni sətrlər insert etmək olmayacaq. PCTUSED parametri blokun sərbəst bloklar siyahısına qayıtması üşün aşağı sərhəddi müəyyən edir. Hər iki parameter birgə təyin olunur. Bu parametrlər index və cədvəl ayaradılan zaman CREATE TABLE və CREATE INDEX konstruksiyasında təyin olunur, həmçinin artıq yaranmış cədvəllər və indexslər üçündə  ALTER TABLE və ALTER INDEX vasitəsilə dəyişdirilə bilər. Bu parametrlərə qiymət verən zaman 2 vacib məhdudiyyəti unutmamaq lazımdır. Birincisi onların cəmi 100 dən böyük olmamalıdır, ikincisi isə PCTFREE parametrinə sıfır qiyməti vermək olmaz ,çünki elə olduqda daxili əməliyyatlar üçün yaddaşın bölüşdürülməsi problem yaranacaq.

Cədvəlin PCTFREE və PCTUSED qiymətinə baxmaq üçün aşağıdakı sorğunu işlədə bilərik.

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

SELECT pct_free,pct_used FROM user_tables WHERE table_name='TAB1';
PCT_FREE PCT_USED
---------        - ----------
10                40

[/pcsh]

pctfree
pctfree

Sadalanmış paametrlərin quraşdırılmasının bir neçə standart varıantını göstərək:
1. Sorğuların çox hissəsi UPDATE-dən ibarət olduqda, yazıların ölçüsü artır. O halda parametrləri aşağıdakı kimi təyin edirk.

PCTFREE = 20
PCTUSED = 40

PCTFREE –yə ona görə 20 qiyməti verilib ki, update zamanı ölçüsü böyüyən yazılar üçün kifayət qədər yer olsun. PCTUSED -in isə standart qiyməti qalmışdır.

2. Sorğular əsasən INSERT və DELETE –dən ibarət olduqda, DELETE operatorları isə normalda yazıların ölçüsün artırmır.
PCTFREE = 5
PCTUSED = 60
PCTFREE –yə ona gorə 5 qiyməti verilib ki, əsasən yazıların uzunluğu dəyişmir. PCTUSED-ə isə ona görə 60 qiyməti verilib ki, əlavə çoxlu sayda db bloklarının ayrılmasın, beləki DELETE operatoru tərəfindən azad olunmuş yaddaş demək olarki həmin an INSERT operatoru tərəfindən istifadə olunur.
3. Cədvəldəki məlumatlar əsasən oxumaq üçün istifadə olunduqda.
PCTFREE = 5
PCTUSED = 90
PCTFREE-ə 5 qiyməti verilib ki UPDATE operatoru az istifadə olunur. PCTUSED-ə isə 90 qiyməti verilmişdir, çünki məlumatların saxlanması üçün blokun böyük bir hissəsi istifadə olunur.Nəticədə istifadə olunan blokların ümumi sayı azalır.Hər iki parameter db bloklarında yaddaş sahəsinin idarə olunması üçündür. Daha dəqiq PCTFREE və PCTUSED db blokuna sətrlərin insert və update olunması zamanı  boş yaddaş sahəsinin  istifadəsini idarə etmək üçündür. PCTFREE  gələcək updatelər üçün DB blokunda nə qədər yer reserve olunmasını təyin edən blokun yaddaş parametridir. Misal üçün PCTFREE=10 təyin etdikdə, Oracle bloka yeni sətirləri  90% dolana kimi əlavə edəcək və 10% gələcək update-lər üçün saxlayacaq. Oracle Advanced Compression istifadə olunduqdaisə blokun dolmuş hissəsi  PCTFREE ölçüsünə çatdıqda oracle blokun sıxılması işlədir.

Əgər db bloku PCTFREE faizinə kimi dolursa onda, PCTUSED parametrinin dəyərindən aşağı düşməyincə həmin bloka yeni sətrlər insert etmək olmayacaq. PCTUSED parametri blokun sərbəst bloklar siyahısına qayıtması üşün aşağı sərhəddi müəyyən edir. Hər iki parameter birgə təyin olunur. Bu parametrlər index və cədvəl ayaradılan zaman CREATE TABLE və CREATE INDEX konstruksiyasında təyin olunur, həmçinin artıq yaranmış cədvəllər və indexslər üçündə  ALTER TABLE və ALTER INDEX vasitəsilə dəyişdirilə bilər. Bu parametrlərə qiymət verən zaman 2 vacib məhdudiyyəti unutmamaq lazımdır. Birincisi onların cəmi 100 dən böyük olmamalıdır, ikincisi isə PCTFREE parametrinə sıfır qiyməti vermək olmaz ,çünki elə olduqda daxili əməliyyatlar üçün yaddaşın bölüşdürülməsi problem yaranacaq.

Cədvəlin PCTFREE və PCTUSED qiymətinə baxmaq üçün aşağıdakı sorğunu işlədə bilərik.

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

SELECT pct_free,pct_used FROM user_tables WHERE table_name='TAB1';
PCT_FREE PCT_USED
---------        - ----------
10                40

[/pcsh]

pctfree
pctfree

Sadalanmış paametrlərin quraşdırılmasının bir neçə standart varıantını göstərək:
1. Sorğuların çox hissəsi UPDATE-dən ibarət olduqda, yazıların ölçüsü artır. O halda parametrləri aşağıdakı kimi təyin edirk.

PCTFREE = 20
PCTUSED = 40

PCTFREE –yə ona görə 20 qiyməti verilib ki, update zamanı ölçüsü böyüyən yazılar üçün kifayət qədər yer olsun. PCTUSED -in isə standart qiyməti qalmışdır.

2. Sorğular əsasən INSERT və DELETE –dən ibarət olduqda, DELETE operatorları isə normalda yazıların ölçüsün artırmır.
PCTFREE = 5
PCTUSED = 60
PCTFREE –yə ona gorə 5 qiyməti verilib ki, əsasən yazıların uzunluğu dəyişmir. PCTUSED-ə isə ona görə 60 qiyməti verilib ki, əlavə çoxlu sayda db bloklarının ayrılmasın, beləki DELETE operatoru tərəfindən azad olunmuş yaddaş demək olarki həmin an INSERT operatoru tərəfindən istifadə olunur.
3. Cədvəldəki məlumatlar əsasən oxumaq üçün istifadə olunduqda.
PCTFREE = 5
PCTUSED = 90
PCTFREE-ə 5 qiyməti verilib ki UPDATE operatoru az istifadə olunur. PCTUSED-ə isə 90 qiyməti verilmişdir, çünki məlumatların saxlanması üçün blokun böyük bir hissəsi istifadə olunur.Nəticədə istifadə olunan blokların ümumi sayı azalır.

PCTFREE və PCTUSED parametrləri


Hər iki parameter db bloklarında yaddaş sahəsinin idarə olunması üçündür. Daha dəqiq PCTFREE və PCTUSED db blokuna sətrlərin insert və update olunması zamanı  boş yaddaş sahəsinin  istifadəsini idarə etmək üçündür. PCTFREE  gələcək updatelər üçün DB blokunda nə qədər yer reserve olunmasını təyin edən blokun yaddaş parametridir. Misal üçün PCTFREE=10 təyin etdikdə, Oracle bloka yeni sətirləri  90% dolana kimi əlavə edəcək və 10% gələcək update-lər üçün saxlayacaq. Oracle Advanced Compression istifadə olunduqdaisə blokun dolmuş hissəsi  PCTFREE ölçüsünə çatdıqda oracle blokun sıxılması işlədir.

Əgər db bloku PCTFREE faizinə kimi dolursa onda, PCTUSED parametrinin dəyərindən aşağı düşməyincə həmin bloka yeni sətrlər insert etmək olmayacaq. PCTUSED parametri blokun sərbəst bloklar siyahısına qayıtması üşün aşağı sərhəddi müəyyən edir. Hər iki parameter birgə təyin olunur. Bu parametrlər index və cədvəl ayaradılan zaman CREATE TABLE və CREATE INDEX konstruksiyasında təyin olunur, həmçinin artıq yaranmış cədvəllər və indexslər üçündə  ALTER TABLE və ALTER INDEX vasitəsilə dəyişdirilə bilər. Bu parametrlərə qiymət verən zaman 2 vacib məhdudiyyəti unutmamaq lazımdır. Birincisi onların cəmi 100 dən böyük olmamalıdır, ikincisi isə PCTFREE parametrinə sıfır qiyməti vermək olmaz ,çünki elə olduqda daxili əməliyyatlar üçün yaddaşın bölüşdürülməsi problem yaranacaq.

Cədvəlin PCTFREE və PCTUSED qiymətinə baxmaq üçün aşağıdakı sorğunu işlədə bilərik.

SELECT pct_free,pct_used FROM user_tables WHERE table_name='TAB1';
PCT_FREE   PCT_USED
----------         ----------
10                   40
pctfree
pctfree

Sadalanmış paametrlərin quraşdırılmasının bir neçə standart varıantını göstərək:
1. Sorğuların çox hissəsi UPDATE-dən ibarət olduqda, yazıların ölçüsü artır. O halda parametrləri aşağıdakı kimi təyin edirk.

PCTFREE = 20
PCTUSED = 40

PCTFREE –yə ona görə 20 qiyməti verilib ki, update zamanı ölçüsü böyüyən yazılar üçün kifayət qədər yer olsun. PCTUSED -in isə standart qiyməti qalmışdır.

2. Sorğular əsasən INSERT və DELETE –dən ibarət olduqda, DELETE operatorları isə normalda yazıların ölçüsün artırmır.
PCTFREE = 5
PCTUSED = 60
PCTFREE –yə ona gorə 5 qiyməti verilib ki, əsasən yazıların uzunluğu dəyişmir. PCTUSED-ə isə ona görə 60 qiyməti verilib ki, əlavə çoxlu sayda db bloklarının ayrılmasın, beləki DELETE operatoru tərəfindən azad olunmuş yaddaş demək olarki həmin an INSERT operatoru tərəfindən istifadə olunur.
3. Cədvəldəki məlumatlar əsasən oxumaq üçün istifadə olunduqda.
PCTFREE = 5
PCTUSED = 90
PCTFREE-ə 5 qiyməti verilib ki UPDATE operatoru az istifadə olunur. PCTUSED-ə isə 90 qiyməti verilmişdir, çünki məlumatların saxlanması üçün blokun böyük bir hissəsi istifadə olunur.Nəticədə istifadə olunan blokların ümumi sayı azalır.