Genel Oracle Hataları — ORA-12154, ORA-00600, ORA-01722, ORA-03113, ORA-01000

Merhabalar,

Bu yazımda genel olarak Oracle veritabanlarında ve uygulamalarda sıkça karşımıza çıkan oracle hatalarından bahsedeceğim. Genellikle bir oracle hatası aldığımızda ilk yaptığımız şey hata kodunu kopyalayıp Google’da aramaktır. Bence ilk olarak support.oracle.com’u tercih edin. Daha hızlı ve güvenli çözüme ulaşabilirsiniz. Bu yazımda ise Google’da en çok aranan 5 tane hatadan bahsedeceğim.

ORA-12154: TNS:could not resolve the connect identifier specified

Bu hatayı aldığınız zaman veritabanınız TNS bağlantısı kuramıyor demektir. Genellikle bağlantı bilgilerinde sıkıntı olabiliyor. Bağlantı bilgilerini kontrol ettikten sonra Listener’ın açık olup olmadığına bakın.

$ cat $ORACLE_HOME/network/admin/tnsnames.ora

TNSNAMES.ora dosyası içinde bağlanmaya çalıştığınız veritabanı bilgilerinin sunucu adına ve servis adına dikkat edin. Genellikle yanlış bilgiler yüzünden bağlantı sağlanamıyor. Bağlantı bilgileri doğruysa listener’ın açık olup olmadığına bakın.

$ lsnrctl status
$ lsnrctl start -- listener kapalıysa, listener'ı çalıştırın

ORA-00600: internal error code, arguments: [%s], [%s],[%s], [%s], [%s]

Eğer veritabanınızda ora-600 hatası alıyorsanız, veritabanınızda ciddi sıkıntılar var demektir. Belki bir bug’la karşılaşmışsınızdır belki sistem parametrelerini doğru ayarlamamışsınızdır, belki de farklı bir sıkıntıdan kaynaklanıyordur. ORA-600 hatası aldığınız zaman yanında birkaç tane parametre de gelir. İlk yapmanız gereken support.oracle.com a girip ora-600 hatalarına bakmaktır. Support sitesinde Note 153788.1 diye arama yaparsanız karşınıza oracle generic hatalarının olduğu bir araç geliyor. Bu sayfayı kullanarak ora-600 hatasını, onun yanında gelen parametretleri ve veritabanı versiyonunuzu girerek, sorunuzun kaynağını ve onunla ilgili dökümanları görebilirsiniz.

ORA-01722: Invalid Number

Bu hatayı genellikle sql de sayısal olmayan string bir değeri sayıya çevirmeye çalıştığınız zaman alıyorsunuz. Genellikle tablolarımızda verileri varchar2 alanında tutuyoruz. Bazen sayısal verileri de string olarak tutabiliyoruz. Bu sayısal verileri de karşılaştırma yapmak için to_number() gibi fonksiyonlarla dönüştürmek istiyoruz. Fakat bizim string olarak sakladığımız sayısal verilere bazen yanlış veri girişinde bulunuyor ve bu hatayı alıyoruz.
Örneğin,
no adında bir alanımız olsun ve buraya sürekli sayısal değer girelim.

create table deneme (no varchar2(10));
insert into deneme values ('1');
insert into deneme values ('2');
commit;

Peki ya yanlışlıkla biri farklı bir değer girerse:

insert into deneme values ('uc');
commit;

to_number() fonksiyonunu kullandığınızda bu hatayı alacaksınız.

select to_number(no,'999');
ORA-01722: Invalid Number

ORA-03113: end-of-file on communication channel

Bu hatayı aldığımız zaman client makinesinden veritabanına olan bağlantımız bir nedenden dolayı kopmuş demektir. Bu sorunun kaynağı,
Server crashed olmuş olabilir, işletim sistemi seviyesinde çalışan process’ler kapanmış olabilir, ya da oracle veritabanından kaynaklanan içsel bir problem olabilir. Genelde çok basit hatalardan dolayı bile oracle bu hatayı vermektedir.
Bu hatayı aldığınız zaman bence en iyisi alert.log dosyasında hatayla ilgili detaylı olarak logları incelemektir. Çözüm tahmin ettiğinizden de kolay olabilir.

ORA-01000: maximum open cursors exceeded

Bu hata, veritabanında olan maksimum açık cursor sayısına ulaştığınız zaman oluşuyor. Yani genelde programcılar kod kısmında veritabanına bağlantı sağladıktan sonra bağlantıyı sonlardırmıyorlar ya da her işlem için ayrıca bağlantı açıyorlar. Böyle durumlarda sistem çok fazla kullanıldığı anda ORA-01000 hatası oluşuyor. Maksimum açık cursor parametresi veritabanı açılış parametrelerinden biridir. sqlplus ile bağlanıp

SQL> show parameter open_cursor 

komutunu çalıştırdıktan sonra mevcut değeri görebilirsiniz. Çözüm olarak ya bu değeri arttıracaksınız ya da programcılarınızda kodu tekrar inceleyip açık kalan cursor’leri kapatmasını isteyeceksiniz.
Bu değeri arttırmak için, sqlplus‘s bağlanın :

SQL> alter system set OPEN_CURSOR=1000 scope=both;

Burada 1000 yerine, sisteminize uygun bir değer vermelisiniz.

TNS-12545: Hatası

Merhabalar,

Öncelikle eğer bir oracle hatası alırsanız ilk işiniz sunucuya bağlanıp oerr komutuyla sorunun kaynağına ve çözümüne bakmak olmalıdır.
TNS-12545 hatası aldığınız zaman veritabanına bağlantı hatası alıyorsunuz demektir. oerr komutunu kullanarak hataya ve çözümüne bakalım.

