Возможно, проблема в том, что вы пытаетесь перегрузить не оператор "< <", а оператор "< < <>"
Из файла .h замените [ 113]
friend std::ostream &operator<< <>(std::ostream &os, messageTemplate<A> &aTemplate);
с
friend std::ostream &operator<< (std::ostream &os, messageTemplate<A> &aTemplate);
Смотрите в таблицу DBA_AUDIT_EXISTS, когда аудит будет включен для Oracle. Я полагаю, что Oracle может обеспечить очень подробный аудит, который можно просто включить и прочь когда Вам нравится через команды DB, хотя я не помню то, что они первое, что пришло на ум.
См.: http://docs.oracle.com/cd/B19306_01/network.102/b14266/cfgaudit.htm
для некоторой идеи (который я просто быстро погуглил для),
Это - то, что я делаю, извинения тому, из кого бы ни это первоначально прибыло, я знаю, что взял его с некоторого веб-сайта, но не могу помнить где прямо сейчас.
В подготовке производства у меня есть это
create table caught_errors (
dt date,
username varchar2( 30), -- value from ora_login_user
msg varchar2(2000),
stmt varchar2(2000)
);
create or replace trigger catch_errors
after servererror on database
declare
sql_text ora_name_list_t;
msg_ varchar2(2000) := null;
stmt_ varchar2(2000) := null;
begin
for depth in 1 .. ora_server_error_depth loop
msg_ := msg_ || ora_server_error_msg(depth);
end loop;
for i in 1 .. ora_sql_txt(sql_text) loop
stmt_ := stmt_ || sql_text(i);
end loop;
insert into
caught_errors (dt , username ,msg ,stmt )
values (sysdate, ora_login_user,msg_,stmt_);
end;
/
Любое время servererror брошено, ее пойманный и зарегистрированный к таблице, я могу затем проверить, что таблица, чтобы найти незаконные запросы и возместить их по мере необходимости для наблюдения недостающей таблицы (при выполнении запроса в sqlplus она скажет Вам таблицу),
Отметьте, да, существуют проблемы с этим, например, что, если caught_errors отбрасывается, или повышает саму ошибку, Вы могли бы получить рекурсивный цикл, следовательно почему это только существует в подготовке производства.
Я не думаю, что здесь существует чудодейственное средство. Это может быть недостающая таблица или имя таблицы с орфографической ошибкой в запросе. Это может быть проблема полномочия. Вы не можете действительно сказать, не выполняя запрос
Я предлагаю, чтобы Вы шли вперед и оснастили свой код таким способом, которым можно включить и выключить его. Выполните его, извлеките запрос и отправьте его к Вашему DBA для разрешения.