Eu tenho um usuário no banco de dados Oracle 12c que será usado para executar exportação e importação de bomba de dados completa. Gostaria de restringir logons desse usuário para localhost.
Eu tentei criar o gatilho de logon:
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;
/
Eu posso ver na trilha de auditoria que esse gatilho foi acionado (ORA-20000: Login não permitido), mas o usuário ainda tem permissão para fazer logon do host remoto.
Essa restrição funciona para usuários normais, mas não para o usuário da bomba de dados. Eu suspeito que isso tenha algo a ver com as funções exp_full_database e imp_full_database.
Existe alguma maneira de fazer esse gatilho funcionar ou devo usar a autenticação do sistema operacional local?
ADMINISTER DATABASE TRIGGER Privilégio faz com que o gatilho de logon ignore erros (Doc ID 265012.1)
E:
Então, sim, você pode tentar a autenticação do sistema operacional local.