Oracle 12C de IDENTITY Kolonu Yaratmak

Merhabalar,

Bildiğiniz gibi Oracle 12C den önce veritabanlarında identity kolon u yoktu. Bunun için öncelikle bir sequence oluşturup, trigger ile bu sequence i arttırarak kolona yazıyorduk.
Örneğin bir tablo yaratalım:

CREATE TABLE Uyeler
(
ID  NUMBER,
AD VARCHAR2(50),
BOLUM VARCHAR2(20)
);

Tablo yarattıktan sonra ID alanını otomatik olarak arttırması için Sequence oluşturuyoruz.

 CREATE SEQUENCE Uyeler_SEQUENCE
START WITH 1
INCREMENT BY 1;

Şimdi tabloya girilen her yeni kayıt için otomatik olarak çalışacak trigger oluşturup, sequence değerini arttırarak ID alanına girilmesini sağlayacağız.

CREATE OR REPLACE TRIGGER Uyeler_TRIGGER
BEFORE INSERT ON Uyeler
FOR EACH ROW
BEGIN
SELECT Uyeler_SEQUENCE.nextval INTO :NEW. ID  FROM dual;
END;
/

Örnek olarak tabloya veri girelim.

SQL> INSERT INTO Uyeler(AD, BOLUM) VALUES ('Onur',’Veritabani’);
1 row created.
SQL> INSERT INTO Uyeler(AD, BOLUM) VALUES ('CINAR',’Yazilim’);
SQL> SELECT * FROM Uyeler;
ID AD      BOLUM
---------- ------------------------------
1 ONUR     Veritabani
2 CINAR    Yazilim

Gördüğünüz gibi ID alanı otomatik olarak trigger yardımıyla değerini sequence den alıyor. Oracle 12C ile birlikte IDENTITY özelliği geldi. Bu özelliği istediğimiz kolon a atayarak yukarıdaki işlemleri yapmadan otomatik olarak ID alanını arttırabiliriz.

Syntax:

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

CREATE TABLE Uyeler12C
(
ID NUMBER GENERATED BY DEFAULT AS IDENTITY,
AD VARCHAR2(50),
);

Yukarıdaki komutla birlikte artık bu tabloya gireceğimiz tüm verilerde ID alanı otomatik olarak artacaktır.

SQL> insert into Uyeler12C(AD) values ('Onur');
SQL> select * from Uyeler12C;
ID      AD
------- ----------
1 Onur

Oracle DB Konsola Manuel Olarak Database Vault u (/dva) Entegre Etmek

Merhabalar,

Bu yazımda Oracle Database Vault konsol ekranına ( https://hostname:port/dva ) bağlanmak için gerekli olan ayarları manuel olarak yapmaktan bahsedeceğim. Not: Aşağıdaki tüm komutlar Linux / Unix ortamında çalışmaktadır.

Bildiğiniz üzere Oracle Database vault konsolu da aynı Enterprise Manager gibi DB Konsol üzerinde çalışıyor. Buraya Database Vault u entegre etmek için öncelikle DB Konsolu kapatmamız gerekiyor.

  1. $ORACLE_HOME/bin klasörüne gidip, DB Konsol u kapatalım.
    cd $ORACLE_HOME/bin
    ./emctl stop dbconsole
  2. Değişiklik yapmadan önce dosyaların koyasını almamızda yarar var.
    cp $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_service_name/config/server.xml $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_service_name/config/server.xml.backup
  3. </application-server> elementini aşağıdaki gibi düzenleyin.
    vi $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_service_name/config/server.xml
    <application name="dva" path="$ORACLE_HOME/dv/jlib/dva_webapp.ear" parent="default" start="true" />

    Not: $ORACLE_HOME değişkeni yerine tam adresi yazmanız gerekiyor.

  4. Değişiklik yapmadan önce aşağıdaki dosyanın da yedeğini alın.
     cp $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_service_name/config/http-web-site.xml $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_service_name/config/http-web-site.xml.backup
  5. </web-site> elementini aşağıdaki gibi düzenleyin:
    <web-app application="dva" name="dva_webapp" load-on-startup="true" root="/dva" shared="true"/>
  6. Oracle Database Console yeniden başlatın.
    cd $ORACLE_HOME/bin 
    ./emctl start dbconsole

Oracle Database Vault Administrator konsoluna aşağıdaki URL den ulaşabilirsiniz:

https://hostname:port/dva

Eğer port numarasını hatırlamıyorsanız  ORACLE_HOME/host_sid/sysman/config/emd.properties dosyası içerisinde bulunan REPOSITORY_URL alanından öğrenebilirsiniz. Genellikle port numarası Oracle Enterprise Manager Database Konsol port numarasıyla aynıdır.

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