A Oracle DBA's BLOG

Welcome to my ORACLE DBA blog. You will be Amazing!!!

Tuesday, January 10, 2012

Oracle Parameters Spfile and Pfile




Oracle’ın çalışabilmek  için gerek duyduğu temel bazı öğeleri, parametre dosyalarında tutarız. 

Oracle ilk başladığında parametre dosyalarını okur  ve  sisteme dair birçok  ayara buradan ulaşır. Aynı  anda çalışabilecek  işlem  adedi  (*.processes);  arşiv  dosyalarının  lokasyonunun  neresi  olacağı (*.log_archive_dest);  kaç  dakikada  bir  arşive  çıkılacağı  (*.archive_lag_target);  control file’ların  lokasyonları  (*.control_files);  backgroud  dump,  user  dump  gibi  klasörlerin  nerelerde konumlandırıldığı  (*.background_dump_dest, *.user_dump_dest)  vb.  bilgiler  parametre dosyaları içinde saklanır. Bu değişkenlere parametre denmektedir ve hep birlikte parametre dosyasını oluştururlar. 

2. Oracle PFILE (Parameter File) 

Kullanıcıların üzerinde değişiklik yapabildiği, metin tabanlı dosyalardır.

Bu parametreler, veritabanının hangi ayarlarla başlatılacağını belirler.

Örneğin, control_files parametresi, kontrol dosyalarının dizinlerini tutarken;  audit_file_dest parametresi audit dosyalarının dizinlerini tutmaktadır. open_cursors parametresi aynı anda açık olabilecek maksimum cursor sayısını tutarken processes parametresi aynı anda çalışabilecek işlem sayısını tutmaktadır.

Oracle  parametrelerini  tutan  PFILE  bir  metin  dosyasıdır. İçerisine  girip,  dilediğiniz  değişiklikleri yapabilirsiniz.  PFILE  init<SID>.ora  ya  da  init.ora şeklinde  geçer  ve  $ORACLE_HOME/dbs/  klasörü altında bulunur.  (Windows  kullanıyorsanız, ORACLE_HOME\database\ altına bakmanız  gerekebilir.yada C:\app\Administrator\admin\orcl\pfile ) 

3. Oracle SPFILE (Server Parameter File) 

Oracle 9i ile gelen parametre dosyası tipidir. PFILE, text-based yapıdayken ve üzerinde herhangi bir metin editörü ile değişiklik yapabilirken; SPFILE, binary yapıya sahiptir ve değişiklikler sadece ALTER SYSTEM SET komutlarıyla gerçekleştirilebilir.

Oracle'ın  otomatik  performans  iyileştirme  yöntemleri  için  SPFILE  kullanımı  tavsiye  edilmektedir.Ayrıca  RMAN  sayesinde,  SPFILE’larınızın  otomatik  olarak  yedeklenmesi  sağlanabilir;  sizin kopyalamanız  gerekmez. Böylece  parametrelerle  ilgili  değişiklik  yaptığınız  her  seferde  tekrar  tekrar yedek  almanız  gerekmez.  Her  yedek  alınmasında  SPFILE’in  yedeği  de  alınacaktır. 

***Veritabanını kapatıp açmaya gerek duymadan kalıcı parametrelerin değerlerini değiştirebiliriz. Böylece veritabanı gerçek zamanlı olarak yeni parametrelere göre davranabilir. Ayrıca veritabanı kapatılıp açıldıktan sonra da aynı şekilde korunmaya devam eder. PFILE dosyalarındaki değişiklikler, sistem yeninden başlatılınca siliniyordu.

***SPFILE sayesinde automatic tuning rahat ve hızlı bir şekilde içsel olarak yapılabiliyor. SPFILE kullanmıyorsanız automatic tuning yapılamaz.

SPFILE’ların  tutulduğu  klasör  yine  $ORACLE_HOME/dbs/  altıdır.  Dosya 

isimlendirmesinde de spfile<SID>.ora veya spfile.ora kullanılır. 

 

The Parameter File at Startup Time

Oracle Spfile parameterini Pfile ye gore tercih eder. Oracle Database startup oldugu zaman Oracle Parameter directory’nin contents control eder. ($ORACLE_HOME/database Windows uzerinde yada  Linux directory ismi $ORACLE_HOME/dbs),Ve asagidaki file’leri sirasi ile arastirir:
* spfileSID.ora
* spfile.ora
* initSID.ora
* init.ora

