db_ultra_safe parametresi hakkında

Oracle 11g ile birlikte yeni tanışmış olduğumuz bir parametrenin kullanımından bahsetmek istiyorum. 11g öncesinde, database’ de data corruption oluşması riskini göze almak istemiyorsak ve bir miktar performans kayıplarını da göze alabiliyorsak kullanacağımız iki tane parametremiz vardı . Bunlar db_block_checking ve db_block_checksum parametreleri idi. 11g ile birlikte data corruptionlarını önlemek için tek bir parametre değişikliği yeterli hale getirildi. Dolayısıyla 11g ile birlikte artık sadece db_ultra_safe parametresi ile oynayarak data corruption’ ların önüne geçmek mümkün ancak burada ki en önemli nokta, db_ultra_safe parametresini kullanmaya başladığınız da oracle arka tarafda 3 tane parametreyi kullanıyor. Dolayısıyla siz database’ ninizin doğası gereği bu 3 parametreyi aynı anda kullanmak istemeyebilirsiniz. Bu tarz durumlarda db_ultra_safe yerine 10g’ de olduğu gibi tek tek bu parametreleri set ederek kullanmaya devam edebilirsiniz.

db_ultra_safe parametresinin kullandığı parametreler neler şimdi onlara bakalım ;

db_block_checking; Oracle tarafından database blockları üzerinde yapılan bir checking yöntemidir. Off, Low,medium, full gibi değerler alabilir. Block checking yöntemi memory ve data üzerinde oluşabilecek corruptionları önlemekde kullanılabilir. Kullanılma yöntemine göre database’ de %1-10 arasında bir ek yük getirebilmektedir. Bu handikap’ından dolayı çoğu dba’ in kullanmadığı yada sadece belirli dönemlerde kullanmayı tercih ettiği bir parametre olduğunu söyleyebiliriz. Bu parametrenin default değeri OFF ‘ dur .

db_block_checksum; Datanın dbwr aracılığıyla dbf’ lere yazıldığı aşamada ek bir kontrol yapmasını sağlayarak fizikzel corruption oluşmasını engeller. Db_block_checking parametresi ile logical corruptionların (yani redo ve data blockları üzerindeki corruptionları) , db_block_checksum ilede physical corruptionların önüne geçilmek amaçlanmaktadır. Bu parametrenin kullanılması ile ilgili olarak da yaklaşık olarak i/o da %1-2 gibi ek bir yük oluşmaktadır.

db_lost_write_protect ; Yazma işlemlerinde oluşabilecek kayıpları bulmamızı sağlayan önemli bir parametredir. Defaultu NONE olarak gelmektedir. Typical ve Full olmak üzere 2 farklı şekilde set edilebilir.

db_ultra_safe parametresi işte bu 3 parametreyi belirli koşullar altında tek parametre altından kontrol eden bir parametre, nasıl değiştireceğimize bakalım.

Öncelikle parametrenin default değeri OFF yani kapalı bir şekilde geliyor. 2 farklı şekilde kullanabiliriz;

DATA_ONLY olarak set edebiliriz. Bu şekilde set edildiğinde diğer parametreler ;

db_block_checking = MEDIUM
db_block_checksum = FULL
db_lost_write_protect = TYPICAL

şekilde oracle tarafından otomatik olarak set edilecektir. Görelim;

önce parametrelerimizin şu anki değerlerine bakalım ;

SQL>select name, value
2 from v$parameter
3 where name in(‘db_ultra_safe’,’db_block_checking’,’db_block_checksum’,’db_lost_write_protect’);

NAME VALUE
—————————— ——————–
db_block_checksum TYPICAL
db_ultra_safe OFF
db_lost_write_protect NONE
db_block_checking FALSE

data_only olacak şekilde parametremizi set edelim.db_ultra_safe parametresi statik bir parametre olduğundan sonra değişikliği etkinleştirmek için mutlaka database’ imizi restart etmemiz gerekecektir ;

SQL>alter system set db_ultra_safe=data_only scope=spfile;
System altered.

SQL>shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL>startup
ORACLE instance started.
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 314573264 bytes
Database Buffers 213909504 bytes
Redo Buffers 5804032 bytes
Database mounted.
Database opened.

SQL>select name, value
2 from v$parameter
3 where name in(‘db_ultra_safe’,’db_block_checking’,’db_block_checksum’,’db_lost_write_protect’);

NAME VALUE
—————————— ——————–
db_block_checksum FULL
db_ultra_safe DATA_ONLY
db_lost_write_protect TYPICAL
db_block_checking MEDIUM

Sadece db_ultra_safe parametresini set ederek diğer 3 parametrenin de değiştiğini görmüş olduk. Diğer yöntemimiz;

DATA _AND_INDEX olarak set edebiliriz. Bu şekilde set edildiğinde diğer parametreler ;

db_block_checking = FULL
db_block_checksum = FULL
db_lost_write_protect = TYPICAL

şekilde oracle tarafından otomatik olarak set edilecektir. Görelim;

SQL>alter system set db_ultra_safe=data_and_index scope=spfile;
System altered.

SQL>shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL>startup
ORACLE instance started.
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 314573264 bytes
Database Buffers 213909504 bytes
Redo Buffers 5804032 bytes
Database mounted.
Database opened.

SQL>select name, value
2 from v$parameter
3 where name in(‘db_ultra_safe’,’db_block_checking’,’db_block_checksum’,’db_lost_write_protect’);

NAME VALUE
—————————— ——————–
db_block_checksum FULL
db_ultra_safe DATA_AND_INDEX
db_lost_write_protect TYPICAL
db_block_checking FULL

şimdi parametremizi bu haliyle hiç değiştirmeden eski haline aldığızda ne oluyor ona bakalım ;

SQL>alter system set db_ultra_safe=off scope=spfile;
System altered.

SQL>shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL>startup
ORACLE instance started.
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 314573264 bytes
Database Buffers 213909504 bytes
Redo Buffers 5804032 bytes
Database mounted.
Database opened.

SQL>select name, value
2 from v$parameter
3 where name in(‘db_ultra_safe’,’db_block_checking’,’db_block_checksum’,’db_lost_write_protect’);

NAME VALUE
—————————— ——————–
db_block_checksum TYPICAL
db_ultra_safe OFF
db_lost_write_protect NONE
db_block_checking FALSE

kendisi eski haline yani default değerlerine otomatik olarak almış oldu.

Be Sociable, Share!

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


2 − bir =