30 Nisan 2012 Pazartesi

Tablespace Yönetimi - V


Şu ana oluşturduğumuz ve üzerinde çalıştığımız tablespace smallfile datafile ‘lardan oluşan tablespace’ lerdi. Default olarak Create Tablespace cümlesi için smallfile bir datafile’larda oluşacağı bilinmelidir.
Bigfile Tablespace:

Bir  bigfile tablespace tek bir datafile’ dan yada bir tempfile’dan  oluşur. Bu datafile yada tempfile yaklaşık 4 milyar block içerebilir. Block_size 8K olan bir datafile ‘in boyutu 32TB; block_size 32KB olan bir datafile ‘in ise maksimum 128 TB boyutunda olabilir.
Small file bir tablepace ise 1022 adet datafile yada tempfile içerebilir. Bu datafile’ lerin boyutu ise yaklaşık 4 milyon block içerir.
Bir bigfile tablepace’in extent yönetimi local yönetimli olmak zorundadır. Smallfile tablepace’ lerde extent yönetimi  hem local hemde dictionary yönetilebilir.
System ve Sysaux tablespace’ leri big file tablespace olarak oluşturulamazlar.
Bigfile tablespaceler dinamik genişleyen  logical volume özelliğine sahip gelişmiş RAID teknojisi yada Automatic Storage Management(ASM) ile kullanılması gerekir.
Big file bir tablespace oluşturabilmek için bigfile anahtarının belirtilmesi gerekmektedir. Tablespace oluşturulrken default  tablespace özelliği smallfile’ e verilmişse bu şekilde yazılır.
SQL> create bigfile tablespace big_tbs datafile '/u01/app/oracle/oradata/XDB/datafile/big_tbs01.dbf' size 200M ;
Tablespace created.
Renaming Tablespace:

Oracle 10 g ile birlikte gelen bu özellik, mevcut tablespace’in ismini değiştirmek için kullanılır.
Alter tablespace big_tbs rename  to new_big_tbs;
System ve sysaux tablolarının ismini değiştirilemez.  ReadOnly tablespace  olan tüm tablespace’ lerin Adını değiştirebiliriz. Tablespace adı değiştirildiğinde Controlfile backup alınması yararlı olacaktır.
Tablespace thresholds:
Tablespace’ lerde  tablespace  alan kullanımının kritik seviyeye ulaştığını anlayabilmesi için metric threshold değerlerini set etmelidir. Bu değerler tüm tablespace için default değerleri aşağıdaki gibidir. Bu değerler farklı değerlere çekilebilir.

Tablepace Actions:


Yukarıda OEM konsolda tablespace bölmesinde seçili olan tablespace ile ilgili action’ lar görülmektedir.
Add Datafile: Seçili tablespace’ yeni bir datafile eklemek için seçilir.,
Create Like: Seçili tablespace ile bire bir benzer farklı bir tablespace oluşturmak için,
Generate DDL: Tablepace oluşumu içindeki datafile’larda dahil tüm yapının SQL scripti oluşturur.
Make Locally Managed: Dictionary Managed Tablepace’ ler için Extent yönetimi  Local olara yönetilmesini sağlamak için seçilir. Oracle eski sürümlerde extentler  data dictionary  tarafından yönetiliyordu. Locally managed  extent yönetimi için Dictionary  managed’e göre daha avantajlıdır.
Make ReadOnly: Seçili tablespace’i Sadece okunabilir, yapmak DML işlemine kapamak için seçilir.
Make Writable: Read Only yapılmış tablepace’i Writable(DML işlemine açmak) için seçilir.
Place Online:  Seçilen tablepace’ i online durumuna getirmek için kullanılır.
Reorganize: database bloklarını taşımak için bir shrink operasyonudur. Bu işlem 6 adımda gerçekleşir. Tablespace seçme,  hızlı shrink yada güvenli  şekilde seçilir. Sonra işlem gerçekleştilirir.  Rapor incelenir. Schedule(planlama) edilebilir. Yapılan operasyon için Script üretilir.
Run Segment Advisor: Seçili tablepace için segment advisor’ ın çalıştırılması segment space yönetimi ile ilgili bulgular ve yararlı tavsiyeler sunmaktadır. Üç adımda gerçekleşmektedir. Seçim , Task olarak kaydet sechedule et , ve bulgular.
Show tablespace Contents: Tablepace içerisindeki objelerdir.  Seçili objenin extent haristasını görebilirsiniz.


