Oracle 12c – Multi threaded Model

Linux ve Unix tabanlı işletim sistemleri process based tabanlı çalışan işletim sistemleridir. Process based tabanlı işletim sistemlerinde her bir iş için işletim sistemi tarafında bir process create edilir. Şimdiye kadar da bu yapıyı oracle’ ın tüm sürümlerinde bu şekilde kullandık. Bu yapıyı kullanıyor olmanın bir takım avantajları ve dezavantajları bulıunmaktadır. Örneğin oracle tarafında processlerin sayısı artmaya başladığı zaman, (database de her bir processe karşılık gelen bir OS procesesi olacağından dolayı) prosess sayılarının çokluğundan dolayı performans problemleri ile karşılaşma ihtimalimide artmaktadır. Defaultta oracle 12c ile de aynı yapı ile geliyor. Ancak burada istersek bir parametre değişikliği ile process based tabanlı yapıdan thread based tabanlı yapıya geçebiliriz. Multithred yapı ile anlatılmak istenen her bir process aslında bir thread altında çalışıyor. Buda OS tarafında kaynakların daha verimli kullanılmasını sağlıyor.

Process based yapıda normalde oracle processlerinin nasıl izlendiğine ve kaç adet olduğuna bakalım ;

[oracle@Redhat70 admin]$ ps -ef|grep -v grep|grep ora_ ; ps -ef|grep -v grep|grep ora_ | wc -l
oracle 25240 1 0 23:26 ? 00:00:00 /u01/sq/ora_3/oracle/db/12.1.0.2/bin/tnslsnr listener_12c -inherit
oracle 25908 1 0 23:35 ? 00:00:00 ora_pmon_t1
oracle 25912 1 0 23:35 ? 00:00:00 ora_psp0_t1
oracle 25916 1 1 23:35 ? 00:00:00 ora_vktm_t1
oracle 25922 1 0 23:35 ? 00:00:00 ora_gen0_t1
oracle 25926 1 0 23:35 ? 00:00:00 ora_mman_t1
oracle 25934 1 0 23:35 ? 00:00:00 ora_diag_t1
oracle 25938 1 0 23:35 ? 00:00:00 ora_dbrm_t1
oracle 25942 1 0 23:35 ? 00:00:00 ora_vkrm_t1
oracle 25946 1 0 23:35 ? 00:00:00 ora_dia0_t1
oracle 25950 1 0 23:35 ? 00:00:00 ora_dbw0_t1
oracle 25954 1 0 23:35 ? 00:00:00 ora_dbw1_t1
Continue reading

ORA-00060: Deadlock detected

Ora-00060 deadlock hatası 2 veya daha sessionın aynı data setine lock koyması yapmaya çalışması aynı zamanda diğer sessionlardan da lock requestleri gelmesi sonucunda olayın dairesel bir hal alması durumunda ortaya çıkay durum olarak tanımlayabiliriz. Oracle deadlock hatasına internal olarak müdahale ederek kullanıcıya “ORA-00060: deadlock detected while waiting for resource” hatasını dönerek kiliti kendisi çözmektedir.

Bu yazı ile anlatmak istediğim tam olarak şu aslında, aşağıda ben test senaryosu oluşturmaya çalışırken çok basit bir şekilde 2 tane farklı session açarak senaryomu oluşturdum. Ancak concurrent olarak yüzlerce sessionın olduğu büyük yapıları düşündüğünüz de sorunun kaynağını tespit etmek çok da kolay olamayabiliyor. Dolayısıyla tamda bu nokta da işimizi nasıl kolaylaştırabiliriz ondan bahsediyor olacağım.

Aşağıdaki gibi bir deadlock durumu oluşturmadan önce, aşağıdaki event’ ı set ederek sonucunu gözlemleyelim ve üzerinde konuşalım;

SQL> ALTER SYSTEM SET EVENTS ‘10027 trace name context forever, level 2’;
System altered.
Continue reading

Oracle 12c Olan Bir Database’ i Rman Cataloga Eklemek

11g ve daha önceki versiyonalrda database’ lerin backuplarını almak için rman catalog database’ ini kullandığımız yapılarda, rman catalog database’ inde aşağıdaki gibi user oluşturup resource, connect,recovery_catalog_owner yetkilerini de verdiğimi de production tarafından catalog database’ ine bağlanıp sorunsuzca catalog create edip sonrasında da register edebiliyorduk. Ancak 12c ile birlikte bu işlemler ile catalog database’ inde create catalog komutunu çalıştırdığımız da aşağıdaki gibi bir hata aldık ;

— rman catalog database’ inde user create işlemi ;

create user tdb default tablespace users identified by password ;
grant resource, connect,recovery_catalog_owner to tdb ;

Backupını almak istediğimiz sunucu üzerinden catalog database’ ine bağlanıp catalog create etmeye çalıştığımız da ;

[oracle@Redhat70 admin]$ rman target / catalog tdb/Password1@RMAN_CATALOG
Recovery Manager: Release 12.1.0.2.0 – Production on Wed May 20 11:30:50 2015
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.

connected to target database: TDB (DBID=3761906654)
connected to recovery catalog database

RMAN> create catalog ;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-07539: insufficient privileges to create or upgrade the catalog schema
Continue reading