oerr TNS 12545 

TNS-12545:  Connect failed because target host or object does not exist

Cause:  The address specified is not valid, or the program being connected to does not exist.

Action:  Ensure the ADDRESS parameters have been entered correctly; the most likely incorrect parameter is the node name. Ensure that the executable for the server exists (perhaps "oracle" is missing.)

Eğer TCP/IP kullanıyorsanız TNSNAMES.ora dosyasında bulunan veritabanı bağlantı bilgilerine dikkat etmeniz gerekiyor. Genellikle yazım yanlışı olabiliyor ya da sunucu adı veya servis adı yanlış giriliyor olabilir. TNSNAMES.ora yı kontrol ettikten sonra tnsping komutuyla veritabanına bağlanmayı deneyin.

tnsping oracledb

Eğer tnsping komutu başarılı çalışırsa problemi çözmüş olursunuz. Hala sorun devam ederse listener ayakta ve çalışıyormu diye kontrol etmelisiniz.

 lnsrctl status

Listener çalışmıyorsa, çalıştırıp tekrar tnsping komutunu çalıştırıp deneyin.

lsnrctl start
tnsping oracledb

Linux – Volume Group'dan Fiziksel Sürücüleri Çıkarmak

Merhabalar,

Bazen LVM için oluşturmuş olduğunuz fiziksel sunucuları geri almak isteyebilirsiniz. Ya da o fiziksel sürücüleri başka bir LVM için kullanmak isteyebilirsiniz. Fakat bu işlemi yapmadan önce fiziksel sürücüleirn kullanılmadığından emin olmalısınız. Bunun için ‘pvdisplay’ komutunu kullanabilirsiniz. PV Size bölümünde NOT usable yazısını görmelisiniz.

# pvdisplay /dev/hda1

--- Physical volume ---
PV Name               /dev/hda1
VG Name               myvg
PV Size               1.95 GB / NOT usable 4 MB [LVM: 122 KB]
PV#                   1
PV Status             available
Allocatable           yes (but full)
Cur LV                1
PE Size (KByte)       4096
Total PE              499
Free PE               0
Allocated PE          499
PV UUID               Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7

Eğer fiziksel sürücü kullanılıyorsa, öncelikle verileri başka sürücülere aktarmalısınız. Bunun için pvmove komutunu kullanabilirsiniz.

Diskimiz hazır ise vgreduce komutunu kullanarak fiziksel sürücüyü volume group’dan çıkarabiliriz.

# vgreduce myvg  /dev/hda1

Sequence Numarasına ve Thread Numarasına Göre Arşivlerin Yedeğini Almak

Merhabalar,

Bazen kayıtlı arşivlerimizin belirli bir bölümünün yedeğini almak isteriz. Standby veritabanı kurarken belirli arşivlerin eksik olduğunu gördüm. Production veritabanına bağlanarak thread numarasına ve sequence numarasına göre arşivlerin sıkıştırılmış yedeğini alıp standby a kopyaladım. Basit bir script ama sizlerle paylaşmak istedim.

run{
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK FORMAT='/oracle/rman/thread2.bkp';
BACKUP ARCHIVELOG FROM SEQUENCE 7273 UNTIL SEQUENCE 7380 THREAD 2;
release channel ch1;
}

Oracle Database Vault u Etkin (Enable) ve Etkisiz (Disable) Hale Getirmek

Merhabalar,

Bu yazımda veritabanımızda kurulu ve aktif olan Oracle Database Vault u etkisiz (Disable) hale getirip daha sonra tekrar etkin (Enable) hale getirmekten bahsedeceğim. Not: Aşağıdaki tüm komutlar Linux ve Unix işletim sistemlerinde geçerlidir…

Öncelikle neden çalışan DB vault u etkisizleştirip tekrar etkin hale getiriyoruz. Biliyorsunuz DB Vault bir güvenlik ürünü olduğu için, bazı durumlarda veritabanı üzerinde herhangi bir işlem yapamamızı sağlıyor. En yetkili kullanıcı (SYS) olsanız bile DB Vault sizi yetkiniz olmadığı işlemleri yapamamanızı sağlıyor. Bu durumlarda DB Vault u etkisiz hale getirip tekrar etkin hale getirmemiz lazım.

Database Vault u Etkisiz Hale Getirmek İçin:

Öncelikle Database Vault un etkin olup olmadığına bakmamız lazım.

SELECT * FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault';

Eğer Database Vault etkin ise aşağıdaki gibi bir sonuç almamız lazım:

PARAMETER VALUE
----------------------------- -----------------------
Oracle Database Vault TRUE

Database vault un etkin olduğunu öğrendikten sonra sırasıyla aşağıdaki adımları takip ederek Database vault u etkisiz hale getirebiliriz:

  1. Öncelikle veritabanını, listener ı ve Enterprise Manager ı kapatıyoruz.
    sqlplus /as sysdba
    
    SQL> SHUTDOWN IMMEDIATE
    SQL> EXIT
    
    $ emctl stop dbconsole
    $ lsnrctl stop [listener_adi]

    Eğer RAC veritabanı kullanıyorsak aşağıdaki komut ile veritabanımızı kapatmalıyız.

    $ srvctl stop database -d veritabani_adi
  2. Oracle Database Vault u etkisiz hale getirelim.
    cd $ORACLE_HOME/rdbms/lib
    make -f ins_rdbms.mk dv_off
    cd $ORACLE_HOME/bin
    relink all

    Eğer Oracle RAC kullanıyorsak yukarıdaki komutu tüm node larda çalıştırmamız gerekiyor.

  3. Veritabanını, listener ı ve Enterprise Manager ı tekrardan açıyoruz.
    sqlplus / as sysdba
    
    SQL> STARTUP
    SQL> EXIT
    
    $ emctl start dbconsole
    $ lsnrctl start [listener_adi]

    Eğer RAC veritabanı kullanıyorsak aşağıdaki komut ile veritabanımızı açmalıyız.

    $ srvctl start database -d veritabani_adi