Eger directory hicbirine ayit degilse ozaman startup fail olacak.

8. PFILE/SPFILE Kullanımına Dair Detaylar 

Kullandığınız veritabanının hangi parametre dosyasını kullandığını merak ediyorsanız aşağıdaki plsql komutunu çalıştırabilirsiniz.
SELECT DECODE(value, NULL, 'PFILE', 'SPFILE') "Init File Type"
FROM sys.v_$parameter WHERE name = 'spfile';
Eğer value kolonundaki tüm değerler null ise PFILE değilse SPFILE kullanılıyordur.

 Sisteminiz SPFILE ile çalışıyorsa, SPFILE’in lokasyonunu da saptayabilirsiniz. Bunun için  yine v$parameter görüntüsünden yararlanırız:  


SELECT VALUE FROM v$parameter WHERE NAME='spfile';
Parametrelerin değiştirilmesi
SQL> ALTER SYSTEM SET PARAMETER_NAME=VALUE;     
Eğer parametre dosyası olarak SPFILE kullanıyorsanız, yukarıda girdiğiniz değer hep geçerli olacaktır. Veritabanı  tekrar  başladığında  yine  ayar  girmeniz  gerekmez;  çünkü  spfile dosyasında  girmiş olduğunuz değer  tutulur. Bu durumu, PFILE  ile  sağlamak mümkün değildir.  Yaptığınız bir değişikliği PFILE’a  girmeyi  unutursanız,  problem  yaratabilir;  hâlbuki  SPFILE  için  böyle  bir  problem  olmadığını görüyoruz.
4. PFILE (Parameter File) ve SPFILE (Server Parameter File) Yönetimi 
Aktif oturuma ait parametre değerlerini aşağıdaki gibi alabilirsiniz; 
SQL> SHOW PARAMETER [PARAMETRE_ADI];
Örneğin  aynı  anda  çalışabilecek  sga_max_size  sayısını  görmek  istersek  show  parameter  komutundan yararlanırız:  
SQL> SHOW PARAMETER SGA_MAX_SIZE;
İkinci bir yöntem ise, v$parameter sistem bilgileri görüntüsünden (view) yararlanmaktır.
 v$parameter içerisinde bütün parametre simlerini, taşıdıkları değerle birlikte gösterir. Parametre görüntüsüne ait sütunları aşağıdaki gibi görebilirsiniz: 
SQL> DESC V$PARAMETER;
Diğer bir yöntem ise, spfile dosyasının içeriğini metin dosyası formatında bir pfile’a dönüştürmektir. 
SQL> CREATE SPFILE ='spfile adresiniz/spfile.ora'  FROM PFILE='pfile adresiniz/init.ora';
Oluşturulacak olan pfile dosyasını $ORACLE_HOME/dbs altında  init<SID>.ora  şeklinde bulabilirsiniz. Bu  dosyayı  farklı  lokasyonlarda  oluşturmakta  mümkündür.  Örneğin,  /tmp/  klasörü  altında VEYSI.text adıyla da oluşturabilirsiniz: 
SQL> CREATE PFILE='/TMP/VEYSI.TEXT' FROM SPFILE;
5. SPFILE Değerlerini Değiştirmek
SPFILE binary formatta bir dosya türüdür ve bir metin editöründe açıp değiştirilmesi olanaklı Değildir .Bu yuzden icini acip degisiklip yapma imkanimiz yoktur.
Oracle veritabanı birçok parametrenin online olarak değişmesine olanak vermektedir. Bunun 
anlamı, parametre  değişikliklerinin  geçerli  olması  için  işletim  sisteminin  yeniden  başlatılmasına  gerek olmamasıdır.  Bu oldukça  yararlı  ve  gerekli bir özellik! 

ALTER SYSTEM SET dedikten sonra parametre adı belirtip, yeni değer veriyoruz. SCOPE  kısmında üç değer verilebilir; 
‐  MEMORY: Ayarlanan değer  sadece  geçerli olan Oracle  'instance' için ayarlanacaktır. Bunun anlamı,  veritabanını  yeniden  başlattığınızda  girmiş  olduğunuz  değerin  kaybolayacağıdır.Ancak Oracle kapanana kadar girilen değer kalır.  ‐  SPFILE: Girdiğiniz değer veritabanının bir sonraki başlamasında geçerli olacaktır. 
‐  BOTH:  Verilen  değer,  hem  hemen  uygulamaya  alınacak,  hem  de Oracle’in  bundan  sonraki açılışlarında  da  geçerliliğini  koruyacaktır.  Bir  nevi  (MEMORY+SPFILE) şeklinde  üşünebiliriz. 
Eğer scope değerini girmezseniz, değeri BOTH olarak kabul edilecektir. 
sql> SHOW PARAMETER SGA;
sql> ALTER SYSTEM SET SGA_MAX_SIZE=800M;
 sql> ALTER SYSTEM SET SGA_MAX_SIZE=800M SCOPE=MEMORY;
 sql> ALTER SYSTEM SET SGA_MAX_SIZE=800M SCOPE=SPFILE;