Show dependencies: Tablespce  içerisinde kullanılan  bağımlı objelerdir.
TEST_TBS tablespace için  içindeki datafile’lar dependencies  , dependents ise aşağıda listelenmiştir.


Take offline: tablespace’ offline durumuna getirmek için seçilir. Bu işlem için dört seçenek mevcuttur.
                Normal: Normal güvenli bir şekilde tablespace içindeki datafile ile birlikte offline olur. Online için herahngi bir recovery işlemine gerek kalmaz. Default seçenektir.
                Temporary: Geçiçi sekilde sadece datafile’ları offline durumana getirmek için seçilir.
                Immediate:  tablepace hemen offline durumuna getirilir. Online edilebilmesi için bir recovery işlemi gerektirir. No archivelog da bu seçeneği seçmenizi desteklemez.
                For Recover: Tablespace Recover işlemi için tercih edilen bir seçenektir. Bilindiği gibi Tablespace kurtarılabilmesi için offline mod’ da olması gerekir.
Yukarıdaki tüm offline seçenekleri tablespace için kullanılabilir.

26 Nisan 2012 Perşembe

Tablespace Yönetimi - IV

Tablespace ‘ler iki tiptir. Permanent(Kalıcı) ve Temporary(Geçici) tablespace’ lerdir.


Temporary Tablespace:

Temporary Tablepace, sadece  kullanıcıların session süresince disk üzerinde kullandığı geçici alanlardır. Session süresi bitince bu bilgiler silinir.
Temporary tablepace’ ler session’ ın bir çok sort işlemlerinin yükünü azaltmak için kullanılır.RAM’ daki PGA alanı büyük sort işlemleri için yetersiz kaldığında fiziksel disk üzerindeki temporary alanını kullanır.
Bildiğimiz gibi Memory’deki SORT _AREA_SIZE parametresi bu işlemlerin RAM’ da yapılmasını için gerekli alanı belirten parametredir. Bu alanı bir çok kullanıcının default temporary  alanı olarak paylaştırabiliriz.
Default olarak tüm kullanıcılar temp alanı için SYSTEM tablespace’ i kullanırlar.  Her bir kullanıcı SYSTEM TABLESPACE kullanırsa sistemde yavaşlama ve system tablespace in kapasitesini zorlyacağından bir DBA’ nin bir temporary tablepace oluşturup default oalrak tüm kullanıcılara paylaşması gerekmektedir.

Örnek: Kullanıcı oluştururken yada var olan kullanıcıya default temprary tablespace alanını referans gösteririz.
SQL>ALTER USER xyz  DEFAULT TEMPORARY TABLESPACE test_tbs;

Yada yeni kullanıcı oluşturken;

SQL>CREATE USER xyz IDENTIFIED BY xyx_pass DEFAULT TABLESPACE user
DEFAULT TEMPORARY TABLESPACE test_tbs;

Temporarytablespace, diğer tablepace’ler gibi datafile ‘lardan değil ona has bir tempfile ‘lardan oluşur.
Temporary tablepace içierisinde tüm sort operasyonlarının yapıldığı bir sort segment vardır.Sort Segment , intance’ gelen sıralama(sorting) işlemi görülen sorgu için kendiliğinden oluşur. Biz haricen bir temp segmenti oluşturamayız.

V$SORT_SEGMENT  ve v$TEMP_SEG dinamik view ile içerisindeki alan ve sort işlemi yapan user’ ları görebiliriz.
Extent yönetimi  Lokal dir. Ve AUTOALLOCATE extent yönetimi desteklemez. Extent yönetimi Uniform (sabit boyutta) olabilir.

