04. Backup & Recovery
Teori :
A. script linux
- Untuk mengetahui apakah oracle sudah running atau belum
ps -fu oracle | grep $ORACLE_SID
Artinya output perintah ps -fu oracle akan digunakan sebagai input perintah grep $ORACLE_SID
output dari grep $ORACLE_SID hanya menampilkan string yang mengandung $ORACLE_SID , dalam hal ini ora121 :
[oracle@oravbox bkup]$ ps -fu oracle | grep $ORACLE_SID
oracle 7661 1 0 09:27 ? 00:00:00 ora_pmon_ora121
oracle 7663 1 0 09:27 ? 00:00:00 ora_psp0_ora121
oracle 7665 1 1 09:27 ? 00:00:52 ora_vktm_ora121
oracle 7669 1 0 09:27 ? 00:00:00 ora_gen0_ora121
oracle 7671 1 0 09:27 ? 00:00:00 ora_mman_ora121
......
oracle 8302 1 0 09:40 ? 00:00:08 oracleora121 (LOCAL=NO)
oracle 9155 1 0 10:19 ? 00:00:00 ora_j000_ora121
oracle 9157 1 0 10:19 ? 00:00:00 ora_j001_ora121
oracle 9167 8353 0 10:19 pts/0 00:00:00 grep ora121
- command awk bisa digunakan untuk memilih field yang diinginkan sesuai delimiter.
Dari output di atas bila kita hanya menginkan field yang mengandung "_"
contoh perintah :
awk -F '_' '{print $3}'
perintah ini akan membaca dan print input yang mengadung "_" yaitu
ora_pmon_ora121
ora_psp0_ora121
ora_vktm_ora121
....
dan print hanya bagian 3 sesuai delimiter jadi :
ora121
ora121
ora121
.....
- perintah grep -c $ORACLE_SID akan menghasilkan count dari baris $ORACLE_SID
- Perintah-perintah linux bisa diassign (dimasukkan) ke variable dengan diapit "`" :
cekproses=`ps -fu oracle | grep $ORACLE_SID`
maka perintah ini : echo $cekproses outputnya sama dengan contoh paling atas
B. Oracle
Ada 2 jenis backup di oracle :
1. Logical backup yaitu exp dan expdp
Hanya backup isi dari database sesuai mode backup
Mode logical backup ada 3 yaitu : full database, schema/owner dan tabel
Untuk mode tabel bisa digunakan untuk kondisi tertentu dari tabel yang akan
diexport dengan menggunakan opsi query=
contoh
isi parameter file : /home/oracle/bkup/parexp
tables=thtool,tmtool
query="where to_char(d_calib,'YYYY')='2017'"
jalankan exp sbb :
exp usr01/pwdusr01 file=/home/oracle/bkup/exp_20200701.dmp parfile=/home/oracle/bkup/parexp log=exp_20200701.log
2. Physical backup yaitu cold backup dan hot backup
- cold backup : backup file-file database saat database mati.
Archive mode database noarchive log
- hot backup : backup file-file database saat database running.
Archive mode database harus archive log
3. Cara hot backup
3.1 Siapkan lokasi backup dengan space cukup untuk backup datafile, misal di /home/oracle/bkup
3.2 Ambil max sequence dari online redo log
select thread#, max(sequence#)
from v$log
group by thread#
order by thread#;
3.3 Cari datafile yang akan dibackup dan ukurannya
select tablespace_name, file_name, bytes/(1024*1024) as MB
from dba_data_files
where tablespace_name 'TSLATIH01' ;
TABLESPACE_NAME FILE_NAME MB
-------------------- ---------------------------------------- ----------
TSLATIH01 /oracle/data/ora121/tslatih01.dbf 65
USERS /oracle/data/ora121/users01.dbf 5
3.4 backup dilakukan per tablespace : ( sebagai sysdba )
-- SQL> alter tablespace TSLATIH01 begin backup;
-- SQL> !cp /oracle/data/ora121/tslatih01.dbf /home/oracle/bkup
-- SQL> alter tablespace TSLATIH01 end backup;
-- demikian pula untuk tablespace USERS
Arti dari SQL> !perintah_linux : adalah menjalankan perintah_linux tanpa keluar dari sqlplus
3.5 switch log file agar perubahan data selama backup yang tercatat oleh online redo dimasukkan ke archive log
SQL> alter system archive log current;
3.6 backup control file untuk keperluan recovery
SQL> alter database backup controlfile to '/home/oracle/bkup/controlbk.ctl' reuse;
3.7 backup archive log yang terjadi selama proses backup ( >= max(sequence#) )
-- SQL> select name from V$ARCHIVED_LOG
where sequence# >= ... ; <-- max(sequence#) step 3.2
-- SQL> !cp name /home/oracle/bkup
3.8 step hot backup selesai
======== Latihan04 ==========
1. Buat script untuk mengetaui apakah database sudah running atau belum
Nama script : /home/oracle/script/checkDB.sh
logik dari script :
- aktifkan .bash_profile
- cek apakah ada proses-proses yang mengandung $ORACLE_SID
- Bila jumlah proses =0 maka tampilkan pesan
Jam saat ini : 2020-07-01 11:13:39 Database ora121 is not running
Selain itu tampilkan pesan
Jam saat ini : 2020-07-01 11:17:14 Database ora121 is running and Ready
2. Buat script untuk backup exp
- Nama script /home/oracle/bkup/run_exp.sh
- Tujuan script adalah menjalankan exp seperti pada point B.1
tetapi nama output dmp tanggalnya (20200701) sesuai dengan current date
/home/oracle/bkup/exp_20200701.dmp
/home/oracle/bkup/exp_20200702.dmp dstnya
begitu juga nama log
/home/oracle/bkup/exp_20200701.log
/home/oracle/bkup/exp_20200702.log dstnya
- isi parameter file : /home/oracle/bkup/parexp
tables=thtool,tmtool
query="where to_char(d_calib,'YYYY')='2017'"
3. Buat script untuk hot backup
- Nama /home/oracle/bkup/run_hotbkup.sh
- Isi script :
tablespace yang akan dibackup TSLATIH01 dan USERS
kompile step-step point B.3.2 s/d 3.7 kedalam script
sebelum backup dimulai periksa apakah database
bila belum running proses backup stop dan exit keluarkan pesan
"Backup stop, database not running"
bila db sudah running lanjutkan step berikutnya
Kamis, 23 Juli 2020
Home »
» Latihan 04
Latihan 04
By Dimas dimz Juli 23, 2020