sql> ALTER SYSTEM SET SGA_TARGET=500M;

SQL > ALTER SYSTEM SET open_cursors=341 SCOPE=SPFILE SID=’*’ ;
SID parametresi ise RAC sistemlerde kullanılır. Değişikliklerden hangi instance ların etkileneceğini belirler. SID=’*’ ile bu güncellemenin tüm instance lar için geçerli olacağını ANLARIZ…

 Parameter File Search Order in Oracle RAC

Oracle veritabaninda RAC SySTEMINDE BULUNAN PARAMETER FILER!
1.      $ORACLE_HOME/dbs/spfilesid.ora
2.      $ORACLE_HOME/dbs/spfile.ora
3.      $ORACLE_HOME/dbs/initsid.ora
6. SPFILE’i, PFILE’dan Yararlanarak Yeniden Oluşturmak 
Veritabanında bir karar alındı ve bir takım değişiklikler yapmanız gerekiyor diye düşünelim.  Örneğin arşive çıkılacak dosyaları /data2/archive yerine artık, /data5/archive  altına kopyalamamız gereksin. 
Bu gibi bir durumda  spfile’i bir pfile’a dönüştürmek; ardından pfile içinde değişiklik yapmak ve son olarak pfile’dan tekrar spfile yaratmak gerekir.  Adım adım aşağıdaki işlemleri uygulayalım. 
1.       SPFILE dosyasından, metin formatında bir PFILE oluşturuyoruz: 
SQL> CREATE PFILE='/TMP/VEYSI_DENEME.TEXT' FROM SPFILE; 
2.       PFILE dosyasını açıp, log_archive_dest parametresinde ilgili değişiklikleri yapıyoruz.  
SQL> ! vi /tmp/VEYSI_deneme.text 
... 
3.       Çalışmakta olan bir veritabanının spfile'ini ezemeyeceğimiz için veritabanını kapatıyoruz.  
SQL> SHUTDOWN IMMEDIATE;
4.       Değişiklik yaptığımız pfile'i  kullanarak yeni bir spfile oluşturuyoruz. 
SQL> CREATE SPFILE FROM PFILE='/TMP/VEYSI_DENEME.TEXT';
5.  Veritabanını açıyoruz.: 
SQL> ALTER DATABASE OPEN;
SPFILE’i  direkt  değiştiremediğimiz  için,  onu  önce  bir  PFILE’a  dönüştürüp,  ilgili  değişikliği  yaptık  ve sonrasında yeni bir SPFILE yarattık. 
NOTE:Oracle  PFILE’in,  $ORACLE_HOME/dbs  altında  init.ora  olarak  kaydedilmesi  de  mümkündür.  Gerek PFILE, gerekse SPFILE farklı lokasyonlardan, farklı isimlerle de kullanılabilir
SPFILE’IN YEDEGINI ALMAK
SQL> CREATE SPFILE='/DATA2/SPFILE_YEDEK.ORA'  FROM PFILE='/TMP/VEYSI_DENEME.TEXT';

9. Veritabanını PFILE ile Açmak 

SQL> STARTUP PFILE='/TMP/VEYSI_DENEME.TEXT';


STARTUP PFILE=$ORACLE_HOME/dbs/initsid.ora

Oracle veritabanındaki V$Parameter viewını ve parametrelerin hangilerinin Session hangilerinin System bazında değiştirlebileceğini ve hangilerini değiştirmek için database’i restart etmemiz gerektiğini Gorelim. Oracle veritabanında parametrelerin nasıl değiştirildiğini (Alter Session set Param_name=value; vb)  artik biliyoruz.

Bildiğiniz üzere V$Parameter view ını database deki parametrelerin değerlerini ve türlerini görmek için kullanıyoruz. Bu view daki alanlar bize o parametrenin hangi bazda değiştirilebileceğini gösteriyor.