Aşağıdaki komutu tekrar çalıştırarak Database Vault un etkin olup olmadığına bakabiliriz:

SELECT * FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault';

 

Database Vault u Etkin Hale Getirmek İçin:

      1. Öncelikle veritabanını, listener ı ve Enterprise Manager ı kapatıyoruz.
        sqlplus /as sysdba
        
        SQL> SHUTDOWN IMMEDIATE
        SQL> EXIT
        
        $ emctl stop dbconsole
        $ lsnrctl stop [listener_adi]

        Eğer RAC veritabanı kullanıyorsak aşağıdaki komut ile veritabanımızı kapatmalıyız.

        $ srvctl stop database -d veritabani_adi
      2. Oracle Database Vault u etkin hale getirelim.
        cd $ORACLE_HOME/rdbms/lib
        make -f ins_rdbms.mk dv_on lbac_on
        cd $ORACLE_HOME/bin
        relink all

        Not: Eğer RAC veritabanı kullanıyorsak bu komutları tüm node larda çalıştırmamız lazım.

      3. Veritabanını, listener ı ve Enterprise Manager ı tekrardan açıyoruz.
        sqlplus / as sysdba
        
        SQL> STARTUP
        SQL> EXIT
        
        $ emctl start dbconsole
        $ lsnrctl start [listener_name]

        Eğer RAC veritabanı kullanıyorsak aşağıdaki komut ile veritabanımızı açmalıyız.

        $ srvctl start database -d veritabani_adi

 

Oracle Kurulum DVD sinden Oracle için Gerekli Olan Paketlerin Kurulması

Merhabalar,

Bu yazımda Oracle veritabanı kurulumundan önce gerekli olan paketlerin kurulumu için kullanılan pre-installation paketinin kurulumundan bahsedeceğim. Preinstallation paketini otomatik olarak oracle veritabanı için gerekli olan tüm grupları, işletim sistemi kullanıcılarını ve işletim sistemi paketlerini sunucunuza kurar. Bu paketi kurmak için oracle public yum repository de bulunan  “oracle-rdbms-server-11gR2-preinstall” paketini kurmanız gerekiyor. Bu paketi kurmak için:

Eğer makineniz internete bağlıysa oracle repository lerini aldıktan sonra aşağıdaki komutla hazır paketleri yükleyebilirsiniz.

# cd /etc/yum.repos.d
# wget http://public-yum.oracle.com/public-yum-ol6.repo
# yum install oracle-rdbms-server-11gR2-preinstall

Eğer oracle kurulum dvd sinden bu paketi yüklemek istiyorsanız, öncelikle dvd yi mount edip, oracle repository ye dvd nin adresini tanıtmanız gerekiyor.

 

# cd /etc/yum.repos.d
# vi public-yum-ol6.repo

Aşağıdaki kodu repository e ekleyin.


[Install_DVD_base]
name=Install DVD
baseurl=file:///cdrom/Server
gpgcheck=0
enabled=1
skip_if_unavailable=True

Yeni bir klasör oluşturup DVD yi bu klasöre mount edin.


# mkdir /cdrom
# mount -t iso9660 -o ro /dev/cdrom /cdrom

Yum komutunu kullanarak preinstall paketini kurabilirsiniz.

# yum install oracle-rdbms-server-11gR2-preinstall/span>

Oracle 12c ile Gelen Yenilikler

Öncelikle bu kaynağı hazırlayan sayın Emre Albayrak’a çok teşekkür ederim. Şimdi ondan hazırlamasını istediğim Oracle 12c ile birlikte gelen yeniliklerden bahsedelim:

Oracle Database 12c, veritabanı bulutlarının kurulup yönetilmesini kolaylaştıran yeni bir birden çok kiracılı mimari sunar. Birden çok veritabanını hızlı şekilde konsolide etmek için Oracle Multitenant gibi yenilikler ve yüksek yoğunlukta verileri sıkıştırma ve katmanlama için Isı Eşlemi ile Otomatik Veri Optimizasyonu, kaynak verimliliğini ve esnekliğini en üst düzeye çıkarır. Bu benzersiz gelişmeler, kullanılabilirlik, güvenlik ve büyük veri desteğindeki önemli geliştirmelerle birlikte, Oracle Database 12c’yi özel ve genel bulut kurulumları için ideal platform haline getirir. Oracle Multitenant, bulutlarda veritabanlarını konsolide etmeye yönelik yeni bir mimari sunarak uygulama yazılımı değişiklikleri olmadan birçok veritabanını bir veritabanı olarak yönetmenize olanak sağlar ve böylece hızlı, ölçeklenebilir ve güvenli bir veritabanı platformu elde edilir.

Oracle Corporation, multitenant özelliğiyle veritabanı mimarisinde önemli bir değişikliğe gitmiş ve 10g ile 11g sürümlerindeki ‘grid’ kavramı yerini ‘cloud’ kavramına bırakmıştır. Oracle 12c’deki diğer yeniliklerde bu mimari etrafında şekillenmiş ve bu mimariyi destekleyecek şekilde düzenlenmiştir.

Oracle 12c sürümünde yer alan yeni özellikler aşağıdaki başlıklar altında toplanabilir:

■    Application Development

■    Business Intelligence and Data Warehousing

■    Compression and Archiving

■    Database Overall

■    High Availability

■    Manageability

■    Performance

■    Oracle RAC and Grid Infrastructure

■    Security

■    Spatial and Graph

