2011-12-15 35 views
0

我正在使用安全的应用程序角色授予用户访问权限。在它的最愚蠢的形式,它看起来就像是:安全的应用程序角色和SQL * Loader

create or replace package body main_user.PACK_SAR is 
procedure grant_role is 
begin 
    dbms_session.set_role('TEST_ROLE'); 
end; 
end PACK_SAR; 

程序包在authid current_user,因为它应该是。 的角色和用户配置如下:

create role test_role identified using pack_sar; 
grant select on task to test_role; 

create user test_user identified by a; 
grant create session to test_user; 
grant execute on pack_sar to test_user; 

然后我登录我test_user,调用程序,一切都很好:

execute main_user.pack_sar.grant_role; 
select * from main_user.task; 
[... data from the task table ...] 

但现在我想用我的测试用户使用使用SQL * Loader,所以我想我会做的程序调用在after logon触发:

create or replace trigger test_user.after_logon 
after logon on test_user.schema 
begin 
    main_user.pack_sar.grant_role; 
end; 

但这似乎并没有做任何事情,我没有登录后得到的角色...有没有办法做这样的事情?或者在SQL * Loader中使用安全的应用程序角色是不可能的?

在此先感谢您的任何想法。

回答