데이터 액세스 문제점

WebSphere® Application Server 진단 도구는 데이터베이스 연결 문제점의 판별을 도와주는 서비스를 제공합니다. 또한 IBM® 웹 사이트는 데이터베이스 특정 연결 문제점에 대한 문서화된 해결책을 찾을 수 있는 탄력적인 검색 기능을 제공합니다.

참고: 이 주제는 하나 이상의 애플리케이션 서버 로그 파일을 참조합니다. 권장되는 대안은 분배 및 IBM i 시스템에서 SystemOut.log, SystemErr.log, trace.logactivity.log 파일을 사용하는 대신 HPEL(High Performance Extensible Logging) 로그를 사용하고 인프라를 추적하도록 서버를 구성하는 것입니다. 원시 z/OS® 로깅 기능과 연계하여 HPEL을 사용할 수도 있습니다. HPEL을 사용하는 경우 서버 프로파일 바이너리 디렉토리의 LogViewer 명령행 도구를 사용하여 모든 로그에 액세스하고 정보를 추적할 수 있습니다. HPEL 사용에 대한 자세한 정보는 HPEL을 사용한 애플리케이션 문제점 해결 정보를 참조하십시오.

다음 단계는 신속하게 연결 문제점을 분리할 수 있도록 도와줍니다.

  1. Application Server의 로그 파일에서 단서를 찾아보십시오.

    [z/OS]오류 로그 설정 주제를 참조하십시오.

    [AIX Solaris HP-UX Linux Windows][IBM i]JVM 로그 보기 주제를 참조하십시오. 이 파일은 기본적으로 app_server_root/server_name/SystemErr.logSystemOut.log입니다.
    참고: 이 주제는 하나 이상의 애플리케이션 서버 로그 파일을 참조합니다. 권장되는 대안은 분배 및 IBM i 시스템에서 SystemOut.log, SystemErr.log, trace.logactivity.log 파일을 사용하는 대신 HPEL(High Performance Extensible Logging) 로그를 사용하고 인프라를 추적하도록 서버를 구성하는 것입니다. 원시 z/OS 로깅 기능과 연계하여 HPEL을 사용할 수도 있습니다. HPEL을 사용하는 경우 서버 프로파일 바이너리 디렉토리의 LogViewer 명령행 도구를 사용하여 모든 로그에 액세스하고 정보를 추적할 수 있습니다. HPEL 사용에 대한 자세한 정보는 HPEL을 사용한 애플리케이션 문제점 해결 정보를 참조하십시오.
  2. 데이터 소스의 헬퍼 클래스 특성을 찾아 특성이 정확한지, WebSphere Application Server 클래스 경로에 있는지 확인하십시오. 의심스러운 오류나 작동은 헬퍼 클래스 이름 누락 또는 잘못된 이름 때문일 수 있습니다. WebSphere Application Server가 지정된 클래스를 로드할 수 없는 경우, 사용자 데이터베이스 관리자로 올바르게 기능하지 않을 수 있는 기본 헬퍼 클래스가 사용됩니다.
  3. 데이터 소스의 JNDI(Java™ Naming and Directory Interface) 이름이 액세스하려는 클라이언트가 사용하는 이름과 일치하는지 확인하십시오. 오류 메시지가 이름 지정 관련(예: 이름 서버 또는 이름 지정 서비스를 참조하거나 NMSV로 시작하는 오류 ID를 포함하는 경우) 문제일 수도 있음을 표시하는 경우 이름 지정 관련 문제점 및 이름 지정 서비스 컴포넌트 문제점 해결 주제를 참조하십시오.
  4. 추적 스펙 RRA=all=enabled를 사용하여 자원 어댑터에 대한 추적을 사용 가능하게 하십시오. 추적 결과를 덤프하고 찾아보기 위한 지시사항에 따라 문제점의 기점을 좁히십시오. 추적 사용 주제를 참조하십시오.

데이터베이스 특정 문제점 해결 팁의 전체 목록은 WebSphere Application Server 제품 지원 페이지를 참조하십시오. (이 문서의 끝에서 링크를 찾으십시오.) 검색 지원 필드에 검색 용어 중에서 데이터베이스 벤더 이름을 입력하십시오. 문제점 해결을 선택한 후 검색을 클릭하십시오.

언제든지 이 Information Center의 IBM 문제점 해결 도움말 주제에서 지원 정보를 찾을 수 있다는 것을 기억하십시오.

현재 이 Information Center는 다음 데이터베이스에 대해 제한된 수의 문제점 해결 팁을 제공합니다.

IllegalConnectionUseException