Application Development

*Identity Column

Oracle bugüne kadar diğer veritabanlarında olan otomatik sayı üretme mekanizmasına sahip değildi. Oracle 12c ile beraber gelen Identity Column özelliği ile bu ihtiyacıda karşılamış oldu. Artık id tipi kolonların otomatik nümerik olarak değeri Oracle tarafından verilmesini sağlabileceğiz.

GRANT CREATE SQUENCE GENERATED [ ALWAYS | BY DEFAULT [ ON NULL ] ] AS IDENTITY [ ( identity_options ) ]

*    ROW limiting for Top-N result queries

Oracle 12c ye kadar veri setlerinde limitleme işlemleri rownum gibi ifadeler ile yapılıyordu. SQL Server daki TOP fonksiyonu yetkinliği bu versiyonla farklı kullanım şekilleriyle kullanıcılara sunuldu.

[ FETCH FIRST [ WITH TIES ] | NEXT | PERCENT ]

Select * from test_db order by id fetch next 6 rows only;

*VARCHAR2, NVARCHAR2 32K limit

Oracle veritabanı geçmiş sürümlerinde bu veri türleri için maksimum boyut 4.000 byte idi. Oracle 12c, bu veri tipleri 32.767 byte’a artırdı.

MAX_STRING_SIZE = EXTENDED

Business Intelligence and Data Warehousing

> Oracle Advanced Analytics

*    Native SQL Support for Row Pattern Matching

MATCH_RECOGNIZE ifadesi sql sorgularının istenilen kalıpların satırlarda eşleşmesine yardımcı olur. Örnek:

SELECT *

FROM Ticker MATCH_RECOGNIZE (

PARTITION BY symbol ORDER BY tstamp

MEASURES STRT.tstamp AS start_tstamp,

FINAL LAST(DOWN.tstamp) AS bottom_tstamp,

FINAL LAST(UP.tstamp) AS end_tstamp,

MATCH_NUMBER() AS match_num,

CLASSIFIER() AS var_match

ALL ROWS PER MATCH AFTER MATCH SKIP TO LAST UP PATTERN (STRT DOWN+ UP+)

DEFINE

DOWN AS DOWN.price < PREV(DOWN.price),

UP AS UP.price > PREV(UP.price)

) MR

ORDER BY MR.symbol, MR.match_num, MR.tstamp;

SYMBOL TSTAMP START_TST BOTTOM_TS END_TSTAM MATCH_NUM VAR_ PRICE

ACME 05-APR-11 05-APR-11 06-APR-11 10-APR-11 1 STRT 25
ACME 06-APR-11 05-APR-11 06-APR-11 10-APR-11 1 DOWN

12

ACME 07-APR-11 05-APR-11 06-APR-11 10-APR-11 1 UP 15
ACME 08-APR-11 05-APR-11 06-APR-11 10-APR-11 1 UP 20
ACME 09-APR-11 05-APR-11 06-APR-11 10-APR-11 1 UP 24
ACME 10-APR-11 05-APR-11 06-APR-11 10-APR-11 1 UP 25
ACME 10-APR-11 10-APR-11 12-APR-11 13-APR-11 2 STRT 25
ACME 11-APR-11 10-APR-11 12-APR-11 13-APR-11 2 DOWN

19

ACME 12-APR-11 10-APR-11 12-APR-11 13-APR-11 2 DOWN

15

ACME 13-APR-11 10-APR-11 12-APR-11 13-APR-11 2 UP 25
ACME 14-APR-11 14-APR-11 16-APR-11 18-APR-11 3 STRT 25
ACME 15-APR-11 14-APR-11 16-APR-11 18-APR-11 3 DOWN

14

ACME 16-APR-11 14-APR-11 16-APR-11 18-APR-11 3 DOWN

12

ACME 17-APR-11 14-APR-11 16-APR-11 18-APR-11 3 UP 14
ACME 18-APR-11 14-APR-11 16-APR-11 18-APR-11 3 UP 24
15 rows selected.

>    Oracle OLAP *Cube Statistics Support

Bu özellik Oracle Cube istatistiklerini ve Automatic Workload Repository (AWR), Active Session History (ASH), and Automatic Database Diagnostic Monitor (ADDM) istatistiklerinin sonuçlarını yansıtır. Bu özellik oracle cube ve olap dahil oracle instance öğelerinin yönetimini kolaylaştırır.

>    Partitioning Enhancements *ONLINE Move Partition

Oracle 12c ye kadar Partition lar online olarak taşınamıyordu yeni gelen Oracle 12c ile beraber çok kolayca DDL (Create,Truncate…) ve DML (insert, update…) operasyonları önlenmeden Partitionlar online olarak aşağıdaki gibi taşınabiliyor.

ALTER TABLE <table name>

MOVE PARTITION <partition name> ONLINE

Pek çok kez, sadece bir partition da yapılacak sorguları hızlandırmak adına o partition için index oluşturmaya ihtiyaç duymuşuzdur. 12c, partition ile ilgili birçok geliştirmeyle geliyor bunlardan biri de sadece istenilen/seçilen partitionlar üzerinde index oluşturulabilmesi. Bunun için, index oluşturulmamasını istediğiniz partitionların “indexing” parametresini “off’ olarak belirleyip, oluşturacağınız indexin “partition” olduğunu belirtmeniz yeterli:

ALTER TABLE ornek MODIFY PARTITION ornek_p1 INDEXING OFF;

CREATE INDEX ornek_ndx ON ornek(tarih) LOCAL INDEXING PARTIAL;

Compression and Archiving

>    Archiving

*Enable Flashback Data Archive (FDA) for Security-Related Application Tables