IsSess_Modifiable alanı bu parametrenin bir session bazında değiştirilip değiştirilemeyeceğini gösterir. TRUE veya FALSE değerlerine göre değişip değişmeyeceğini anlıyoruz.

IsInstance_Modifiable alanı bu parametrenin doğrudan databasede değiştirilip değiştirilemeyeceğini gösterir. Doğrudan değiştirmekten kasıt, scope=SPFILE demeden, yani bir parametrenin değerini system bazında değiştirebiliyor ve bu değişiklik anında geçerli oluyor ise bu alanının değerini TRUE olarak görüyorsunuz. FALSE değerine sahip parametreler için database restart edilmelidir.

IsSys_Modifiable alanı 3 değer alır. FALSE, IMMEDIATE, DEFERRED.

False o parametrenin SPFILE da değiştirilebileceğini,

IMMEDIATE o parametrenin değeri değiştirildiği andan itibaren geçerli olacağını,

DEFERRED ise o parametrenin değerinin database kapatılmadan değiştirilebileceğini ama değişiklik yapıldığı andan sonraki sessionlar için geçerli olacağını gösterir.

IsDeprecated alanı o parametrenin artık kullanılıp kullanılmadığını gösterir.

 


Friday, January 6, 2012

Managing Tablespaces


Tablespace Yönetimi
Merhaba Arkadaslar bu article'da sizlerle Tablespace Managing hakkinda bilgi paylasacam.
Tablespace , fiziksel olarak tek bir datafile yada datafile’lardan  oluşan mantıksal yapılardır.
Oracle database’ deki veri yapılarının temeli datafile (veri dosylarına) dayanır. Datafile’ ler ise mantıksal anlamda  bir yada birden fazla segment’den, segment’ler de extent’lerden oluşur. Extent’ lerde database bloklarından oluşur
Select tablespace_name,file_id,extent_id,block_id,blocks,bytes from DBA_EXTENTS where owner =  'HR'and segment_name= 'EMPLOYEES';



Bir oracle server database’ inde standart tablespace’ ler ve amaçları yazılmıştır.
System Tablespace: Sys kullanıcısına ait bilgiler bulunan  tablespace’dir. Oracle Server için olmazsa olmaz en önemli tablespace’lerdir. İçerisinde Data dictionary tabloları vardır. Package, store procedure , fonksiyon  ve trigger gibi PLSQL birim yapıları bulunur. System tablespace’ silemeyiz ve ismini değiştiremeyiz.

Sysaux Tablespace: Automatic Workload Repository  raporlarının saklandığı, System tablespace’in yardımcı tablepace’dir.
Genel olarak içierisinde Oracle strams, Logical standby işlemleri, Logminer, Schedular yapısı bu tablespace’ de yapılır. Önceki sürümlerde bu işlerin tümü system tablespace içerisinde yürütülmekteydi.
Sysaux tablespace silemeyiz ve ismini değiştiremeyiz.
Users Tablespace: User’ lara ait data dosyalarının tutulduğu tablespace’ lerdir. İçerisinde kullanıcılara ait şema nesneleri bilgileri bulunur.

Temporary tablespace, temp (geçici) dosyalarının yer aldığı tablespace’dir. Genel olarak büyük oranda gruplama(group by) ve sorting(order by, joining)  işlemleri  kullanıcının PGA alanı  yetersiz kaldığında bu işlemlerin yapılabilmesi için extra bir boş alana ihtiyaç vardır. Bu alanlar için System tablespace yerine temp tablespace içerisindeki tempfile kullanılmaktadır.  Eğer system  tablespace , local yönetimli oluşturulmuşsa default bir temporary tablespace oluşturmak zorundayız. Kullanıcıların default olarak bu temporary tablespace kullanması için default oalrak tanımlanmalıdır.

Undo tablespace , Undo bilgisini tutan ve yönetimini sağlayan  tablespace’ dir. Kullanıcının yaptığı DML işlemleri önce Rollback segmentinde tutulur. Kullanıcı yaptığı işlemleri onaylayabilir yada vazgeçip transaction’ ı geri almak isteyebilir. Şayet Commit işlemi yapmamışsa transaction geri alınacaktır. Rollback komutuyla transaction geri alınabilir. Commit işlemi ise transaction’ on onaylanma işlemidir. Rollback segmenti Undo Tablespace içerisinde yer alır. Veri tabanı için  önemli bir tablespace’ dir.
Bir veritabanında birden fazla undo tablespace yer alır. Birden fazla olmamaktadır. İsteğe göre tek bir tane kalmak şartıyla yeniden oluşturulup eskinin silinmesi yada offline edilmesi şartıyla değiştirilebilir. Read Only durumuna getirilemezler.

