Change Font Size

Change Screens

Change Profile

Change Layouts

Change Direction

Change Menu Styles

Cpanel
Çarşamba, 09 Şubat 2011 10:37

Kullanıcı Hesabını Package Yardımı İle Açma – Kapatma

Yazan&Gönderen  Kamil TURKYILMAZ
Bu Öğeyi Derecelendir
(3 Oylar)
Merhaba Arkadaşlar,

Öncelikle başlığı okudukdan sonra şöyle bir soru sorulabilir, alter user XXXX account lock / unlock ile zaten bu işlemi yapıyoruz. Neden bunu bir package aracılığı ile yapmak isteyeyimki diye düşünebilirsiniz, Evet bu işlemi yapacak olan kullanıcıya Alter User yetkisini vermek için önünüzde bir engel yoksa böyle bir package’ a da ihtiyacınız yok demektir. Ancak BDDK denetimine tabi olan kurumlarda bu tarz yetkilerin kullanıcılarda olmasına pek izin verilmiyor (dba’ ler hariç tabiki) Hal böyle bu işlemi yapacak olan kullanıcıya sadece aşağıdaki package için execute yetkisi vermeniz yeterli oluyor. Package kısaca şunu yapıyor benim belirlemiş olduğum kullanıcıların accountlarının durumlarını değiştirme yetkisi veriyor. Özetle bu aslında, şimdi create edip bir örnek yapalım ;
CREATE OR REPLACE procedure kamil.UserLockUnlock(pUserName in varchar2, pLockUnlock in varchar2)
is
icount          pls_integer;
BEGIN
select count(*) into icount
from dba_users
where username = upper(pusername);
if (icount > 0)then
if  upper(substr(pUserName,1,4)) = 'USER' or upper(substr(pUserName,1,6)) = 'GECICI' Then
if upper(plockUnlock) = 'L' Then
execute immediate 'alter user ' || pUserName || ' account lock';
dbms_output.put_line('Kullanıcı Hesabı Kilitlendi.');
elsif upper(plockUnlock) = 'U' Then
execute immediate 'alter user ' || pUserName || ' account unlock';
dbms_output.put_line('Kullanıcı Hesabı Açıldı.');
else
raise_application_error( -20001, 'Kullanıcıyı Açmak için U , Kilitlemek için L girmelisiniz!');
end if;
Else
raise_application_error( -20001, 'Bu kullanıcı için yetkiniz yoktur!');
end if;
else
raise_application_error( -20001, 'Kullanıcı mevcut değil!');
end if;
END;
/
Package’ ımızın ismi kamil.UserLockUnlock ve bu package 2 tane değişkenle call ediyoruz.
Birincisi üzerinde işlem yapacağımız USERNAME bilgisi diğeri ise yapmak istediğimiz işlemin ne olduğu, accountu açacakmıyız, kapatacakmıyız.  Bizim örneğimizde kullanıcı ismi USER ve GECICI ile başlayan kullanıcı adlarında sadece işlem yapılabilinir.  Bunun dışındaki userlar için işlem yapılmak istenirse, hata dönecektir. Yapılacak olan işlemin type’ ları içinse “L” gönderilirse LOCK, “U” gönderilirse “UNLOCK” işlemi yapılacaktır.  Örneğin USER_OZSOY  kullanıcısın accountunu lock yapmak istersek ;
begin
kamil.LockUnlockUser('USER_OZSOY','L');
end;
USER_OZSOY hesabını unlock etmek istersek de ;
begin
kamil.LockUnlockUser('TEMP_OZSOY','U');
end;
komutlarını çalıştırmamız yeterli olacaktır.
Son Düzenleme Çarşamba, 09 Şubat 2011 12:44
Kamil TURKYILMAZ

Kamil TURKYILMAZ

1979  Tokat/Zile doğumluyum. Yıldız Teknik Üniversitesi 1997 – 2001 mezunuyum ancak 1998 yılından itibaren  IT sektöründe, 2000 yılından bu yanada Oracle üzerine çalışmaktayım. 2005 yılına kadar oracle database’i üzerine yazılmış olan kimi uygulamalara software support  hizmeti, son 6 yıl ise oracle veritabanı yöneticiliği olmak üzere yaklaşık 11 yıldır sektör içerisindeyim. Oracle’ ın hemen hemen tüm ürünlerinin kurulumu, konfigurasyonu, yönetimi konusundaki çalışmalarıma devam etmekteyim. Son 2 yıldır da özel bir bankada oracle dba olarak çalışmaktayım. Aynı zamanda kimi bilişim sitelerinde yazarlık yapıyorum, bunun yanısıra bu alandaki deneyim ve tecrübelerimi daha fazla kişiyle paylaşabilmek adına bir de oracle blog  yazarıyım.

Website: kamilturkyilmaz.blogspot.com E-posta: Bu e-Posta adresi istek dışı postalardan korunmaktadır, görüntülüyebilmek için JavaScript etkinleştirilmelidir

Yorum yaz

Yorumlarınızı aşağıdaki alana belirtebilirsiniz.

You are here Kategoriler ORACLE Kullanıcı Hesabını Package Yardımı İle Açma – Kapatma