Bu özellik güvenlik önceliği olan tablolar ve uygulamalar üzerinde „full history’ verilerini elde etmemizi sağlayan FDA imkanını sunar. FDA özelliği, tek bir sql komutu kullanarak güvenlik hassasiyeti üst düzey olan tablo ve uygulamalarda enable hale getirilebilir. Ayrıca bu özellik veritabanı yöneticisine yine tek bir komutla bir uygulamadaki tüm güvenlik tablolarını read-only hale getirme imkanı sağlar.

>    Information Lifecycle Management

*Automatic Data Optimization

Veritabanı Uzmanından beklenen görevlerden biri, verilerin farklı performans karakteristiklerine sahip storagelara doğru dağıtılmasını sağlayarak kaynakların verimli kullanımını sağlamaktır. Heat-map özelliği aktif edildiğinde, Oracle verilerin erişimini “veri bloğu” seviyesinde takip etmeye başlıyor. Automatic Data Optimization, heat map tarafından toplanan verilere ve sizin belirlediğiniz politikalara göre bu veri bloklarının, farklı storage yapılarına taşınmasını ve taşınırken istenirse sıkıştırılmasını sağlanabiliyor.

*Heat Map
3

Türkçeleştirirsek ısı haritası diye adlandırabileceğimiz özellikte satır ve segmentinde kullanım bilgileri izlenip kullanım sıklığına göre satırların bir haritasını çıkartır.Şekilde de görürdüğü üzere sıklıkla kullanılan yerler kırmızı daha az yerler sarı daha da azı mavi renkte olacak şekilde veri tabanında kullanılan alanların haritasını çıkartmış. burdan aldığı bilgilere göre sıkıştırma ve yedekleme işlemleri belli periyotlarda ADO tarafından yaptırılacak.

*In-Database Archiving

Bu özellik kullanıcılara ve uygulamalara satır düzeyinde arşiv durumunu düzenleme imkanı verir. Archived olarak işaretlenmiş satırlar mevcut session arşivlenmiş satırları görebilecek şekilde düzenlenene kadar görülemeyecektir.

>    SecureFiles Enhancements

Oracle 12c’de impdmp komutuna yeni bir parametre getirildi.( 1.3.4 SecureFiles Enhancements) Bu parametre sayesinde Oracle Dump ile oluşturulan tüm lob dosyaları securelob şeklinde oluşturuluyor. Bu özellik 12c’den başlayarak default hale getirilmiş durumda.

Database Overall

>    Database Consolidation

Oracle 12c’de getirilen multitenant ve konteynır veritabanı kavramları , 12’c veya önceki sürümlerden bir veritabanını konteynır bir veritabanına „full transport’ edebilme olanağı sağlıyor.

*Oracle Multitenant

Oracle 12c ile birlikte 1 tane ana veritabanı dediğimiz Container Database (CDB) üzerinde birden fazla Pluggable Database (PDB) dediğimiz alt veritabanları bulunacak. Oracle Corporation, Software in çalışması sırasında kaynakları daha effektif kullanmak için 12c de Container database ile Pluggable database i arasında Background process, Shared memory, Oracle Metadata sı gibi bir çok özellikleri ortak kullanmakta ayrıca Control file, Redolog file ve Undo tablespace gibi alanlarda her iki database arasında ortak olarak kullanılmaktadır.

1

2
TDBs Backup and Recovery

Bir cdb bir veya birden çok pdb’den oluşabilir. Recovery Manager (RMAN) cdb’nin tamamının veya içerisindeki pdb’lerden bir veya birkaçının yedeğini alabilir. Bununla birlikte istenen tablespace veya data dosyalarının da yedeği alınabilir.

*PDBs Point-in-Time Recovery

Herhangi bir pdb istenen spesifik bir zamana recover edilebilir.

> Utilities

* Oracle Data Pump Audit Commands

Oracle 12c ile birlikte Data Pump komutları da izlenebilir.

*Oracle Data Pump Change Table Compression at Import Time

Oracle 12c’de impdmp komutuna getirilen yeni bir parametre ile import alınırken tabloların sıkıştırma seçenekleri değiştirilebilir.

*SQLLoader and External Tables: Use dNFS for Accessing Files on NFS Servers

Hem harici tablolar hem de sql*loader ile Network File Storage (NFS) server üzerindeki dosyalar yüklenebilir.

High Availability

*Global Data Services (GDS)

Oracle Database 12c’nin yeni özelliklerinden bir diğeri olan Global Data Services, Active Data Guard ve GoldenGate ile replike edilmiş veritabanları arasında bölgeler arası ve bölge içi yük dengelemesi yapıyor. Bu özellik, Active Data Guard ve GoldenGate ile dağıtılmış veritabanlarına Real Application Cluster tabanlı yük aktarma ve dengeleme becerilerini etkin bir şekilde kazandırıyor. Kullanıcıların yakından tanıdığı Veritabanı Servisleri (Database Services) özelliğini, gerek yakındaki gerek uzaktaki lokasyonlarda yer alan çok sayıda veritabanı oturumunu kapsayacak şekilde genişleten Global Data Services, yedekteki veritabanlarından oluşan bir ‘okuyucu’ çiftliğindeki iş yüklerini dağıtmak için kullanılabiliyor.

>    Improved Resilliency *ASM Disk Scrubbing

Oracle ASM Disk Scrubbing mantıksal veri hatalarını kontrol etmeye ve düzeltmeye yarayan bir özelliktir. ASM Disk Scrubbing ürün veritabanının olağan I/O akışını etkilemeyecek şekilde düzenlenmiştir.

>    Online Operations

* Editioned and Noneditioned Objects

Oracle 12c’de editioned durumu editionable olan bir objenin bu parametresi kolaylıkla kontrol edilebilir. Böylelikle objeler arasındaki bağlılık hususunda çok önemli bir yer tutan edition kısmı kontol edilebilmiş olur.