이 오류의 원인은 WAS40DataSource에서 가져온 연결을 둘 이상의 스레드에서 사용 중이기 때문입니다. 이 사용법은 J2EE 1.3 프로그래밍 모델 위반이며 서버에서 발견되면 예외가 생성됩니다. 이 문제점은 사용자가 서블릿 또는 BMP(Bean persistence Persistence) 엔터프라이즈 Bean을 통해 데이터 소스에 액세스하는 경우 발생합니다.

이 문제를 확인하려면 연결 공유를 위한 코드를 검사하십시오. 코드가 프로그래밍 모델 권장사항을 따르지 않아서(예를 들어, 서블릿에서 인스턴스 변수에 연결을 저장하여 동시에 여러 스레드에서 연결 사용이 발생할 수 있음) 공유를 초래할 수 있습니다.

WTRN0062E: 여러 개의 1단계 가능 자원을 등록하려는 잘못된 시도가 발생했습니다.

이 오류의 원인은 다음과 같습니다.
  • 1단계 연결을 공유하기 위한 시도가 이루어졌지만 getConnection 호출 모두가 동일한 연결 특성(예: AccessIntent 특성)을 사용하지 않습니다.
  • 데이터 소스가 XA 자원이 아닌 경우, 둘 이상의 공유 불가능한 연결을 하나의 글로벌 트랜잭션에 참여시키기 위해 시도했습니다.
  • XA 자원 또는 1단계 자원이 이미 글로벌 트랜잭션에 참여하는 동안, 다른 1단계 자원이 이 글로벌 트랜잭션에 참여하기 위해 시도했습니다. 이 오류 조건이 발생한 이유를 식별하는 데 다음 정보가 도움이 될 수 있습니다.
    • 비XA 데이터 소스를 사용하고 연결을 공유할 예정이면 모든 관련 resource-ref를 공유 가능으로 설정하십시오. resource-ref를 사용하지 않으면, 기본값이 공유 불가능한 연결로 설정됩니다.
    • 각 연결 요청 시 동일한 연결 특성(예: IsolationLevel 또는 AccessIntent)을 사용하지 않는 경우 연결이 공유되지 않습니다.
    • 다른 AccessIntent 설정을 사용할 수도 있는 CMP Bean을 사용 중인 경우 연결이 공유되지 않을 수 있습니다. 비CMP 컴포넌트와의 연결을 공유하는 CMP Bean에 대한 자세한 정보는 데이터 액세스 API에 대한 확장기능의 정보를 참조하십시오.
이 오류를 정정하려면 다음을 수행하십시오.
  • getConnection 요청으로 클라이언트 코드가 전달하는 항목을 확인하고 서로 일치하는지를 확인하십시오.
  • 어셈블리 도구를 사용하여 자원 바인딩에서의 연결 공유 범위를 확인하십시오. 어셈블리 도구 주제를 참조하십시오.
    • 공유 불가능한 연결 범위를 실행 중인 경우, 사용자 데이터 소스가 XA 데이터 소스인지 검증하십시오.
    • 공유 가능한 연결 범위를 실행 중인 경우, AccessIntent를 포함한 모든 연결 특성이 공유 가능인지 확인하십시오.
  • 관리 콘솔의 JDBC 자원 관리 패널에서 JDBC 프로바이더 구현 클래스를 확인하여 이 클래스가 XA 유형 트랜잭션을 지원하는 클래스인지를 확인하십시오.

데이터 소스 또는 자원 어댑터 액세스 중 ConnectionWaitTimeoutException

