![[z/OS]](../images/ngzos.gif)
DB2와 사용하기 위한 JDBC 조정 팁
WebSphere® Application Server는 성능 개선 기능으로 JDBC 준비된 명령문 캐싱을 사용합니다. 이 기능을 DB2® for z/OS®와 함께 사용하려면, 사용 가능한 DB2 JDBC 커서 오브젝트의 수에 잠재적으로 영향을 줄 수 있다는 점에 유의하십시오.
DB2 for OS/390 JDBC 커서 오브젝트에서 준비된 명령문 캐싱 효과
PreparedStatement 오브젝트를 실행하여 ResultSet 오브젝트를 얻는 경우, DB2 JDBC 커서 오브젝트는 해당 DB2 준비된 명령문이 종료될 때까지 바인드됩니다. DB2 Connection 오브젝트가 WebSphere Application Server 연결 풀로부터 릴리스되는 경우 발생합니다. 애플리케이션의 측면에서, 결과 세트, 준비된 명령문 및 명령은 각각 차례로 종료됩니다. 그러나 기본 DB2 Connection이 WebSphere Application Server에서 풀링되면 기본 DB2 PreparedStatement는 애플리케이션 서버에서 캐시되며 이 PreparedStatement 오브젝트에 작성된 각 ResultSet와 연관 된 각 기본 DB2 JDBC 커서 오브젝트는 아직 해제되지 않습니다.
캐시에 있는 각 PreparedStatement 오브젝트에는 연관된 하나 이상의 결과 세트가 있을 수 있습니다. 결과 세트가 열리고 닫히지 않은 경우에는, 연결을 닫더라도, 해당 결과 세트가 캐시에서 준비된 명령문과 계속 연관되어 있습니다. 각 결괏 세트에는 연결된 고유의 JDBC 커서가 있습니다. 이 커서는 명령문으로 유지되며 준비된 명령문이 WebSphere Application Server 캐시에서 지워질 때까지 릴리스되지 않습니다.
java.sql.SQLException: DB2SQLJJDBCProfile Error: No more JDBC Cursors without hold
이 문제점을 방지하는 일부 WebSphere Application Server 조정 제안사항은 다음과 같습니다.
- DB2 for OS/390® 데이터 소스 정의에서 명령문 캐시 크기 설정을 줄이십시오. 이 값을 0으로 설정하면 명령문 캐싱이 제거되지만 상당한 성능 저하가 발생합니다.
- DB2 for OS/390 데이터 소스 정의에서 minConnections 연결 풀 설정을 줄이십시오.
- DB2 for OS/390 데이터 소스 정의에서 Aged Timeout 연결 풀 설정을 줄이십시오. 그러나 이 설정을 0으로 설정하는 것은 권장되지 않습니다. 유효 제한시간 기능이 사용 불가능으로 되기 때문입니다.