*Enhanced Online DDL Capabilities

Geliştirilmiş DDL olanakları

■ DROP INDEX ONLINE

■ DROP CONSTRAINT ONLINE

■    ALTER INDEX UNUSABLE ONLINE

■    ALTER INDEX [VISIBLE | INVISIBLE]

*Invisible Columns

Bu özelliğe göre tablo oluşturulurken invisible olarak belirtilen kolonu select yada desc yaparak göremiyoruz sadece ilgili kolonu eğer yetkiniz var ise insert, update, delete yapabiliyoruz. Bu özellik en çok personel maaşı ve kişinin anne kızlık soyadı gibi mahrem bilgilerin saklandığı tablolarda çok işe yarayacaktır. Bu özellik aşağıdaki gibi basit bir şekilde kullanılabilir.

SQL> CREATE TABLE Personel (Sicil number, Ad varchar2(50), Maas number INVISIBLE);

SQL> ALTER TABLE Personel MODIFY (Maas visible);

*Metadata-Only DEFAULT Column Values for NULL Columns

Oracle 12c’de mevcut bir tabloya default ifadesi içeren sütun ekleme işlemi default değerin null olup olmamasına bakılmaksızın Metadata-Only değişikliği olarak algılanıp yerine getirilecek.

*Move a Data File Online

Daha önce tablespace’i offline’a çekip, işletim sistemi komutlarıyla kopyalama yaptığımız dosya taşıma işlemleri artık online olarak yapılabiliyor:

ALTER DATABASE MOVE DATAFILE 7u01/oradata/users01.dbf TO 7u02/oradata/yeni01.dbf;

Bu özellikle veritabanın kesintisiz hizmet vermesi açısından önemli bir özellik. İşlem normal dosya sisteminden ASM’e dosya transferini destekliyor.

*Multiple Indexes on Same Set of Columns

Oracle 12c ile birlikte tek bir kolon için bundan sonra birden fazla index kullanılabilecektir. Yani bir kolon için aynı anda B Tree index ve Bitmap index kullanılabilecek buda ihtiyaca göre kullanıcılar için çok güzel bir özellik olacaktır.

*Online Redefinition

ONLINE REDEFINITION özelliği, çevrimiçi üretim sistemini desteklemeye devam ederken tablo yapısında değişiklikler yapılmasına izin vererek bakım kesintilerini azaltabiliyor. Veritabanı yöneticileri, son kullanıcıların yapısal değişiklik yapılmakta olan tablolar üzerinde ekleme, güncelleme ve silme işlemleri yürütmelerini sağlayabiliyor. Oracle Database 12c ayrıca kullanıcılar arkadaki verilere erişmeye devam ederken veri dosyalarının taşınabilmesi (disk geçişlerinde işe yarar) ve bölmelerin taşınabilmesi (sıkıştırma işleminde işe yarar) özellikleriyle de geliyor.

>    Oracle Data Guard Enhancements *Fast Sync

Data Guard Far Sync, “sıfır veri kaybı” ile yedekli koruma özelliğini mesafeden bağımsız, gecikme süresinden etkilenmeyecek hale getiriyor.

*Single Command Role Transitions

Bu özellikle DataGuard rolleri konusunda değişiklik yapmak için önceki sürümlerdeki gibi birden fazla komut yerine tek bir ddl komutu sayesinde bu işlem gerçekleştirilebilir.

*Active Data Guard Far Sync

Disaster Recovery çözümünde çok aşama kaydeden Oracle, 12c ile birlikte Zero Data Loss (Sıfır veri kaybı) özelliği getirerek Primary veritabanı ile arasında çok uzun mesafeler olan Disaster ortamı arasına çok düşük kaynağa sahip ara bir sunucu kullanarak Veri kaybını sıfıra indirecek bir çözüm sundu. Buna göre Primary sunucu ile far sync sunucusu arasında senkron bir iletişim olacak ve primary deki bir transaction aynı anda ara sunucuya sync bir şekilde gidecek Far sunucuda bulunan Redo dosyaları asenkron bir şekilde compress edilerek Standby yada Disaster sunucusuna gönderilecektir.

>    RMAN Enhancements *Cross-Platform Backup and Restore

Oracle 12c den önceki sürümlerde Bir platformda bulunan database den alınan backup farklı bir platformda oluşturulan database e restore edilemiyordu. Yani IBM AIX platformunda bulunan bir Oracle veritabanından alınan bir full backup, Linux Redhat , HP-UX yada Sun Solaris ortamındaki bir database e Restore edilemiyordu. Buda kaynak planlama için sıkıntı teşkil ediyordu işte bu sürümde bu özellik nihayet geldi. Oracle 12c ile beraber alınan bir backup hangi platformdan alınırsa alınsın farklı bir platforma Restore edilebilecek.

BACKUP TO PLATFORM …

Alınan bu platform uyumlu backup ı restore etmek de aynı şekilde aşağıdaki gibi çok kolay olacaktır.

RESTORE FROM PLATFORM …

*DUPLICATE Enhancements

Bu özellik kurtarılmış bir klon veritabanının otomatik olarak açılmasını engeller ve böylece veritabanında istenilen ayarlar ve değişiklikler NOOPEN opsiyonunu kullanmadan önce yapılmış olur.

*Network-Enabled RESTORE

Oracle 12c’de restore işlemi network üzerinden yapılabilir.

*RMAN Command-Line Interface Enhancements

Oracle 12c’de RMAN üzerinden sql komutları çalıştırırken artık ‘SQL’ komutunun yazılmasına gerek yok.

SELECT, DESCRIBE fonksiyonları artık RMAN üzerinden de çalıştırılabilir.

