>

오류가 발생합니다 (ORA-01000의 발생이 다른 것에 비해 더 높음)-

<올>
  • ORA-01000 : 열린 커서의 최대 개수를 초과했습니다
  • ORA-00604 : 재귀 SQL 레벨 1에서 오류 발생
  • [ne.jdbc.spi.SqlExceptionHelper]-더 이상 소켓에서 읽을 데이터가 없습니다
  • 실행중인 코드 시나리오를 설명하려고합니다.

    <올>
  • 기본을 통과 한 레코드를 삭제하기 위해 DAO 계층에 대한 서비스 호출 키를 찾아 테이블에서 삭제합니다.

    @Transactional(value = "txManagerResult")
    public void deleteCalculatedLkmsEntities(final List<Long> chkdLkmsIds) {
        this.daoResult. deleteCalculatedLkmsEntitiesEnhanced(chkdLkmsIds);
    }
    
    
  • 4 개의 테이블에서 레코드를 삭제하는
  • DAO 방법 (부모 및 자식 포함) 데이터에 대한 관계이지만이 관계는 테이블에서 유지되지 않습니다. (예 : 외래 키 관계가 없음)

    private void deleteCalculatedLkmsEntitiesEnhanced(final List<Long> chkdLkmsIds) {
         // Order of the delete is must be maintained as below 
         // this will delete  around 100000 rows for 1000 primary key of parent table
         this.deleteEntitiesByPrimaryKeyList("delete from Child_Table_4 where CHKD_PRODUCT_OFFERING_ID in ( "
                       + " select ID from Child_Table_2 where CHKD_LKMS_ID in ( "
                       + "select ID from Parent_Table_1 where id in (:pid) "
                       + ") )"
                       , "pid",
                       chkdLkmsIds);
    // this will delete  around 100000 rows for 1000 primary key of parent table
         this.deleteEntitiesByPrimaryKeyList("delete from Child_Table_3 where CHKD_PRODUCT_OFFERING_ID in ( "
                       + " select ID from Child_Table_2 where CHKD_LKMS_ID in ( "
                       + "select ID from Parent_Table_1 where id in (:pid) "
                       + ") )"
                       , "pid",
                       chkdLkmsIds);
    // this will delete  around 300000 rows for 1000 primary key of parent table
         this.deleteEntitiesByPrimaryKeyList("delete from Child_Table_2 where CHKD_LKMS_ID in ( "
                       + "select ID from Parent_Table_1 where id in (:pid) )"
                       , "pid",
                       chkdLkmsIds);
         // this will delete around 1000 rows
         this.deleteEntitiesByPrimaryKeyList("delete from Parent_Table_1 where ID in (:pid)"
                       , "pid",
                       chkdLkmsIds);
    } 
    private void deleteEntitiesByPrimaryKeyListFromDB(final String query, final String parameter,
                final List<Long> idsToDelete) {
         this.entityManager.createNativeQuery(query)
         .setParameter(parameter, idsToDelete).executeUpdate();
       }
    
    
  • 서비스 메소드는 ForkJoinPool에서 관리하는 4 개의 병렬 스레드에 의해 호출됩니다.

    애플리케이션이 시작 되 자마자 오류가 나타나지 않지만 10 시간 이상의 코드 실행 후에 오류가 나타납니다. 위의 메소드는 주기적으로 스레드에 의해 계속 실행됩니다 (레코드 삭제). 이 프로세스는 9 백만 레코드 실행을 완료하기 위해 실행됩니다.

    도움을주세요.


  • 이전 javascript - div에 높이가 없어도 변환을 통한 전환이 공간을 차지하는 이유는 무엇입니까?
  • 다음 node.js - JSON Objet에서 문자열 속성을 읽는 방법