У нас есть несколько веб-служб, развернутых в Oracle WebLogic Servers, и основная ответственность этих служб заключается в вызове хранимых процедур и отправке этих данных клиентам , Стек технологии Услуг является:ORA-14552: не может выполнить DDL, совершить или откат внутри запроса или DML
- JAX-WS
- Spring Framework
- MyBatis
Службы получает подключения к базе данных из пула соединений, предлагаемых WebLogic. В течение нескольких месяцев Богослужения работает нормально, но это дни мы с следующей проблемой:
SERVER: WLSDesa_ManagedServer1 [DEBUG] [15-05-2013 12:23:03.897] (JakartaCommonsLoggingImpl.java:46) - ooo Using Connection [weblog[email protected]59bd]
SERVER: WLSDesa_ManagedServer1 [DEBUG] [15-05-2013 12:23:03.898] (JakartaCommonsLoggingImpl.java:46) - ==> Preparing: { call package.iOnlyDoASelect(?, ?) }
a.package.from.project.CommonException: org.springframework.jdbc.UncategorizedSQLException:
### Error querying database. Cause: java.sql.SQLException: ORA-14552: cannot perform a DDL, commit or rollback inside a query or DML
### The error may exist in a/package/from/the/project/ImAMyBatisMap.xml
### The error may involve a.package.from.the.project.ImADaoClass.invokeProcedure-Inline
### The error occurred while setting parameters
### SQL: { call package.iOnlyDoASelect( ?, ?) }
### Cause: java.sql.SQLException: ORA-14552: cannot perform a DDL, commit or rollback inside a query or DML
; uncategorized SQLException for SQL []; SQL state [72000]; error code [14552]; ORA-14552: cannot perform a DDL, commit or rollback inside a query or DML
; nested exception is java.sql.SQLException: ORA-14552: cannot perform a DDL, commit or rollback inside a query or DML
процедура является лишь Select
нескольких таблиц, и мы можем вызвать его из других приложений Java и базы данных клиентов нормально; и в Сервисе мы не используем явный код управления транзакциями. Проблема происходит спорадически и делает Сервис бесполезным. У нас есть перезапуск WebLogic Server или автоматическое отключение, а затем включение. Это происходит почти 5 раз в день.
Любые подсказки? Связан ли WebLogic, проблема с базой данных o это код веб-сервиса?
Зачем использовать auto commit? В общем, это не лучший способ работать с вашей базой данных. (делать что-то вроде аудита/протоколирования в рамках процедуры/функций, которые вы используете?) –
Является ли 'select' внутри пакета вызовом каких-либо функций, которые, возможно, были объявлены безопасными с помощью прагмы, но на самом деле делают то, что они не должны ? Звучит маловероятно из того, что вы сказали, но может быть прерывистым, если вызов находится в предложении 'where' и не всегда достигается. Также не думайте, что это вполне соответствует, но когда это происходит, вы получаете недавно созданное соединение из пула, и у вас есть триггер входа в систему, который совершает? (Сжатие на соломинках, ясно ...) –
@ik_zelf Мы используем конфигурацию по умолчанию для пула соединений, которая поставляется с WebSphere. Мы пытались исправить эту проблему с помощью автоматической фиксации. –