flashback transaction query

FLASHBACK TRANSACTION QUERY
-> melihat semua perubahan yang dilakukan sebuah transaksu

Pada flashback versions query, 3 kali transaksi dilakukan dalam satu kali commit, maka kita tidak dapat hanya memFlashback data pada kolom yang di Update saja
atau di delete saja atau di insert saja,

dengan flashback transaction query anda dapat melakukan hal tersebut

SIMULASI
SQL> select empno, ename, sal from emp
where deptno = 10;
EMPNO ENAME SAL
—————–
7782 CLARK 2450
7839 KING 5000
7934 MILLER 1300

SQL> insert into emp (empno,ename,sal,deptno)
values (8000,’HARRY’,2500,10);
1 row updated
SQL> commit;
commit complete

SQL> update emp set sal=3000 where empno=7839;
1 row updated
SQL> commit;
commit complete

SQL> delete emp where empno=7782; (clark deleted)
1 row deleted
SQL> commit;
commit complete

ACTIONS :
1. em, tables
2. Masukkan schema name, dan nama tabel
3. pilih actions “FLASHBACK version query”, klik GO
4. pilih kolom yang diinginkan, dan pilih untuk memfilter (dalam kasus ini gunakan “where deptno=10″), masukkan interval time atau scn, ataupun tidak, klik next
5. ditampilkan kolom2 sesuai dengan pilihan, ditambah kolom SCN,transaction ID,SCN sama berarti dilakukan dalam satu commit
6. klik transaction id
7. pada contoh kasus ini, kita akan meng-undo proses delete clark
sorot sql pada kolom “undo sql”
SQL> insert into “SCOTT”.”EMP2″(“EMPNO”,”ENAME”,”JOB”,”MGR”,”HIREDATE”,”SAL”,”COMM”,”DEPTNO”)
values (’7782′,’CLARK’,'MANAGER’,’7839′,TO_DATE(’09-06-1981′, ‘DD-MM-RRRR’),’2450′,NULL,’10′);
1 row created

Semudah itu kan, ayo dong temen2 kita belajar oracle bareng…..
kita bisa sharing2, inget KITA GA SENDIRI BANYAK ORANG BAIK YANG AKAN MENOLONG KITA APABILA KITA MEMILIKI MASALAH DENGAN ADMINISTRASI DATABASE ORACLE

MAJU TERUS ORACLE LOVERS !!!

regards
abip

flashback table

FLASHBACK TABLE :
conditions : user menDelete table
simualation :
SQL> connect scott/password_scott
connected.

SQL>delete emp;
15 rows deleted.

SQL>commit;
commit complete.

cara2 :
1. SQL> flashback table emp to scn ?

untuk mengetahui scn berapa, lakukan hal di bawah ini
SQL>select versions_startscn-1 as flashback_scn,
versions_operation as ops,
empno,ename,sal
from emp versions between scn minvalue and maxvalue
where 1=1
and versions_start_scn is not null
order by versions_start_scn desc;

STARTSCN OPS   EMPNO ENAME             SAL
——————————————————————
751564        D       8000       HARRY            2500
751564        D       7902       FORD                3000
751564        D       7900       JAMES              950
751564        D       7876       ADAMS            1100
751564        D       7844      TURNER           1500
751564        D       7839      KING                  3000
751564        D       7369      SMITH                800
751564        D       7782      CLARK              2450
751564        D       7698      BLAKE              2850
751564        D       7654      MARTIN           1250
751564        D       7566      JONES               2975

STARTSCN OPS   EMPNO ENAME             SAL
——————————————————————
751564        D       7521        WARD             1250
751564        D       7499        ALLEN            1600
751564        D       7788        SCOTT            3000

notes : versions_startscn-1 = untuk melihat scn pada saat sebelum melakukan delete pada table emp

flashback version query

FLASHBACK VERSION QUERY
-> digunakan untul melihat seluruh transaksi yang telah terjadi pada sebuah tabel

Simulasi :
schema : scott
tabel : emp

SQL> select empno, ename, sal from emp
where deptno = 10;
EMPNO ENAME SAL
——————————-
7782 CLARK 2450
7839 KING 5000
7934 MILLER 1300
SQL> insert into emp (empno,ename,sal,deptno)
values (8000,’HARRY’,2500,10);
1 row updated

SQL> update emp set sal=3000 where empno=7839;
1 row updated

SQL> delete emp where empno=7934;
1 row deleted

SQL> select empno, ename, sal from emp
where deptno=10;

SQL> commit;
commit complete

query
SQL> select versions_startscn startscn,
versions_endscn endscn,
versions_starttime starttime,
versions_endtime endtime,
versions_xid xid,
versions_operation ops,
empno,ename,sal,deptno
from emp versions between scn minvalue and maxvalue
where deptno=10;

startscn endscn starttime endtime xid ops empno ename sal deptno
738694 03-JUL-07 09.05.56 PM 0600080065010000 D 7782 CLARK 2450 10
738694 03-JUL-07 09.05.56 PM 0600080065010000 U 8000 HARRY 3500 10
******738694 03-JUL-07 09.05.56 PM 7782 CLARK 2450 10
******7839 KING 3000 10
******738694 03-JUL-07 09.05.56 PM 8000 HARRY 2500 10
738694 03-JUL-07 09.05.56 PM 0600080065010000 I 1000 ABIP 2000 10

versions_startscn : scn versions dibuat
versions_endscn : scn versions expired
versions_starttime : timestamp versions dibuat
versions_endtime : timestamp versions is expired
versions_xid : transaction identifier yang membuat version row
versions_operation : operation yang dilakukan (U=update, D=delete, I=insert)
dapat dilihat bahwa versions_startscn = 738694, berarti 3 operasi dilakukan dalam 1 commit
pada versions_operation bernilai NULL, berarti pada baris tidak dilakukan proses apa2
URUTAN DARI BAWAH KE ATAS
- dilakukan proses insert dengan ename ABIP
- 3 baris merupakan operasi select
- dilakukan proses update pada ename HARRY, dimana salary di ubah dari 2500
- dilakukan proses delete pada ename CLARK

melakukan operasi Flashback Version Query
1. em, tables
2. masukkan schema, dan nama table
3. pilih actions “Flashback Version Query”, klik GO
4. pilih kolom yang akan ditampilkan
5. masukkan where clause, pada simulasi ini kita memasukkan “where deptno=10″ atau “where 1=1, yang berarti tidak memfilter data”
6. pilih interval waktu atau semuanya atau SCN
7. ditampilkan kolom2 sesuai dengan pilihan, ditambah kolom SCN,transaction ID,SCN sama berarti dilakukan dalam satu commit
8. untuk melakukan flashback,lakukan enable row movement pada table tersebut
SQL> alter table emp enable row movement;
9. klik next, pilih cascade
10. pilih row changes untuk melihat perubahan yang akan terjadi jika melakukan flashback version query, review dan submit

flashback database

Flashback Database adalah fitur baru oracle untuk mengembalikan database pada waktu tertentu di masa lalu…

Flashback Database Tidak Menggunakan Informasi Dari Undo Tablespace

Kapan Memakai Flashback Database :

1. User di drop dengan tidak sengaja

2. Table tidak sengaja di truncate

3. Batch job (saya ga terlalu hapal, batch job yang seperti apa)

Memeriksa aktif tidaknya Flashback Database Features :
SQL> select flashback_on from V$database;

KETENTUAN :
database dalam archive log mode,

check dengan = SQL> archive log list;

jika belum dalam keadaan archive log mode;

SQL> shutdown immediate;

SQL> startup mount exclusive;

SQL alter database archivelog;

SQL> alter database open;

cek ukuran flash recovery area :

SQL> show parameter db_recovery_file_dest; akan ditampilkan direktory flash recovery area dan ukuran

menentukan ukuran flash recovery area

1. select sum(bytes)/1024/1024 as mb  from (select bytes from v$datafile union all select bytes from v$tempfile);

misal,hasilnya : 890M;

select sum(blocks*block_size)/1024/1024 as mb from v$archived_log where completion_time > sysdate -1;

misal, hasilnya : 50M;

hitung, dengan perhitungan = 2 * 890 M + 50M = 1830 M;

buat 20 % lebih banyak : 20% * 1830 = 366 M

Yang diiperlukan = 1830 + 366 =  2196 M;

mengubah ukuran recovery area :
SQL> alter system set db_recovery_file_dest_size=2196M;

Mengaktifkan Flashback Database :
1. SQL> shutown immediate;

2. SQL> startup mount exclusive;

3. SQL> alter database flashback on;

4. SQL> alter database open;

FLASHBACK_RETENTION_TARGET
berapa lama waktu terakhir flashback database;

untuk melihat retention target dari flashback : SQL> show parameter db_flashback_retention_target  (in minutes)

untuk mengubah retention target, misal 2 hari : SQL> alter system set db_flashback_retention_target=2880

Contoh :

1. connect sys/pwd as sysdba

2. alter session set nls_date_format=’dd-mm-yy hh24:mi:ss’;

3. set time on;

4.  03-07-07 15:21:25 SQL> create user abip identified by orcl;

5. 03-07-07 15:22:00 SQ>commit;

6. 03-07-07 15:28:00 SQL>drop user;

7. 03-07-07 15:28:05 SQL> commit;

dengan menggunakan flashback database kita dengan mudah dan cepat melakukan recovery pada user tersebut

cara :

8. shutdown immediate;

9. startup mount;

10. flashback database as of timestamp(to_timestamp(’03-07-07 15:24:00′,’dd-mm-yy hh24:mi:ss’));

11. alter database open resetlogs;

tes, untuk melihat hasilnya

SQL> select username from dba_users where username = ‘ABIP’;

v$flashback_database_log : anda bisa melihat oldest scn, oldest_time,retention target, ukuran flashback database sekarang (dalam bytes), perhitungan ukuran flashback data yang dibutuhkan untuk retention target pada saat ini

SQL> select oldest_flashback_scn, oldest_flashback_time, retention_target, bytes/(1024*1024) as “mb”, estimated_flashback_size from  V$FLASHBACK_DATABASE_LOG

v$flashback_database_stat : untuk me-monitor i/o overhead dari prosess pencatatan flashback data

regards

  abip

Follow

Get every new post delivered to your Inbox.