*Storage Snapshot Optimization

Recover komutuna ait yeni bir keyword olan SNAPSHOT TIME ile istenilen bir zamana recover yapılabilir.

*Table-Level Recovery From Backups

Oracle 11g ye kadar 1 tablo yu tamamen yada veri bazlı kaybettiğiniz zaman ve bu kaybolan datayı Flashback ve Recycle bin den geri getiremiyorsanız tek bir şansınız kalıyor o da en son alınan full backup dan bu datayı dönmekti. Sadece kaybedilen ilgili tabloyu geri getirmek için ise Backup ünitesinden Full backup ın tamamını restore etmek gerekiyordu. Artık 12c ile kaybedilen bir tabloyu en son alınan full backup dan restore edebileceğiz.

Manageability

> Database Performance Tuning

* Enterprise Manager Database Express

Enterprise Manager Database Express 12c Oracle veritabanlarını yönetmek için web-arayüzlü bir araçtır. Enterprise Manager Database Express veritabanı tanılarını basitleştirip, performansa dair diğer verilerle birlikte ‘Performance Hub’ denen ekrana aktarır. Böylece DBA birçok veriyi tek bir ekran üzerinden gözlemleyebilir.

*PGA Size Limit

Bu özellik her oracle instance’ın ayırabileceği PGA(Program Global Area) miktarını PGA_AGGREGATE_LIMIT parametresini kullanarak sınırlamaya yarar. Bu limitin aşılması halinde ise herhangi bir instance devre dışı kalabilir.

*Real-Time Database Operations Monitoring

Gerçek zamanlı veritabanı işlemlerinin görüntülenmesi veritabanı yöneticilerinin uzun süreli işlemler esnasında sorunları tespit etmesi ve çözmesine olanak tanır.

*Spot ADDM

Spot ADDM veritabanı performans sorunlarıyla karşılaştığında ve bu sorunun nedenini bulmaya çalıştığında devreye giren yeni bir araçtır. Spot ADDM’yi devreye sokan sorunlardan bazıları aşırı işlemci yüklenmesi ve I/O problemleridir. Spot ADDM sonuçları AWR’de yer almaktadır.

>    Database Testing

*Mask At Source or Mask During Subset

Önemli bilgilerin üretim veritabanı dışında kullanımı amacıyla maskelenmesi için öncelikle üretim veritabanının kopyasının alınması ardından maskeleme yaparak test veya geliştirme ortamına sunulması gerekmekteydi. Kaynakta maskeleme ve subset oluşturulma esnasında maskeleme özelliği ise hem güvenlik önlemlerini artırırken bir yandan da oluşturulacak kopyanın boyutunu azaltmaktadır.Örneğin bu özellik sayesinde daha önce uygulama katmanında hallettiğimiz veri maskeleme işlemini Oracle 12c ile birlikte database katmanında hallediyoruz. Belirttiğimiz poliçelere göre mesela Anne kızlık soyadının 1 ve 3.harfini göster diğerlerini gösterme diyebiliyoruz bu işlemi Oracle 12c bizim yerimize yapıp direk uygulamaya cevap dönebiliyor.

>    General *Queryable Patch Inventory

DBMS_QOPATCH özelliğiyle Oracle Database 12c pl/sql veya sql bir arayüz sağlayarak hangi patch’lerin yüklenip yüklenmediğinin kontrolüne imkan sunmaktadır.

Bu özellik sayesinde kullanıcılar:

#    SQL*Plus üzerinden hangi patch’lerin kurulduğu görüntülenebilir.

#    Oracle RAC üzerindeki node’ların hepsinde tek tek log-on olmadan patch kontrolü yapılabilir.

Oracle RAC and Grid Infrastructure

#    Oracle Flex ASM

Oracle 11g ile hayatımıza giriş yapan ASM kavramı 12c ile birlikte yeni bir boyut kazandı. FLEX ASM ile birlikte Cluster durumundaki Bir çok sunucuda ASM instance ları ortak olarak cluster konfigürasyonunda çalışabilecek. Böylece herhangi bir sunucu down olduğu zaman ASM Instance sı failover olup diğer bir sunucuda ayağa kalkacaktır. Bu durumun en büyük faydalarından birisi de çoklu sunucunun bulunduğu bir Cluster sistemimizde az sayıda ASM instance sının kullanılacak olmasıdır. Ör: 5 Node luk bir Cluster da 3 tane ASM instance sı çalışıp önceki sürümlerden daha performanslı bir hizmet verebilecektir. Önceki sürümde 5 node luk bir Cluster da 5 tane de ASM instance sı bulunmak zorundaydı bu şekilde ASM instance sayısından da tasarruf edilebiliyor.

*Oracle ASM chown, chgrp, chmod and Open Files Support

Bu özellik ASMCMD’ye chown, chgrp, chmod gibi komutları etkilenecek dosyalar açıkken bile çalıştırma imkanı sunuyor.

*Oracle ASM Support ALTER DISKGROUP REPLACE USER

Bu özellik yeni bir sql ifadesi sunarak, ALTER DISKGROUP REPLACE USER, herhangi bir ORACLE ASM kullanıcısına ait kimlik bilgilerinin farklı işletim sistemlerine göre değiştirilebilmesini sağlıyor.

>    Oracle RAC Enhancements

*Support for IPv6 Based IP Addresses for Oracle RAC Client Connectivity Oracle 12c ile birlikte Oracle Rac için IPv6 desteği sağlandı.

Performance

>    Database Performance Enhancements *Advanced Network Compression

