flashback technology & managing memory
DESCRIPTION
.TRANSCRIPT
20 Temmuz 2013
FLASHBACK TECHNOLOGY
UNDO Tablespace sizeına göre belirlenen retention süresi kadar eskisini
görmemize imkan tanır.
[SINAV SORUSU] : Yukarıdaki tablo çok önemli sınavlarda özellikle hangi özellikler
undodan faydalanmaz gibi sorular çıkabiliyor.
sql > show parameter undo;
**Defaultta undo retention 900 saniye.
**Örneğin undo 1 saatlik retention guarante verdik ve 32 gb datafile doldu.Bu durumda datafile eklemezsek
database hang olur.
**Advisora tanışarak 1 saatlik ne kadar alan tutacak bilgi alabiliriz.
**Advisor ile çalışırken doğru periyodu belirleyip analiz etmek lazım. Az iş olan bir periyodda analiz yaptırırsak
tavsiyeler yanlış olur.
FLASHBACK QUERY :
select salary from hr.employees as of timestamp sysdate-5/1440
**5 dakika eskiye götürür.
**Datayı görüntüler, değiştirmez.
FLASHBACK VERSION QUERY :
select version_xid,employee_id,salary from hr.employees versions between
timestamp sysdate -20/1440 and sysdate where department_id=20
**20 dakikalık periyodlardaki bütün değişiklikleri gösterir.
select version_xid,,version_starttime,version_endtime,employee_id,salary from
hr.employees versions between scn minvalue and maxvalue where
department_id=20
**görebildiğin en eski ve en yeni arasındaki değişiklikleri gösterir. Undo ne kadar eskiye kadar gidiyorsa
gösterir.
Recyclebin drop edilmiş table getirme
sql>show parameter recycle
**recycle bin parametresi on değilse drop edilmiş tabloyu geri getiremeyiz
sql> drop table hr.emp;
**hr şemasındaki emp drop edilir.
sql>show recyclebin;
**Sorgusu ile hiçbir şey göremeyiz. Çünkü drop edilen tablo hangi şemada drop edildiyse o şemanın altındaki
recyclebinde tutulur.
**Şema user ile tablespace bağlanıp ordan sorgulanır.
sql>conn hr/oracle_4U
sql>show recyclebin;
**Drop işlemi aslında tablonun adını değiştirir.
sql>flashback table hr.emp to before drop;
!![SINAV SORUSU] : Tabloyu geri aldığımızda indexler,constraintler herşeyi geri alır. Ancak index isimlerini
aynen geri getiremez.
sql>purge recyclebin;
sql>drop table hr.emp purge;
AS OF TIMESTAMP FLASHBACKLE undo büyüklüğü kadar eskiyi sorgulayabiliriz.
Ancak undo transactionı fazla olduğu ve üstüne yazma ihtimali olduğu için
büyük şirketlerde 1 gün öncesini bile görmek mümkün olmuyor.
Böyle durumlarda TOTAL RECALL ile undodaki veriyi sürekli tutan bir tablespace
oluşturuyoruz. Bu şekilde Undodaki değişen verinin bir kopyası oluşturduğumuz
tablespace yazılır.
**Bütün database için değilde özellikle kritik tabloları historical flashback tutabilmek için ayrı bir tablespace
flashback archive yaparız.
CREATE FLASHBACK ARCHIVE FDA1 TABLESPACE FDA_TBS1 QUOTA 10M
RETENTION 1 YEAR;
**10 megabyte dolana kadar yada 1 yıllık periyodda veriyi saklar.
ALTER TABLE HR.EMPLOYEES FLASHBACK ARCHIVE FDA1;
alter flashback archive fla1 set DEFAULT;
**Flashback Archieve Default olarak ayarlarız.
alter flashback archive fla1 modify retention 2 year;
**5 yıllık retentionı 2 yıla indirmeye çalışırız ama izin vermez.
**Böyle bir durumda 2 yıldan eski veriler purge edilir ve tekrar alter yapılır.
alter flashback archive fla1 purge before timestamp(systimestamp - interval '1'
day);
[SINAV SORUSU] : FLASHBACK ARCHIEVE AÇIK OLAN TABLO DROP EDİLEMEZ
dba_flashback_archieve
dba_flashback_archive_ts
dba_flashback_archive_tables
** sorguları ile database/tablespace/table flashback durumları görülebilir.
[SINAV SORUSU] : Flashback process o anki ssession ayarlarını kullanır. Eski tarih formatı farklı olabilir. Şuanki
ayarlara göre çevirilip getirilir.
!!! Eğer tablespacede büyüyecek yer yoksa çöpteki verilerin üzerine yazılabilir. Çöpte görünür ama geri
getirelemez.
[SINAV SORUSU] : where can_undrop='YES' kriteri ile işaretlenir.
----------------------------------------------------------------------------------------------------------------------------------------------
FLASHBACK DATABASE
Defaultta kapalı bir özellik. Açılınca flashback logları tutulur.(FRA'da tutulur.)
Üretilen logların tersini tutar, flashback yapınca ters loğları çalıştırır.
**Test ortamlarında çok kullanılır. Oluşturulmuş test database gün için kullanılıp bozulursa database geri
sarabilirsin.
**enterprise manager flashback recovery areada flashback logs görüntülenebilir.
ZORUNLUKLARI :
ARCHIVELOG AÇIK OLMA
FRA KULLANILMALI(DB_RECOVERY_FILE_DEST BOŞ İSE KULLANILMAZ)
**SINAV SORUSU : FRA BOŞ ve FLASHBACK DATABASE açılırsa ne olur.
!! Fiziksel değişikliklerde flashback database yapılamaz. Datafile silinirse veya
tablespace drop edilirse geri getirilemez. Datafile boyutu değişir veya control file
değişirse yine aynı şekilde flashback yapılamaz.
ADIMLAR :
sql>SHUTDOWN IMMEDIATE
STARTUP MOUNT
ALTER DATABASE ARCHIVELOG
ALTER SYSTEM SET DB_FLASHBACK_RETENTION 2880
**2880 : Dakika olarak 2 gün karşılık geliyor.
ALTER DATABASE OPEN
RMAN>FLASHBACK DATABASE TO TIME="TO_DATE('2009-05-27 16:00:00','YYYY-
MM-DD HH22:MI:SS')"
**Rman’den sorgulama (SQL’de sorgulamak hata verebilir.)
SQL > FLASHBACK DATABASE TO TIMESTAMP(SYSDATE-1/24)
SQL> FLASHBACK DATABASE TO RESTORE POINT B4_LOAD;
**SQL üzerinden sorgulama
CREATE RESTORE POINT BEFORE_UPGRADE GUARENTEE FLASHBACK DATABASE;
**RESTORE POINT OLUŞTURULUR.
Flashback loglarını görebileceğimiz tablolar:
v$FLASHBACK_DATABASE_LOG
V$FLASHBACK_DATABASE_STAT
MANAGING MEMORY :
AMM : Automatic memory management
Memory target verilir .SGA PGA otomatik ayarlanır.
**memory targetten farklı olarak bir de memory max target verilir.Bu Durumda meory target sıkışırsa
maksimum memory max targete kadar genişleyebilir.
[enterprise manager] -> Memory advisors bölümünden memory tavsiyeleri
alınabilir.
sql > show parameter sga
**Parametre değerlerinde size sıfır ise otomatik yönetiliyor demektir. max_size maksimum çıkabileceği değer
show parameter pga
**Parametre değerlerinde size sıfır ise otomatik yönetiliyor demektir.
show parameter cache
**Parametre değerlerinde size sıfır ise otomatik yönetiliyor demektir.
sql>show parameter memory
**memory target , max target değerleri verilmiştir. Defaultta %80-%20 dağıtıyor.
[enterprise manager] -> Memory advisors
**Memory grafiğinden ne kadar memory arttırımı yapılırsa dbtime olarak sorgularda ne kadar azalma olacak
görülebilir. Grafik yukarı doğru giderse memory 2 katına çıkarırsan dbtime şu kadar düşer gibi tavsiye verir.
select * from v#memory_advise
Automatic Mermory management disable ediyoruz. Manuel değer vereceğiz.
Automatic Shared memory management ayrıca disable edebiliyoruz.
**Shared pool , buffer cache ,large pool vb. tek tek ayarlayabiliriz.
**10g öncesi komple manuel yapılıyordu. Örneğin akşam backup alırken large pool memory arttırıp sabah
gelince tekrar eski hale çekiliyordu.
**Artık SGA’ya verilen memory’e Shared pool , buffer cache ,large pool vb. ihtiyacına göre otomatik artıp
azaltılır.
Buffer Cache Durumları
[SINAV SORUSU] :
Pinned(şuan update olan)
Dirty(update olmuş,commitlenmiş ancak database writer başka işlerle
uğraştığı için henüz diske yazılamamış)
**dirty görmemek lazım. dbwr_io_slaves parametresi arttırılır(defaultta sıfır-1tane databasewriter vardır.)
Clean(Daha önce kullanılmış , datafile tarafına gitmiş ve yazmış,ezilebilir.)
Free/unusued(hiç kullanılmamış memory alanları)
!! BUFFER CACHE Alt grupları :
db_recycle_cache_size(Az kullanılan ,anlık çalışma tabloları recycleda
yaratırız. İlk bunlar ezilir.)
db_keep_cache_size (ezilmesini istemediğimiz , diskten okuması yavaş olan
tablo/index vs. keep koyulur. Database kapanana kadar garanti veriyoruz
ezilmez.)
db_cache_size (defaultta kullanılan yer)
**KEEP VE RECYCLE DEFAULTTA KULLANILMIYOR.
örnek :
create index idx STORAGE(BUFFER_POOL KEEP);
ALTER TABLE customers storage(BUFFER_POOL RECYCLE)
**(Örneğin Çağrı merkezini bir kere arıyoruz bir daha 3 sene sonra arıyoruz. Bizi cachede tutmasına gerek yok)
**ÇOK DİKKATLİ OLARAK KULLANILMASI GEREKİR.PERFORMANS İÇİN YAPILAN AYARLARDIR.
ALTER TABLE customers storage(BUFFER_POOL KEEP)
ALTER TABLE customers storage(BUFFER_POOL DEFAULT)
!!!Shared pool altında result cache alanı vardır
**memoryde result tutan tek cache alanı. Oracle normalde data tutar.11 g ile geldi.Toplam müşteri alanlarını
hesaplatıp buraya koyarsak, bir daha hesaplanmadan gelir.