2015-06-26 18 views
6

Belirli bir kullanıcı olarak çalışan bir plsql iş var ve bu kullanıcı iş tamamlanıncaya kadar belirli tablolara erişim vermek için bir hibe gerçekleştirmem gerekiyor. İş asla 30 dakikadan fazla sürmez.Sınırlı bir süre için GRANT Tablo İzinleri

Sorum şu ki, oracle'da, belirli bir kullanıcı için belirli bir süre için sınırlı bir süre için bir tabloya erişim hakkı var mı, yoksa yalnızca iş tamamlandıktan sonra ayrıcalıkları iptal etmek için başka bir işlev oluşturmalı mıyım? Birkaç hızlı arama yaptım ve bu konuda hiçbir şey bulamadım. Bunun mümkün olup olmadığını bilen var mı?

Eğer 30 dakika boyunca hibe yapabilsem harika olurdu.

+1

Oracle zamanlayıcıya bakın. – OTTA

+1

Sadece bu iş için özel bir kullanıcı oluşturmaya ne dersin? – ksa

+0

dbms_job veya dbms_scheduler kullanıyor musunuz? – tbone

cevap

-2

Burada, plsql içinde grantAccess() adında bir yöntem vardır. Bir kullanıcıya erişim izni verilen saniye sayısını vermenizi sağlar. Onlara bir yıl, diyelim erişim vermek istiyorsa

Yani, aşağıdaki yazardı: @ksa dan

rightSideUser.grantAccess(31536000) 
2

yorum, bu doğru cevaptır. Tam olarak gereken izinlere sahip yeni bir kullanıcı oluşturmanız ve bu şemayı bu şema üzerinde tanımlamanız gerekir. Bu yordamda, çalıştırmanız gereken rol veya kullanıcılara GRANT EXECUTE yapabilirsiniz. Varsayılan olsa da, açıkça AUTHID DEFINER'u da belirtebilirsiniz. Esasen bu, prosedürün kimin aradığı önemli değil, kesin olarak çalıştığı anlamına gelir. Herhangi bir zamanlama/zamanlama sorunundan kurtarır ve izinleriniz ardıllarınız için açıktır. Her aramada şemayı belirtmekten hoşlanmıyorsanız, bir eşanlamlı tanımlayabilirsiniz.

İlgili konular