Change Font Size

Change Screens

Change Profile

Change Layouts

Change Direction

Change Menu Styles

Cpanel
Çarşamba, 27 Ekim 2010 13:02

Kullanıcının Kendi Schemasındaki Objeleri Silmesini Engellemek

Yazan&Gönderen  Yusuf Arslan
Bu Öğeyi Derecelendir
(0 Oylar)

Bir Oracle kullanıcısı kendi schemasındaki objeleri her zaman silme hakkına sahiptir. Örneğin şemasındaki bir TABLE’ı, DROP TABLE yetkisi olmasa bile silebilir. Özellikle tek schema üzerinde geliştirilmiş uygulamalar ile çalışırken, yaratılmış olan objlerin silinebilmesini engellemek gerekebilir. Böyle bir durumda yapılması gereken bir Database Trigger’ı yaratmaktır.
HR kullanıcısının kendi schemasındaki tabloları silmesini engellemek istediğimizi varsayalım. Bunu engellemek için şöyle bir trigger yazabiliriz:
CREATE OR REPLACE TRIGGER trigger_drop_engeli BEFORE DROP ON DATABASE
BEGIN
IF ora_dict_obj_type = ‘TABLE’ THEN
IF ora_dict_obj_owner = ‘HR’ AND ora_login_user = ‘HR’ THEN
raise_application_error (-20000, ’TABLOYU DROP EDEMEZSINIZ’);
END IF;
END IF;
END;
HR kullanıcısı kendi schemasında bir tablo silmeye kalktığında ORA-20000 hatası (ve beraberinde Oracle’ın verdiği bir iki internal hata) alacak ve işlemi tamamlayamayacaktır. Örnekte de görüldüğü üzere database trigger’ında kullanabileceğimiz bazı pseudo değişkenler var. Konuyla ilgili olanlar şunlar:
ORA_DICT_OBJ_NAME: Üzerinde işlem yapılan objenin ismi.
ORA_DICT_OBJ_OWNER: Üzerinde işlem yapılan objenin sahibi (schema adı).
ORA_LOGIN_USER: İşlemi yapmak isteyen kullanıcı.
ORA_DICT_OBJ_TYPE: İşlem yapılacak objenin tipi (TABLE, INDEX vs).
ORA_SYSEVENT: Yapılmak istenilen işlem (eğer yazılan trigger birden fazla işlemde çalışacak ise). Örneğimizde bu hep ‘DROP’ olacaktır

Son Düzenleme Cuma, 10 Aralık 2010 12:20
Yusuf Arslan

Yusuf Arslan

Oracle Open Source

1985 Tokat/Reşadiye doğumluyum.İlk-orta-lise hayatını Amasya/Suluova ilçesinde geçirdim.Sakarya Üniversitesi Bilgisayar Mühendisliği bölümünü bitirdikten sonra kariyerime Oracle,SAP alanlarında danışmanlık vermek üzere devam etmekteyim. Kullandığım,bildiğim teknolojiler ve diller; SAP BO Oracle BI Applications Oracle Data Mining Oracle BI Reports(http://www.iski.gov.tr/web/statik.aspx?KID=1000717) Oracle Data Integrator Oracle BI Publisher(XML Publisher) Oracle Database 10g Oracle Mapviewer PL/SQL,Java,Oracle JDeveloper,Oracle Forms-Reports,C# Data warehouse process optimization Database system implementation Using encoding for security systems Software development, test and deployment Presentation and communication skills Bu adreslerden de bana ulaşabilirsiniz, [email protected] https://datawarehouse.gen.tr/ http://www.arslanyusuf.blogspot.com/ http://yusufarslaneng.blogspot.com/ http://twitter.com/yusars http://tr.linkedin.com/pub/yusuf-arslan/27/35b/57b

Website: arslanyusuf.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

Make sure you enter the (*) required information where indicated.
Basic HTML code is allowed.

You are here Kategoriler Oracle Kullanıcının Kendi Schemasındaki Objeleri Silmesini Engellemek