Procedure İçerisinden Dictionary Viewlere Erişim

Oracle db içerisinde procedure oluşturup scheduler job içerisinden çağırıldığı durumlarda yetki hatası ile karşılaşılabilir. (Eğer procedure içerisinden v$session gibi dictionary viewlere select çekiliyorsa)

Procedure içerisinden dictionary objelere ulaşmak istiyorsanız aşağıdaki yetkinin ilgili kullanıcıya tanımlanması gerekmektedir.

Kullanıcı DBA rolüne sahip olsa bile bu yetkilerin verilmesi gerekmektedir.

Continue reading Procedure İçerisinden Dictionary Viewlere Erişim

Oracle Snapshot Standby Oluşturma

Oracle’nin flashback teknolojisi sayesinde pyhsical standby olarak ayarlanmış db lerin read/write modda açmak mümkün. Bilindiği üzere pyhsical standby db leri en fazla read only modda açıp sadece select komutlarını çalıştırabilir konuma getirebiliriz. Bu durumda varolan data üzerinde herhangi bir değişikliğe izin verilmeyecektir.

Snapshot standby olarak ayarlanan bir physical standby db; read/write moda geçerek production makinesinin o andaki verileri üzerinde istenilen tüm islemleri yapmayı mümkün kılacaktır.

Örneğin t anında snyc olan bir pyhsical standby dbsi snapshot standby durumuna alındığında t1 anında production makinesinde yapılan bir değişiklik standby tarafında görünmeyecektir.

Continue reading Oracle Snapshot Standby Oluşturma

Tablespace İçerisindeki Objelerin Taşınması

Tablespace içerisinden büyük objelerin silinmesi durumunda disk üzerinde alan kazanımı olmadığı için tablespace’i recreate etme yoluna gidebiliriz. Bu durumda diskten alan kazanmanın yanında tablespace içerisinde bulunan objeler defragmente olup db üzerinde performans artışlarını beraberinde getirecektir. Tablespaceyi recreate etmenin aşamaları şu şekildedir:

  1. Yeni tablespace create etmek (bundan sonra TS_DATA_NEW olarak adlandırılacaktır)
  2. default_tablespace’i TS_DATA olan schemaların alter edilmesi ve gerekli quota ayarlarının yapılması.
  3. Varolan tablespace (TS_DATA olarak adlandırılacaktır) içerisindeki tüm objelerin move edilmesi.
    1. Tablo partition ve subpartitionların taşınması
    2. Lobların taşınması
    3. Lob partitionların taşınması
    4. İndexlerin taşınması
    5. Partitionlu indexlerin taşınması
  4. TS_DATA’yı offline konumuna almak
  5. Gerekli olması durumunda modify default attributes yapmak
  6. TS_DATA’yı drop etmek
  7. TS_DATA_NEW’i rename edip TS_DATA olarak değiştirmek.
  8. İndexlerin kontrolü
Continue reading Tablespace İçerisindeki Objelerin Taşınması

Resource Privileges in Oracle Database

If doesn’t have resource privileges, Doesn’t create the following objects:

SQL> select privilege from dba_sys_privs where grantee='RESOURCE';

CREATE TABLE
CREATE TYPE
CREATE TRIGGER
CREATE CLUSTER
CREATE SEQUENCE
CREATE OPERATOR
CREATE PROCEDURE
CREATE INDEXTYPE

Also we have unlimited tablespace within resource role.  Continue reading Resource Privileges in Oracle Database

Catalog Upgrade Sonrası ORA-15204 Hatası

Oracle database upgrade işleminin ardından RMAN ile backup alınırken ASM disk grupları ile Database versiyonunun uyuşmamasından ORA-15204 hatası alınabilir.

Database üzerinden compatible sürümü aşağıdaki gibi kontrol edilir. 

Continue reading Catalog Upgrade Sonrası ORA-15204 Hatası

Long Tipi Kolonu Olan Tabloların Taşınması

Oracle db’de bir şemanın tablolarını db link ile başka bir db’ye yere aktarmam gerekiyordu. Bu işlemi yaparken long tipi kolonu olan bir tablonun bu yöntemle aktarılmadığını fark ettim.

Long tipi kolonu olan tabloyu aktarmak için sadece o tabloyu export import yapmak gerekiyor.

Bu örnekte HR şemasından export ettiğim tabloyu EMRAH şemasına import edeceğim.  Continue reading Long Tipi Kolonu Olan Tabloların Taşınması

Oracle Database 12c: Görünmez Kolonlar (Invisible Columns)

Oracle 12c ile gelen güzel özelliklerden biri; tablo içindeki kolonlar görünmez (invisible) duruma getirile bilmektedir. İnvisible durumuna getirilen bir kolon select sorgularında görünmez. İnsert veya update komutlarında kullanıla bilir.

Yeni bir tablo oluştururken tablo kolonlarının visible/invisible yapılması:

CREATE TABLE table_name(
  columna NUMBER,
  columnb NUMBER,
  columnc NUMBER [VISIBLE/INVISIBLE]
);

Varolan tablo kolonunun visible/invisible yapılması:  Continue reading Oracle Database 12c: Görünmez Kolonlar (Invisible Columns)

Oracle Veritabanında DDL Komutlarının Denetimi

Oracle veritabanında çalıştırılan DDL komutlarını kolay bir şekilde denetlemek mümkün. Çalıştırılan DDL komutlarını yakalamak için ENABLE_DDL_LOGGING parametresinin TRUE yapılması gerekmektedir. Default değeri FALSE’dir. Aktif hale getirmek için aşağıdaki komutu çalıştırmalısınız.

 SQL> alter system set enable_ddl_logging = true;

ENABLE_DDL_LOGGING dinamik yapıda bir parametredir. Değeri değiştirmek için veritabanını kapatmaya gerek yoktur.   Continue reading Oracle Veritabanında DDL Komutlarının Denetimi

Oracle Veritabanı Archive Log Modu

Oracle veritabanındaki redo logları arşivleyen sistemdir. Arcihive log’un kullanılmadığı bir sistemde herhangi bir çökme olması durumunda sadece alınan backuba geri dönülebilir. Çalışma şekli aşağıdaki gibidir.

Örneğin gece bir backup alındı, öğlen vakitlerinde sistemde problem olduğunda dün geceden öğle vaktine kadar yapılan değişiklikler yok olur ve sadece dün geceye dönülebilir. Bu sistemde archive log kullanılsaydı dün gecenin backubunu yükleyip geri kalan veriler arşivlenen loglardan işlenebilirdi.

Mevcut veritabanının archive log modunda mı olduğuna aşağıdaki şekilde bakılabilir.  Continue reading Oracle Veritabanı Archive Log Modu