Oracle 12c – Rman ile Container/Pluggable Db’ lerin Backup’ ını Almak

Öncelikle nasıl ve hangi detayda backup alabiliyoruz, container ve pluggable database’ lerin backuplarını ayrı ayrı veya tek bir scriptte alabiliyormuyuz ona bakalım.

Konunun daha iyi anlaşılabilmesi için aşağıdaki senaryolar yardımıyla anlatmayı planlıyorum. Sık karşılaşılabilecek senaryoları eklemeye çalıştım;

• Full database backup
• Full pluggable database backup (veya tüm pluggable db’ lerin full backupını almak);
• Root database’ inin backupı
• Sadece archivelogların backupını almak için
• Bir pluggable database’ e ait olan tablespace’ in backupı ;
• Pluggable database’ e ait olan bir tablespace’ e ait datafile’ in backupını almak

Continue reading

Oracle 12c – Pluggable Database Nasıl Rename Edilir

Container database içerisinde oluşturulmuş olan pluggable database’ leri sonrasında rename etmek istersek nasıl yapabilirizi örnekle açıklamaya çalışalım.

Öncelikle container database’ e connect oluyoruz.

[oracle@Redhat70 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Thu Aug 20 13:46:09 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 – 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> select name from v$pdbs;

NAME
——————————
PDB$SEED
T1_PLUG1_DB
T1_PLUG2_DB
T1_PLUG3_DB

Bizim örneğimiz de T1_PLUG1_DB pluggable database’ inin ismini PLUG1_DB olarak güncellemeye çalışalım ;

İlgili pluggable database üzerinde çalışmak için ;
Continue reading

Oracle 12c New Features : Partial Indexes

Oracle 12c ile birlikte partition tablolarda “indexing off” ve “indexing partial” clause ile indexleri sadece istemiş olduğumuz partitionlar üzerine create edebiliriz. Oracle 12c öncesinde partition tablolarda index create ederken local veya global olmak üzere 2 farklı şekilde index create edebiliyorduk. Artık partial index create edebilir durumdayız. İndex create ederken indexing off opsiyonu ile index create etmek demek ilgili partition üzerinde index create etmemek anlamına gelmektedir.

Sadece ilgilendiğimiz partitiona index create etmek opsiyonunu ne işimize yarar diye düşündüğümüz de ilk aklıma gelen nedeni, çok büyük tabloları partitionladığınız da sadece üzerinde çalışacağınız partitionlara index create ederek zamandan ciddi tasarruf edebilirsiniz.

Her zamanki gibi bir örnekle durumu açıklamaya çalışalım.

Bir partition tablo create edelim;

===> CREATE TABLE kamil.test_range
(id NUMBER(10),
name varchar2(10),
create_date date)
PARTITION BY RANGE(create_date)
INTERVAL( NUMTODSINTERVAL(1,’DAY’))
(PARTITION P1 VALUES LESS THAN (TO_DATE(’01-01-2000′, ‘DD-MM-YYYY’)))
Table created.
Continue reading

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