Daha önceden de söylediğimiz gibi database üzerinde bir tane default temporary tablespace ve bir tane undo tablespace olabilir.
Not: Default temporary tablespace Offline durumuna getirilemez. Yeni bir tane temporary tablespace oluştuncaya kadar eskisini silinemez.
Not:Birden fazla tempoary tablespace oluşturulabilir. Fakat bunlardan sadece birisini kullanabilir.

SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE new_temp;

Eski temporary tablespace silinebilir.

SQL>DROP TABLEPACE old_temp  including contents and  datafiles;

SQLPLUS ile Temporary Tablespace oluşturma:

“CREATE TABLEPACE”yetkisine sahip bir kullanıcı yada “sysdba” rolündeki bir kullanıcı temporary tablespace oluşturabilir. Create temprorary tablespace cümlesi ile bir tablespace oluşturulabilir.
SQL>CREATE TEMPORARY TABLESPACE test_tmp_tbs TEMPFILE '/u01/app /oracle/oradata/XDB/datafile/temp_tbs01.dbf'
     SIZE 20M REUSE
     EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M; 


Kullanıcı işlemlerinin çok yoğun olduğu ortamlarda (groupby, join,distinct, order by,Minus,Union,,Intersect, Create Index, vb.) Temporary tablespace alanı yetmediği durumlarda  temporary tablespace yeni tempfile’ lar eklenebilir.

SQLPLUS ile Temporary tablespace yeni bir Tempfile ekleme:

SQL>ALTER TABLESPACE ADD TEMPFILE ‘/u01/app /oracle/oradata/XDB/datafile/test_temp02.dbf';


Create Bigfile Temporary Tablespace:
SQL>CREATE BIGFILE TEMPORARY TABLESPACE big_tbs TEMPFILE '/u01/app /oracle/oradata/XDB/datafile/big_temp01.dbf'
     SIZE 50M REUSE
     EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;


Temporary tablespace ‘in boş  alan durumu ile ilgili bilgileri görmek istersek V$TEMP_SPACE_HEADER dinamik view’ kullanabiliriz. 

17 Nisan 2012 Salı

Tablespace Yönetimi - III


Sysaux tablepace:
System tablespace ‘in auxliary(yardımcı ek) tablespace ‘ dir. Sysaux tablespace, oracle 10 g ile birlikte gelen,  system tablespace’ in yükünü hafifletmek için  kullanılan, daha önceleri system tablespace’de yer alan önem arzetmeyen metadataların depolandığı,  RMAN, LogMiner, Standby database , shared Server , AWR raporarının saklandığı ve Oracle enterprise Manager metadatalarının da tutulduğu alandır.



















Oracle 10 g veüst versiyonlarda oluşturulan tüm database’ ler için zorunlu bir tablespace’ dir.
Tablespace alan boyutu ise içindeki bileşenlerin kullanımına göre değişiklik gösterir. Ancak Oracle  bu tablespace için minumum 250 MB kapasite planlanmasını tavsiye etmektedir
Sysaux tablespace’ in byük bir kısmını AWR raporları tutmaktadır.AWR raporlarının harcadığı alanı,  AWR snaphot interval ve retention period parametrelerinin değerleri etkilemektedir. Bildiğimiz gibi Automatik Workload repository sistem ve memory istatistiklerini diskte saklardı. Snapshot interval default olarak 60 dk’ dır. Yani her 1 saatte veritabanı sistemimizin bir snapshot’ ını alır ve diske kaydeder. Ve memory ‘ deki Instance istatistiklerini MMON background prosesi tarafından veritabanına bildirilir. Retention period ise istatistik raporlarının saklanması garantisini sağlar. Default olarak 8 gündür. Bu değeri değiştirebiliriz. Bu iki değer sysaux tablepace içerisinde saklanan AWR raporlarının boyutunu doğrudan etkilemektedir.
Sysaux tablespace Alter özelliği için sysdba yetkisi gerekmektedir. Sysaux ,normal database operasyonlarında  tablespace drop edemeyiz ,taşıyamayız ve adını değiştiremeyiz.
Sysaux tablespace için
 Status Online ,
