我在 Oracle 12c 数据库中有一个用户将用于运行完整的数据泵导出和导入。我想限制从该用户登录到本地主机。
我试图创建登录触发器:
create or replace trigger logon_trigger
after logon on database
declare
host varchar2(50);
begin
host := trim(lower(sys_context('USERENV', 'HOST')));
if lower(user) = '<data pump user>' then
if host <> '<hostname>' then
raise_application_error(-20000, 'Login not allowed');
end if;
end if;
end;
/
我可以从审计跟踪中看到此触发器已触发(ORA-20000:不允许登录),但仍允许用户从远程主机登录。
此限制适用于普通用户,但不适用于数据泵用户。我怀疑这与角色 exp_full_database 和 imp_full_database 有关。
有什么方法可以使这个触发器工作,还是我应该使用本地操作系统身份验证?
ADMINISTER DATABASE TRIGGER 特权导致登录触发器跳过错误(文档 ID 265012.1)
和:
所以是的,您可以尝试本地操作系统身份验证。