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.

-- Tüm dictionary viewlere erişim yetkisi için
SQL> grant select any dictionary to dbuser;
-- Aşağıdaki şekilde de tanımlayabiliriz
SQL> grant select on v_$session to dbuser;
SQL> grant select_catalog_role to dbuser;

Oracle Snapshot Standby Oluşturmak

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.

Önemli Not 1: Snapshot standby moduna alınacak db nin flashback özelliğinin açık olması gerekmektedir.

Önemli Not 2: Production db üzerinde snapshot özelliğini açmadan önce mutlaka db nin kapatılıp tekrar açılması gerekmektedir. Aksi taktirde oracle data tutarlılığı konusunda garanti vermemektedir.

Önemli Not 3: Bu özellik sadece Oracle Database Enterprise Edition sürümlerinde desteklenmektedir.

Önemlii Not 4: Flashback dosyalarının nereye oluşturulacağı kontrolü ve belirtilen dizinin doluluk oranının db_recovery_file_dest_size parametresinden düşük olduğundan mutlaka emin olun.

Pyhsical standby db nin flashback özelliği açık olmayabilir. Snapshot moduna alınacak db nin flashback özelliğinin açılmasının gözden kaçmaması adına aşağıdaki komutlara eklenmiştir.

SQL> select open_mode,database_role,flashback_on from v$database;

Result:
open_mode database_role flashback_on
MOUNT PHYSICAL STANDBY NO

Pyhsical standby dan snapshot standy moduna almak için aşamalar aşağıdaki şekildedir. Aşamaları sırayla uygulayarak pyhsical standby db yi read/write moda alabilirsiniz.

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE FLASHBACK ON;
SQL> ALTER DATABASE CONVERT TO SNAPSHOT STANDBY;
SQL> ALTER DATABASE OPEN;

Aşamalar sırasıyla yapıldığı taktirde db read/write modda açılacaktır.

SQL> select open_mode,database_role,flashback_on from v$database;

Result:
open_mode database_role flashback_on
READ/WRITE SNAPSHOT STANDBY YES

Snapshot standby olarak ayarlanmış bir db nin tekrar physical standby’a çevirilmesi durumunda aşağıdaki adımları takip edebilirsiniz.

SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY; 
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE FLASHBACK OFF;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
SQL> select open_mode,database_role,flashback_on from v$database;

Result:
open_mode database_role flashback_on
MOUNT PHYSICAL STANDBY NO