Tipi permanent,
ReadWrite,
Extent yönetimi local,
Segment space Auto
Olması gerekmektedir.
Sysaux tablespace’ e ek datafile eklemeleri yapabiliriz.
SQL> ALTER TABLESPACE SYSAUX   ADD DATAFILE '/u01/app/oracle/oradata/XDB/datafile/sysaux02.dbf' SIZE 500M

V$SYSAUX_OCCUPANTS view ile Sysaux tablespace alan kullanımını izlemek için kullanılır. Operasyonu farklı bir tablespace taşıyabiliriz.
SQL> desc V$SYSAUX_OCCUPANTS
 
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 OCCUPANT_NAME                                      VARCHAR2(64)
 OCCUPANT_DESC                                      VARCHAR2(64)
 SCHEMA_NAME                                        VARCHAR2(64)
 MOVE_PROCEDURE                                     VARCHAR2(64)
 MOVE_PROCEDURE_DESC                                VARCHAR2(64)
 SPACE_USAGE_KBYTES                                 NUMBER
 
OCCUPANT_NAME  sysaux içerisinde bulunan operasyon adı
OCCUPANT_DESC operasyon açıklaması
SCHEMA_NAME     şema ismi
MOVE_PROCEDURE   operasyonların taşınması için gerekli olan plsql procedure kodu.
MOVE_PROCEDURE_DESC açıklaması
SPACE_USAGE_KBYTES sysaux içerisindeki operasyonun kilobyte cinsinden alan kullanımı.                                                                                          
SQL> SELECT OCCUPANT_NAME, MOVE_PROCEDURE FROM V$SYSAUX_OCCUPANTS;
 
OCCUPANT_NAME                                 MOVE_PROCEDURE
--------------------------------------------- ---------------------------------------------
LOGMNR                                        SYS.DBMS_LOGMNR_D.SET_TABLESPACE
LOGSTDBY                                      SYS.DBMS_LOGSTDBY.SET_TABLESPACE
STREAMS
......................
.........................
  
Örnek olarak LOGMNR operasyonunu SYSTEM tablespaceiçerisin taşımak istiyoruz. Bundan sonra LOGMNR işlemleri için sysaux’ da değil system tablepace’ de yapılacaktır.

SQL> EXEC SYS.DBMS_LOGMNR_D.SET_TABLESPACE('SYSTEM');
 
PL/SQL procedure successfully completed.

9 Nisan 2012 Pazartesi

Tablespace Yönetimi- II

Oracle Enterprise Manager(OEM) Konsolunu kullanarak ta yeni bir temporary tablespace oluşturabiliriz.

OEM de Server genel sekmesinden tablespaces seçilir.
Daha sonra Yeni bir tablespace eklemek istiyoruz. Create düğmesine basalım.

  
Daha sonra tablespace ismi girilir aşağıdaki gibi extent yönetiminin nasıl yönetileceği, tipi , durumu  seçilir ve bir sonraki adım bu tablespace ait bir datafile/tempfile eklenmesi gerekir.


Oluşacak tablespace ait yeni bir datafile/tempfile eklemek istiyorsak  Add düğmesine,
Silmek istiyorsak Remove düğmesine,
Düzenlemek istersek te edit düğmesine basabiliriz.
 

Tablespace için yeni bir datafile/tempfile eklenir yada düzeltilme yapılabilir. Aşağıda düzeltilme yapılmıştır.
Daha sonra continue ‘butonu ile devam edilir.



Oluşacak Tablepace ile ilgili oluşturma scripti için show sql seçilir.
Create komutu aşağıdaki gibi olur.

Tablespace ile ilgili detaylı bilgileri izlemek istiyorsak dba_tablespaces  tablosu işimize yaramaktadır.

