2013-01-09 3 views
1

oracle 감사 (11g 클러스터되지 않음)를 사용하는 Java/Hibernate/Spring 응용 프로그램을 사용할 수 있으며 올바르게 구성되어있는 것 같습니다.오라클 대량 삽입 누락 감사 항목

그러나 일부 항목은 SYS.AUD $에 기록되지 않습니다.

여기 내 시나리오입니다 :

I했습니다 최대 절전 모드의 showsql으로 표시되며, 실제로 DB에 기록하는 오라클 8 개 삽입을 수행하는 거래.

주어진 테이블에 대해 AUDIT INSERT RULE BY ACCESS가 있습니다. 주어진 트랜잭션에 대해 오라클 AUDIT에서 8 개의 감사 항목이 표시 될 것으로 예상되었지만 기록 된 기록은 4 개뿐입니다. 때때로 5 개의 항목이 기록되며 때로는 3 개의 항목이 기록됩니다.

이 동작은 hibernate.jdbc.batch_size 속성 값과 관련이 있다는 것을 알아 냈습니다. 나는 그러나 값을 0으로 변경하면 설명 된 시나리오에서

이 값은 모든 것이 예상대로 작동하고 난 항상 8 삽입 감사 로그를 얻을, JDBC 일괄 처리를 비활성화하는 10

로 설정했다.

ojdbc 드라이버에서 버그 일 수 있다고 생각했지만 최신 버전으로 업그레이드 한 후에도 버그가 지속되었습니다.

jdbc 배치 비활성화는 나를위한 옵션이 아닙니다. 그게 버그 야? 이것을 극복하는 방법에 대한 생각?

답변

1

직접 경로 INSERT와 관련 있다고 생각합니다. FGA를 사용한다면 직접 경로 INSERT가 발생하지 않으므로 감사가 항상 작동합니다. 직접 경로 INSERT 또는 감사 중 하나를 선택해야한다고 생각합니다.

왜 jdbc 일괄 처리가 필요합니까? 어떤 유형의 앱입니까? 이 기능을 사용하여 성능 테스트를 수행 했습니까?

+0

팁 주셔서 감사합니다. jdbc 배치 질문 : 정말 큰 웹 응용 프로그램이고 jdbc 일괄 처리 사용 여부를 알기 위해 모든 기능에 대한 성능 테스트를 수행 할 수 없습니다. 나는 사용하는 몇몇 장소를 알고 있으며, 성능상의 결함이 있습니다. –

+0

비활성화하는 방법을 찾을 수 없습니다. 쉬운 길을 아십니까? 직접 경로 INSERT에 대한 설명서를 읽은 후에도 ALTER DATABASE 강제 로깅을 실행합니다. 병렬 모드 (아직 알지 못함)로 실행 중이더라도 모든 명령문이 로깅 되었기 때문에 모든 오류가 계속 기록되기를 바랍니다.하지만 여전히 동일한 오류가 발생합니다. 힘들게 조금 더 열심히 파헤 칠 것입니다. –

+0

아니요, 오라클의 기본 동작을 재정의 할 수 없습니다. 두 가지 방법 (감사 및 직접 경로 삽입)을 사용할 수 없습니다. 하나 골라야 해. ... "성능상의 결함이 있습니다."어떻게 알 수 있습니까? 진짜 성능 테스트를 안했다고 생각했는데? 20 년 동안 DBA로 교육받은 추측입니다. 일괄 처리 5-10 행을 사용하면 앱에서 발견되지 않습니다. 물론, 알 수있는 유일한 방법은 그것을 테스트하는 것입니다. –