Menu

17 Eylül 2010 Cuma

DataFile Management

Datafile
Veritabanında, içinde veri bulunan dosyalardır. Tablo, index view gibi objeler fiziksel olarak datafile’lar içerisinde tutulur. Bir veya daha fazla datafile bir araya gelerek mantıksal tablespace kavramını oluştutur. Datafile’lar belirli bir büyüklükte yaratılırlar, dolan datafile’ların otomatik olarak büyümesi opsiyonel olarak tercih edilebilir. (Auto Extend).

Oracle`a datafile`a 2 adet numara atar..
  • Absolute file number
  • Relative file number
 Absolute : Tektir yani bir datafile a verilen numara başka bir datafile a verilemez. SQL sytaxlarında kullanılabilir, uzun uzun datafile in ismini vermek yerine sadece numarasını vererek işlem yapabiliriz. v$datafile ve v$tempfile viewlarında " file# " kolonu, dba_data_files ve dba_temp_files viewlarından file_id kolonundan bu bilgilere erişebiliriz.

Relative : Bu da tektir. Ufak ve orta boyutlu database lerde absolute ve relative aynıdır, büyük databaselerde farklılaşmaktadır.

Oracle'ı kurmadan önce kaç adet TableSpace'e kaç adet datafile'a ihtiyaç duyulacağı hesaplanıp ona göre işletim sistemi ve konfigurasyonu yapılmalıdır çünkü işletim sistem tarafındaki kısıtlamalar database inizdeki ayarları da değiştirmenizi gerektirebilir.

Başlangıç dosyasındaki (spfile) " db_files " parametresi oluşturulabilecek maximum datafile sayısını bildirir. default u 200 dür maximum işletim sisteminin desteklediği kadardır. Bu değer değiştirildiğinde kapatılıp açılması lazım.

             SQL > SELECT value FROM v$parameter WHERE name='db_files'

            SQL > show parameter db_files; ile görebilirsiniz.

DataFile eklemek 

           SQL > ALTER TABLESPACE ts_name ADD DATAFILE 'd:\dbfiles\df1.dbf' 
                              AUTOEXTEND ON 
                              NEXT 1M
                              MAXSIZE 100M

ts_name TableSpace`ine, 1M` boyutlarda, otomatik extend olabilen, maximun boyutu 100M`lik bir datafile ekliyoruz..


Otomatik artirmayi kapatalim..
               SQL > ALTER DATABASE DATAFILE 'd:\dbfiles\df1.dbf' 
                           AUTOEXTEND OFF

Simdi boyutunu degistirelim.. 
               
              SQL > ALTER DATABASE DATAFILE 'd:\dbfiles\df1.dbf' 
                           RESIZE 150M;

Disk boyutuna ve işletim sistemine bağlı olarak istenildiği kadar büyütülebilir, aynı zamanda küçültüledebilir de ancak kullanılan alandan daha küçük boyut verilemez verilirse de hata verir.

Datafile ların erişilebilirliğini değiştirme
Datafile ları ve tempfile ları ayrı ayrı offline/online alınabilir, offline oldukları sürece erişilemez olacaklardır.
  • Offline yedek alınmak istendiğinde
  • İsim/lokasyon değişikliği yapılmak istendiğinde, önce offline a almak gerekir.
  • Oracle yazma problemi ile karşılaştığında datafile ı offline a alır sorun giderildiğinde dba tarafından online a alınması gerekir.
  • Datafile bozulduğunda ya da bir şekilde sistemden kaybolduğunda instance ı başlatabilmek için bu datafile e offline almak gerekir.
Read-Only modda ki TableSpace 'in datafile ını offline ya da online a alabiliriz , online aldığımızda TableSpace'in read-only modu devam eder datafile a yazamayız yazabilmemiz için tekrar read-write moda almamız lazım.
Asagida TableSpace`in tum datafile`larini offline yada online yapabiliriz.

                       SQL > ALTER TABLESPACE ts_name OFFLINE/ONLINE

ArchiveLog modda online/offline
 Asagidaki şekilde TableSpace' içindeki tüm datafile ları offline/online a almadan istenilen datafilelarda değişiklik yapılmak isteniyorsa archivelog modda olmak lazım aksi halde datafile kaybedilir deneyip görelim.

                       SQL > ALTER DATABASE DATAFILE 'd:\dbfiles\df1.dbf';

                       SQL > ALTER DATABASE DATAFILE 'd:\dbfiles\df2.dbf';

NoArchiveLog modda online/offline 
Asagidaki adimlari tek tek inceleyelim. 

                    Database mount moda alınır
                   shutdown immediate;
                   startup mount
                   alter database noarchivelog; komutu verilir.
                   alter database open ; db açılır
                  archive log list ; ile archive log un disab olduğu görülür.
                 shutdown immediate;  ile kapatılır
                startup ile açılıp tekrar archive log modda olup olmadığı test edilip
Database in noarchive log listte kaldığı görülür.

Hiç yorum yok:

Yorum Gönder