В базе данных 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 были разными)
Что может быть не так?Что проверить?Спасибо за ваши комментарии заранее.