애플리케이션이 WebSphere Application Server 데이터 소스 또는 JCA 준수 자원 어댑터에 액세스하려 할 때 com.ibm.websphere.ce.cm.ConnectionWaitTimeoutException 또는 com.ibm.websphere.ce.j2c.ConnectionWaitTimeoutException과 같은 예외가 수신되는 경우, 다음과 같은 원인이 있을 수 있습니다.
  • 지정된 풀에 대한 최대 연결 수가 너무 작게 설정되었습니다. 동시 연결 사용 요구가 연결 풀에 대해 구성된 최대값보다 큽니다. 이러한 문제점이 있는 경우 사용자가 이 예외를 정기적으로 수신하지만 CPU 사용률은 높지 않습니다. 이 예외는 서버 사용 중 스레드를 보유하는 데 사용할 수 있는 연결이 너무 적음을 나타냅니다.
  • 연결 대기 시간이 너무 작게 설정되었습니다. Current® 연결 요구가 너무 커서 단기간 동안에도 연결을 사용하지 못할 수 있습니다. 연결 대기 제한시간 값이 너무 작게 설정된 경우, 사용자가 연결을 다시 풀로 리턴하기 전에 제한시간에 도달할 수 있습니다. 연결 대기 시간을 조정하면 약간 여유가 생깁니다. 이러한 문제점이 있는 경우, 사용자는 확장 기간 동안 거의 최대 연결 수를 사용하고 있으며 이 오류를 정기적으로 수신하게 됩니다.
  • 사용자가 일부 연결을 닫지 않고 있거나 느린 속도로 연결을 다시 풀로 리턴하고 있습니다. 이 상황은 공유 불가능 연결 사용 시 사용자가 연결을 닫는 것을 잊거나, 연결 사용을 마친 후 한참 있다가 연결을 닫아서 연결이 재사용을 위해 풀로 리턴되지 못할 때 발생합니다. 풀은 곧 비게 되고 모든 애플리케이션은 ConnectionWaitTimeoutExceptions을 가져옵니다. 이러한 문제점이 있는 경우 연결 풀에 연결이 없고 대부분의 요청 시 이 오류를 수신하게 됩니다.
  • 사용자가 서버 또는 백엔드 시스템에서 처리할 수 있는 자원보다 더 많은 로드를 운영하고 있습니다. 이 경우 추가로 필요한 자원을 판별하여 구성 또는 하드웨어를 업그레이드함으로써 필요를 충족시켜야 합니다. 이러한 문제점이 있는 경우, 애플리케이션 서버 또는 데이터베이스 서버 프로세서가 거의 100% 사용 중입니다.
이 문제점을 정정하려면 다음을 수행하십시오.
  • 적은 연결 수를 사용하도록 애플리케이션을 수정하십시오.
  • 연결을 올바르게 닫으십시오.
  • MaxConnections 또는 ConnnectionWaitTimeout의 풀 설정값을 변경하십시오.
  • 자원 및 해당 구성사항을 조정하십시오.

com.ibm.websphere.ce.cm.StaleConnectionException: [IBM][CLI Driver] SQL1013N 데이터베이스 별명 이름 또는 데이터베이스 이름 "NULL"을 찾을 수 없음

com.ibm.websphere.ce.cm.StaleConnectionException: [IBM][CLI Driver] SQL1013N 데이터베이스 별명 이름 또는 데이터베이스 이름 "NULL"을 찾을 수 없습니다. SQLSTATE=42705. 이 오류는 데이터 소스가 정의되었으나 databaseName 속성 및 해당 값이 사용자 정의 특성 패널에 추가되지 않은 경우 발생합니다.

databaseName 특성을 추가하려면 다음을 수행하십시오.
  1. 관리 콘솔에서 자원 > JDBC 제공자 관리를 클릭하십시오.
  2. 문제점 데이터 소스를 지원하는 JDBC_provider를 선택하십시오.
  3. 데이터 소스를 선택한 후 문제의 데이터 소스를 선택하십시오.
  4. 추가 특성 아래에서 사용자 정의 특성을 클릭하십시오.
  5. databaseName 특성을 선택하거나, 없는 경우 추가하고 값으로 실제 데이터베이스 이름을 입력하십시오.
  6. 적용 또는 확인을 클릭한 후, 조치 막대에서 저장을 클릭하십시오.
  7. 데이터 소스에 다시 액세스하십시오.

java.sql.SQLException: java.lang.UnsatisfiedLinkError

이 오류는 데이터베이스를 지원하는 2진 라이브러리를 포함하는 디렉토리가 WebSphere Application Server를 시작한 환경의 LIBPATH 환경 변수에 포함되지 않았음을 나타냅니다.

DBM 벤더 라이브러리를 포함하는 경로는 dbm에 따라 달라집니다. 경로를 찾는 방법 중 하나는 오류 메시지에 지정된 누락 라이브러리를 스캔하는 것입니다. 그런 다음, WebSphere Application Server가 시작된 계정의 .profile 또는 startServer 프로그램을 시작하는 .sh 파일에 명령문을 추가하여 LIBPATH 변수에 누락된 디렉토리가 포함되도록 정정할 수 있습니다.

[z/OS]domain_region_libpath 환경 변수(예: control_region_libpath, server_region_libpath, adjunct_region_libpath)를 사용하여 Java LIBPATH(java.library.path) 특성을 구성하십시오. 지시사항은 BBOM0001I 메시지에서 참조된 변수 값 변경에 대한 주제를 참조하십시오.

오류 WTRN0063E에서 랩핑된 오류 J2CA0030E

오류에서 랩핑된 "J2CA0030E: 메소드 등록이 java.lang.IllegalStateException 포착". 트랜잭션을 실행하려고 할 때 "WTRN0063E: 기존의 2단계 가능 자원과 함께 1단계 가능 자원을 등록하려는 잘못된 시도가 발생함". 이 오류는 LPS(Last Participant Spoort)가 누락되었거나 사용할 수 없는 경우 발생할 수 있습니다. 마지막 참여자 지원은 1단계 가능 자원 및 2단계 가능 자원을 동일한 트랜잭션 내에 등록하는 것을 지원합니다.