Example tablespace: Opsiyonel bir tablespace ‘dir. Oracle database kurulumunda isteğe göre örnek sh ve hr şema bilgilerini içinde barındıran tablespace’ dir. Trainer amaçlıdır.


Aşağıdaki sorguda Veritabanında tüm tablespace’lerin  boş alan miktarlarını öğrenebiliriz.

SELECT tablespace_name, status,contents
      ,extent_management extents
      ,segment_space_management free_space
FROM dba_tablespaces;

SQL> select sum(bytes), tablespace_name from dba_free_space group by tablespace_name;

SUM(BYTES) TABLESPACE_NAME
---------- ------------------------------
  73465856 EXAMPLE
  14745600 SYSAUX
  10354688 SYSTEM
    983040 TEMP
 175702016 UNDOTBS1
  53346304 USERS

6 rows selected.





MANAGEMENT TABLESPACE


Tablespace.dbf gruplarindan olusur.
1 tane dbf --> 1 tane tablespace
 4 tane dbf  -->1 tane tablespace
Tablespace’in icinde Datafile’ler.
Datafile’lerin icinde Segment’ler.
Segment’lerin icinde Extent’ler
Extent’lerin icinde Datablock’lar BULUNUR..


Tablespace 2 yere bolunur.
  1. Bigfile tablespace
  2. Smallfile tablespace

1.Bigfile Tablespace :
- Büyük veritabanları için tavsiye edilir
-1  tane datafile bulunur.(Cok buyuk database icin tasarlanmistir.)
- Boyutu 8 KB datablock larla 32 TB
- 2 üzeri 32 datablock bulunur.
Create bigfile tablespace tablespace_adi datafile ‘yeri’ size bellek_degeri;

2.Small Tablespace :
 - Çoklu datafile vardır.
 - Boyutu 8 KB datablocklarla 32 GB
 - 2 üseri 22 datablock bulunur.

Create (small) tablespace  test_small datafile ‘yolu’ size 100M;
NOTE: Datablok’larin buyuklugu oracle init.ora Parameter dosyasindaki DB_BLOCK_SIZE degerine baglidir.Datablocklarin degeri ya 8kb yada 8 kb katlari olmalidir.

Oracle Managed File:
Extent Management :
  1. Local
  2. Dictionary

1.Dictionary : Segment alan bilgileri system tablespace inde tutulur.Herhangi bir segmentin alan bilgilerine bakmak için sürekli system tablespace’ine başvurmak gerekiyor.Cok eski ve cok az kullaniliyor.Dictionary performans acisinda cok agir birsekilde calismaktadir.
2.Local : Oracle tavsiyesinde local kullanirlar.Local oldugu zaman oracle otomatik olarak hicbir yere sormadan (kendisi bilir) nekadar bellek var yada bellek yokmu diye arastirmasina gerekyok.

a.Uniform:Eger uniform secmissek extence bellek vermemiz gerekir.Burda databloklar 8kb’dan olusur 100mb extent’ler olusturur. 100mb Doldugunda 2. Yeni exten olusur.2.doldugunda 3. Olusur. 3.doldugunda 4. Olusur. ……

Create tablespace test_local datafile ‘yolu’ size 100M
Extent management local autoallocate; (--uniform 1M;)

Autoallocate : segment alanını otomatik kontrol eder.Oracle tavsiyesinde kullanilmalidir.Burada 16 tane extent olusana kadar her bir extent 64kb ile olur sonra 17-63 e kadar 1m ile olusur.63-120 den sonar 8m ile olusur.



Segment Space Management
Datablockların doluluk oranın bilgileri verir.
1.Manual eger segment space management MANUAL ise SYSTEM’de yer alacak
 2.AUTOMATIC eger segment space management AUTOMATIC ise KENDISINDE yer alacak.Oracle tavsiyesi ile kullanilir.

Yeni bir tablespace oluşturma:

Genellikle tüm Persistent(kalıcı) tablespace’ ler local olarak yönetilmektedir.
Create tablespace Tablespace_adi datafile ‘yolu’ size bellek_degeri M
Extent management local autoallocate   
Segment space management  auto; ---manuel
EGER BUNU       YAPMAKSAK TABLESPACE DEFAULT olarak db_create_file_dest ALACAKTIR
Alter system set db_create_file_dest=’D:\oracle\oradata\oracle\omf’ SCOPE=BOTH;
Bunu yaptığında artık tablespace oluşturduğun zaman tablespace datafile adını yazmıyorsun,veritabanı otomatik olarak isim atıyor.


NOT….: Segment space management auto olabilmesi için extent management’in local olması gerekiyor.
Segment space management  TEMPORARY ve SYSTEM TABLESPACE lerinde çalışmaz.



CREATE TABLESPACE test DATAFILE '/u01/app/oracle/oradata/veysi01.dbf' SIZE 200M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
SEGMENT SPACE MANAGEMENT AUTO; 

Table space oluştururken En az bir datafile girmemiz gerekiyor. Zaten tablespace mantıksal yapı olduğunu başta belirtmiştik .
Şayet Tablespace içerisindeki extentlerin farklı değişken boyutta olunması isteniyorsa, Extent yönetimi AUTOALLOCATE belirtmemiz gerekir. Default Extent boyutu 64KB’dır. Eğer tablespace içerisindeki extent’ lerin aynı spesifik boyutta istiyorsak  extent yönetimini UNIFORM olarak bildirmemiz gerekiyor.
Örnek:
Extent boyutu default 128KB olacak şekilde 200 mb boyutunda “veysi_tab” isminde bir tablespace oluşturduk. Size parametresini belirtmezsek o zaman default uniform size1M olacaktır.
CREATE TABLESPACE veysi_tab DATAFILE '/u01/app/oracle/oradata/veysi02.dbf' SIZE 200M
EXTENT MANAGEMENT LOCAL  UNIFORM SIZE 128KB;
SEGMENT SPACE MANAGEMENT AUTO;

Not: Extent yönetimi tamamen kullanacağımız veritabanı yönetim sistemine göre değişiklik gösterecektir. Datawarehouse sistemlerde extent ve db_block_size büyük seçilebilir. DML aktivasyonu çok içeren sistemlerde ise performans açısından Autoallocate seçilmesi daha uygundur.  

Yeni oluşturulan tüm permanent tablespace’ler default olarak segment yönetimi otomatiktir. Automatic segment Management ise segment içerisindeki free alanı otomatik koordinasyonun sağlar. Automatic Segment Management manual segment yönetimine göre oldukça verimlidir.Manuel Segment kendi içinde freelist algoritması kullanır.
ALTER TABLESPACE komutu ile de mevcut tablespace üzerinde değiştirmeler, eklemeler, silme gibi  durum değiştirme işlemlerini yaparız.

Tablespace ‘ büyümesi:
ALTER TABLESPACE test
    ADD DATAFILE '/u01/app/oracle/oradata/veysi03.dbf' SIZE 100M
      AUTOEXTEND ON
      NEXT 512K
      MAXSIZE 250M; 
Yukarıdaki mevcut test tablespace için  ihtiyaç duyulduğunda datafile için  512 KB’ ar büyüyerek, maksimum 250 MB’a kadar otomatik büyüyecek şekilde oluşturulmuştur. Segment yönetimi otomatik ve autoallocate extent yönetimine sahiptir.

AUTOEXTENT ON Avantajı, datafile maximum alan sınırına eriştiğinde herhangi bir müdahaleye gerek kalmaz. Database ilgili datafile ‘i otomatik alan  belirtilen artışta kazandırır.

ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/veysi03.dbf'  AUTOEXTEND OFF; 
İle veysi03.dbf datafile’ ın otomatik büyümesi disable edilmiştir.

  ALTER DATABASE DATAFILE '/u02/oracle/oradata/veysi03.dbf'  AUTOEXTEND ON NEXT 512K MAXSIZE 250M; 
İle veysi03.dbf datafile’ ın otomatik büyümesi enable edilmiş ve büyümeye izin verilmiştir.

Tablespace ve datafile ilişkisi ve datafile space ve blok sasyısını görmek için aşağıdaki sql cümlesini çalıştırıyoruz.
SQL> select tablespace_name,file_name,bytes/1024/1024 space, blocks from dba_data_files;

SQL> select tablespace_name,file_name,bytes/1024/1024 space, blocks from dba_temp_files;
SQL> select * from dba_tablespaces;
SQL> select * from dba_data_files;
SQL> select * from dba_temp_files;
SQL> select sum(bytes/1024/1024) from dba_data_files;