Oracle 12c’de getirilen yeni parametreler ile, SQLNET_COMPRESSION ve SQLNET.COMPRESSION_SCHEME_LIST , Oracle Net Services üzerinden istemci ve sunucu arasındaki taşıma sırasında sıkıştırma mümkün olabilmektedir. Sıkıştırma aşağıdaki kısımlarda yapılabilir:

#Bağlantı düzeyinde(url)

#Servis düzeyinde(tnsnames.ora,ldap.ora)

#Veritabanı düzeyinde(sqlnet.ora)

*Very Large Network Buffers

Oracle 12c ile birlikte daha büyük boyuttaki SDU(Session Data Unit) paketleri destekleniyor. SDU network içerisindeki buffer boyutunu belirleyen bir parametredir.

Security

*Auditing Enabled By Default

Oracle 12c ile birlikte ‘Auditing’ özelliği default hale getirildi.

*Data Guard Support for Separation of Duty (SoD)

Görevler ayrılığı mekanizması için Data Guard desteği getirildi. SYSDBA kullanıcısının yetkilerine ihtiyaç duymadan Data Guard Konfigürasyonu yapmak mümkün hale getirildi.

*Enhanced Security of Audit Data

Oracle 12c ile birlikte audit kayıtları önceki sürümlerden farklı olarak ‘insert-only’ bir tablespace içerisinde tutuluyor ve yönetimi sadece yeni getirilen AUDIT_ADMIN rolüne sahip kullanıcı tarafından yapılabiliyor.

*Increased Security When Using SELECT ANY DICTIONARY

Oracle 12c sürümünde SELECT ANY DICTIONARY ayrıcalığı güvenlik hassasiyeti bulunan DEFAULT_PWD$, ENC$, LINK$, USER$, USER_HISTORY$, XS$VERIFIERS tablolara erişime izin vermiyor.

*Last Login Time Information

Oracle 12c’de kullanıcıların son bağlantı zamanları USER$ adlı bir tabloda tutuluyor ve SQL*Plus ile bağlanıldığı vakit görüntülenebiliyor.

*SYSBACKUP Administration Privilege

Oracle 12c sürümünde yeni getirilen SYSBACKUP kullanıcısı ile SYSDBA yetkilerine ihtiyaç duyulmadan RMAN üzerinde çalışmalar yürütülebiliyor.

*SYSBACKUP Administration Privilege

SYSKM kullanıcısı ise Transparent Data Encryption operasyonlarında KEY management tipi işlemleri gerçekleştirmek için kullanılır.

Spatial and Graph

* Oracle Spatial and Graph Enhancements

In-Database Graph, işletmelere çeşitli veri noktaları ve veri setleri arasında grafikler ve bağlantılar oluşturma becerisi kazandırıyor. İşletmeler semantik analiz yöntemini kullanarak, örneğin müşterilerinin arkadaş çevresini dikkate alan bir ilişkiler ağını kolayca belirleyebiliyor. Bu ilişkilerin grafiklerle gösterilmesi satın alma trendlerinin ve müşteri kaybı nedenlerinin daha iyi anlaşılmasına yardımcı olabiliyor.

Oracle Database 12c işletmelere büyük hacimlerde veriyi depolayabilen ve yönetebilen bir veri ambarı platformu sunduğu gibi,kullanıcıların aşina oldukları SQL arayüzlerini veya R gibi istatistik platformlarını kullanarak basit sorgulardan karmaşık analizlere kadar her şeyi yürütebilmelerini sağlıyor. Kururluşlar, verileri sürekli veri ambarlarından veri marketlerine ve özel işlem sunucularına (örn. OLAP ve İstatistiki Analiz amaçlı olarak) taşımak yerine, gerek kurumsal verileri gerek büyük verileri kullanıcıların tüm Kurumsal Zeka ve Analiz ihtiyaçlarını destekleyen bir veri ambarında konsolide edebiliyorlar. Oracle Database 12c’nin veritabanı içi analiz becerileri ayrı işlem siloları bulundurma ihtiyacını ortadan kaldırıyor ve işletmelerin büyük verilerin sunduğu fırsatları daha iyi değerlendirmelerine yardımcı oluyor.

In-Database Spatial Integration, kullanıcıların coğrafi ilişki ve trendleri daha iyi anlamasını sağlıyor. Örneğin, konumsal veriler, bir müşterinin satın alma tarihçesi boyunca coğrafi konumunun nasıl değiştiğini anlamaya yardımcı oluyor; böylece geleneksel analize daha bilinçli kararlar alınmasına yardımcı olacak yeni bir açı kazandırıyor.

HAZIRLAYAN: EMRE ALBAYRAK

Full Rman Yedek Alma Scripti

Bu yazımda linux işletim sistemleri üzerinden rman scripti yazarak belirlediğimiz zaman dilimleri içerisinde oracle veritabanımızın full yedeğini almak üzere bir şeyler paylaşacağım.

Oracle kullanıcısının profile dosyasına ORACLE_SID ve ORACLE_HOME değerlerini yazıyoruz.

.bash_profile

export ORACLE_SID=orcl

export ORACLE_HOME=/oracle/app/oracle/product/11.2.0.4/db_home1

 

Oracle kullanıcısının altına dbscripts klasörü olusturup onun altına rman.sh dosyasını oluşturuyoruz.

#!/bin/bash

. /home/oracle/.bash_profile

rman target / nocatalog << EOF > /home/oracle/dbscripts/rman.log

run {

allocate channel c1 type disk;

allocate channel c2 type disk;

allocate channel c3 type disk;

allocate channel c4 type disk;

backup as compressed backupset archivelog all not backed up tag='ARCH';

backup as compressed backupset database tag='DATA';

backup current controlfile tag='CCF';

backup spfile tag='SPF';

release channel c1;

release channel c2;

release channel c3;

release channel c4;

}

exit

EOF