Merhaba arkadaşlar,
Bu yazımızda Oracle 9i Release 2’ de gelmiş bir özellik olan ‘Proxy user authentication’ özelliğini kullanacağız. Peki Proxy user’a ne gibi durumlarda ihtiyaç duyarız.
Bir DBA olarak bir şema üzerinden Private Database Link oluşturmak & kaldırmak veya DBMS_JOB packagesi ile job ayarlamak istersek o kullanıcının şifresini bilmemiz gerekir. DBA olarak bu şifreyi bilmiyorsak burada yardımımıza "Proxy user" koşuyor.
Yazımız iki kısımdan oluşacak ilk kısımda proxy user kullanımını, ikinci kısımda ise şifresini bilmediğimiz bir kullanıcının sahip olduğu private database linki kaldıracağız.
1. PROXY USER KULLANIMI
Bir kullanıcı oluşturuyoruz.
SQL> CREATE USER DATA4TECH IDENTIFIED BY 1234;
User created.
Oluşturduğumuz kullanıcıya ‘HR’ vasıtasıyla bağlanma yetkisi veriyoruz.
SQL> ALTER USER HR GRANT CONNECT THROUGH DATA4TECH;
User altered.
Görüldüğü gibi oluşturduğumuz kullanıcıya ‘create session’ yetkisi vermediğimiz için bağlanamadı.
SQL> conn DATA4TECH/1234;
ERROR:
ORA-01045: user DATA4TECH lacks CREATE SESSION privilege; logon denied
Warning: You are no longer connected to ORACLE.
HR kullanıcısına oluşturduğumuz kullanıcı üzerinden bağlanabiliyoruz. (Create session yetkisini hala vermedik)
SQL> conn DATA4TECH[HR]/1234
Connected.
SQL> show user
USER is "HR"
Oluşturduğumuz kullanıcıya ‘Create Session’ yetkisi veriyoruz.
SQL> grant create session to DATA4TECH;
Grant succeeded.
SQL> conn data4tech/1234;
Connected.
SQL> show user
USER is "DATA4TECH"
"PROXY_USER" view'ını sorguluyoruz.
SQL> conn / as sysdba
Connected.
SQL> SELECT * FROM PROXY_USERS;
PROXY CLIENT AUT FLAGS
---------- ------- ---- -----------------------------------DATA4TECH HR NO PROXY MAY ACTIVATE ALL CLIENT ROLES
Proxy user yetkisini kaldırıyoruz.
SQL> ALTER USER HR REVOKE CONNECT THROUGH DATA4TECH;
User altered.
SQL> SELECT * FROM PROXY_USERS;
no rows selected.
ŞİFRESİNİ BİLMEDİĞİMİZ KULLANICININ PRİVATE DB LİNKİNİ KALDIRMAK
Bu örneğimizde şifresini bilmediğimiz bir kullanıcının ('HR') private database linkini kaldıracağız.
dba_db_links view’inden veritabanında bulunan database linklere bakıyoruz.
SQL> select owner,db_link from dba_db_links;
OWNER DB_LINK
----- ----------------------------
SYS SYS_HUB
HR DENEME
HR kullanıcısına ait olan database linki drop etmeye çalışıyoruz.
SQL> DROP DATABASE LINK DENEME;
DROP DATABASE LINK DENEME
*
ERROR at line 1:
ORA-02024: database link not found
Oluşturduğumuz kullanıcıya ‘HR’ vasıtasıyla bağlanma yetkisi veriyoruz.
SQL> ALTER USER HR GRANT CONNECT THROUGH DATA4TECH;
User altered.
Proxy user vasıtasıyla linki drop ediyoruz.
SQL> conn DATA4TECH[HR]/1234;
Connected.
SQL> show user
USER is "HR"
SQL> drop database link deneme;
Database link dropped.
View’dan linkleri tekrar kontrol ediyoruz.
SQL> select owner,db_link from dba_db_links;
OWNER DB_LINK
----- ----------------------------
SYS SYS_HUB
Görüldüğü gibi proxy user ile şifresini bilmediğimiz bir kullanıcının private database linkini kaldırabildik.
Gelecek yazılarda buluşmak üzere, Sağlıcakla kalın...
Comments