Oracle Trigger не запускается, когда событие инициируется приложением Java с помощью JDBCTemplate.execute () - PullRequest
0 голосов
/ 24 октября 2018

В базе данных Oracle 11g (11.2.0.1.0, 64-битная) я создал триггер схемы в схеме USER_A следующим образом:

CREATE OR REPLACE TRIGGER TR1
AFTER CREATE ON SCHEMA
DECLARE
V_JOB  NUMBER;
V_TODO VARCHAR2(4000);
BEGIN

IF ORA_SYSEVENT = 'CREATE' AND ORA_DICT_OBJ_TYPE IN ( 'TABLE', 'VIEW' ) THEN

V_TODO := 'GRANT SELECT ON ' || ORA_DICT_OBJ_OWNER || '.' || ORA_DICT_OBJ_NAME || ' TO USER_B';

DBMS_JOB.SUBMIT(JOB=>V_JOB, WHAT=>V_TODO);

END IF;

END;

Когда я тестирую его в PLSQL Developer, он работает нормально.(Войдите в систему с помощью USER_A, создайте таблицу, активируйте триггер, и USER_B получит значение pirivilege для только что созданной таблицы.)

Когда приложение Java входит в систему с помощью USER_A и создает таблицу (используя JDBCTemplate.execute (...)и тонкий клиент JDBC), затем триггер не запускается.

Я проверил параметры userenv SYS_CONTEXT в обоих случаях, чтобы обнаружить любые различия, которые могут привести к разным результатам.Но я не нашел никаких подозрений.(HOST, IP_ADDRESS, LANG, LANGUAGE, MODULE, параметры NLS, OS_USER, SESSIONID, SID, TERMINAL были разными)

Что может быть не так?Что проверить?Спасибо за ваши комментарии заранее.

...