SQL> desc  dba_tablespaces;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 TABLESPACE_NAME                        NOT NULL      VARCHAR2(30)
 BLOCK_SIZE                             NOT NULL      NUMBER
 INITIAL_EXTENT                                       NUMBER
 NEXT_EXTENT                                          NUMBER
 MIN_EXTENTS                            NOT NULL      NUMBER
 MAX_EXTENTS                                          NUMBER
 MAX_SIZE                                             NUMBER
 PCT_INCREASE                                         NUMBER
 MIN_EXTLEN                                           NUMBER
 STATUS                                               VARCHAR2(9)
 CONTENTS                                             VARCHAR2(9)
 LOGGING                                              VARCHAR2(9)
 FORCE_LOGGING                                        VARCHAR2(3)
 EXTENT_MANAGEMENT                                    VARCHAR2(10)
 ALLOCATION_TYPE                                      VARCHAR2(9)
 PLUGGED_IN                                           VARCHAR2(3)
 SEGMENT_SPACE_MANAGEMENT                             VARCHAR2(6)
 DEF_TAB_COMPRESSION                                  VARCHAR2(8)
 RETENTION                                            VARCHAR2(11)
 BIGFILE                                              VARCHAR2(3)
 PREDICATE_EVALUATION                                 VARCHAR2(7)
 ENCRYPTED                                            VARCHAR2(3)
 COMPRESS_FOR                                         VARCHAR2(12)

Dba_data_files tablosuyla da tablespace ve datafile’ lar hakkında bilgi alabililiriz.
SQL> desc dba_data_files;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 FILE_NAME                                          VARCHAR2(513)
 FILE_ID                                            NUMBER
 TABLESPACE_NAME                                    VARCHAR2(30)
 BYTES                                              NUMBER
 BLOCKS                                             NUMBER
 STATUS                                             VARCHAR2(9)
 RELATIVE_FNO                                       NUMBER
 AUTOEXTENSIBLE                                     VARCHAR2(3)
 MAXBYTES                                           NUMBER
 MAXBLOCKS                                          NUMBER
 INCREMENT_BY                                       NUMBER
 USER_BYTES                                         NUMBER
 USER_BLOCKS                                        NUMBER
 ONLINE_STATUS                                      VARCHAR2(7)
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;

TABLESPACE          FILE_NAME                                             SPACE     BLOCKS
---------- -------------------------------------------------- ----- ----------
USERS         /u01/app/oracle/oradata/XDB/datafile/users01.dbf            5        640
UNDOTBS1     /u01/app/oracle/oradata/XDB/datafile/undotbs01.dbf          50       6400
SYSAUX         /u01/app/oracle/oradata/XDB/datafile/sysaux01.dbf         570      72960
SYSTEM        /u01/app/oracle/oradata/XDB/datafile/system01.dbf          680      87040
TEST_TBS      /u01/app/oracle/oradata/XDB/datafile/test01.dbf            10       1280
TEST_TBS2     /u01/app/oracle/oradata/XDB/datafile/test02.dbf            10       1280
6 rows selected.

Dba_temp_files tablosundan ise temp file ve ilgili tablespace görebiliriz.
SQL> select tablespace_name,file_name,bytes/1024/1024 space, blocks from dba_temp_files;

TABLESPACE FILE_NAME                                          SPACE     BLOCKS
---------- -------------------------------------------------- ----- ----------
TEMP       +XDATA/xdb/tempfile/temp.264.751571629               021       2688

TABLESPACE KALDIRMAK:
Oracle Enterprise manager konsole kullanarak tablespace kaldırabiliriz yada SQLPLUS  yada diğer editör programlarını (TOAD vb. ) tablespace  kaldırabiliriz. Bunların hepsi için DROP TABLESPACE yetkisinesahip kullanıcı yada sysdba rolüne sahip kullanıcı ile login oluyoruz.
Tablespace kaldırmak için
SQL> DROP TABLESPACE test_tbs including contents cascade constraints;
Genel olarak en basit şekliyle tablespace kaldırmak için yukarıdaki koyu ifadeleri yazmak yeterlidir. Eğik yazılı ifadeler ise opsiyoneldir.
İçerisindeki bağımlı objeleri de beraber kaldırmak için including contents cascade constraints ifadesini ekleyerek bu tablespace bağımlı farklı tablepaceler içindeki constraint(sınırlama)’ nesneleri de silinmiş olacaktır.
SQL> DROP TABLESPACE test_tbs including contents and datafiles;
Beraberinde datafile ‘ lar ile birlikte tüm her şeyi kaldırmak için yukarıdaki cümleyi çalıştırabiliriz.