LPS는 다음 조건이 충족되는 경우에만 사용할 수 있습니다.
  • WebSphere Application Server PME(Programming Model Extension)가 설치되었습니다. PME는 Application Server Integration Server 제품에 포함됩니다.
  • 추가 Integration Server Extensions 옵션은 PME가 설치되면 사용 가능합니다. 일반 설치를 수행하는 경우, 이 기능은 기본적으로 사용 가능합니다. 사용자 설치를 수행하는 경우 마지막 참여자 지원을 사용 안함 설정하는 이 기능을 사용 안함 설정할 수 있습니다.
  • 1단계 자원을 등록하는 애플리케이션은 사용 가능하게 된 heuristic hazard 승인 옵션으로 전개되었습니다. 이 전개는 어셈블리 도구를 사용하여 수행됩니다.

데이터베이스 조작을 시도할 때 "J2CA0114W: 커넥터 팩토리 또는 데이터 소스 datasource에 대한 컨테이너 관리 인증 별명이 없음"

이 오류는 JACL 스크립트를 사용하여 데이터 소스를 작성한 후 애플리케이션을 실행하여 데이터 소스에 액세스할 때 SystemOut.log 파일에서 발생할 수 있습니다.

오류 메시지는 JACL 스크립트가 CMP 연결 팩토리에 대한 컨테이너 관리 인증 별명을 설정하지 않았기 때문에 발생합니다. JACL에서 다음 행이 누락되었습니다.
$AdminConfig create MappingModule $cmpConnectorFactory  "{mappingConfigAlias 
DefaultPrincipalMapping} {authDataAlias $authDataAlias}

이 문제점을 정정하려면 누락된 행을 JACL 스크립트에 추가하고 스크립트를 다시 실행하십시오. 샘플 JACL 예제를 보려면 예제: Java Management Extension API 및 wsadmin 스크립트 도구를 사용하여 JDBC 프로바이더 및 데이터 소스 작성 주제를 참조하십시오.

HP 플랫폼에서 SQLJ에 대한 데이터베이스 사용자 정의를 수행하기 위해 ws_ant 명령을 사용하는 경우 오류가 발생함

HP 플랫폼에서 ws_ant 명령을 사용하여 Java SQL에 대한 데이터베이스 사용자 정의를 수행할 경우 다음과 같은 오류가 발생합니다.
[java] [ibm][db2][jcc][sqlj] 
[java] [ibm][db2][jcc][sqlj] Begin customization
[java] [ibm][db2][jcc][sqlj] encoding not supported!!
이 오류의 원인은 HP 기본 문자 세트를 사용하여 데이터베이스가 작성되었기 때문일 수 있습니다. JCC(Java Common Client) 드라이버는 SDK(Software Development Kit)에 따라 코드 페이지 변환을 수행합니다. 그러나 이 제품과 함께 제공된 SDK는 HP 기본 코드 페이지를 지원하지 않습니다.
데이터베이스를 작성하기 전에 LANG를 ISO 로케일로 설정해야 합니다. 다음과 같습니다.
export LANG=en_US.iso88591
DB2의 최신 기술 노트에 액세스하려면 정보 관리 소프트웨어에 대한 IBM 지원 사이트를 참조하십시오.

CMP(Container-managed persistence)는 정의된 대로 데이터베이스 액세스 기능을 성공적으로 얻을 수 없음

WebSphere Application Server가 연결 팩토리의 데이터베이스에 생성된 코드에 액세스하여 해당 코드를 캐시 중일 때 JAR(Java Archive) 파일에서 데이터베이스 액세스를 다시 생성할 것을 요구하도록 변경할 경우, 서버를 중지했다가 다시 시작할 때까지 변경사항이 적용되지 않습니다.

장애가 발생할 수 있는 예는 다음과 같습니다.
  • 엔터프라이즈 Bean 사용자 제어 파인더 메소드 추가 중에 NullPointerException 예외가 생성되었습니다.
  • 엔터프라이즈 Bean 사용자 제어 파인더 메소드 갱신 중에 새 SQL문이 실행되지 않습니다.
  • 스키마 맵핑 변경 중에 새 SQL문이 실행되지 않습니다.

요약하자면 사용자 제어 파인더 메소드를 포함하는 엔터프라이즈 Bean을 추가하거나 업데이트하는 경우 서버를 중지한 후 다시 시작해야 합니다.


주제 유형을 표시하는 아이콘 참조 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rtrb_dsaccess
파일 이름:rtrb_dsaccess.html