数据访问问题

WebSphere® Application Server 诊断工具提供了一些服务来帮助对数据库连接问题进行故障诊断。另外,IBM® Web 站点提供了灵活的搜索功能,用于查找特定于数据库的连接问题的已记录的解决方案。

注: 本主题引用了一个或多个应用程序服务器日志文件。作为另一种建议采用的方法,您可以在分布式系统和 IBM i 系统上配置服务器以使用高性能可扩展日志记录 (HPEL) 记录和跟踪基础结构,而不使用 SystemOut.logSystemErr.logtrace.logactivity.log 文件。您还可以将 HPEL 与本机 z/OS® 日志记录设施结合使用。如果要使用 HPEL,那么可从服务器概要文件 bin 目录使用 LogViewer 命令行工具来访问所有日志和跟踪信息。有关使用 HPEL 的更多信息,请参阅有关使用 HPEL 对应用程序进行故障诊断的信息。

以下步骤帮助您快速找出连接问题所在。

  1. 浏览此应用程序服务器的日志文件以获取线索。

    [z/OS]请参阅“设置错误日志”主题。

    [AIX Solaris HP-UX Linux Windows][IBM i]请参阅“查看 JVM 日志”主题。缺省情况下,这些文件是 app_server_root/server_name/SystemErr.logSystemOut.log
    注: 本主题引用了一个或多个应用程序服务器日志文件。作为另一种建议采用的方法,您可以在分布式系统和 IBM i 系统上配置服务器以使用高性能可扩展日志记录 (HPEL) 记录和跟踪基础结构,而不使用 SystemOut.logSystemErr.logtrace.logactivity.log 文件。您还可以将 HPEL 与本机 z/OS 日志记录设施结合使用。如果要使用 HPEL,那么可从服务器概要文件 bin 目录使用 LogViewer 命令行工具来访问所有日志和跟踪信息。有关使用 HPEL 的更多信息,请参阅有关使用 HPEL 对应用程序进行故障诊断的信息。
  2. 浏览数据源的 Helper 类属性以验证它是否正确且是否位于 WebSphere Application Server 类路径中。很难理解的错误或行为可能是缺少 helper 类名或该类名命名错误所致。如果 WebSphere Application Server 无法装入指定的类,那么它将使用可能无法在数据库管理器中正常工作的缺省 helper 类。
  3. 验证数据源的 Java™ 命名和目录接口 (JNDI) 名是否与尝试访问该数据源的客户机所使用的名称相匹配。如果错误消息表明问题可能与命名相关,例如引用了名称服务器或命名服务,或者包含以 NMSV 开头的错误标识,请参阅“与命名相关的问题”和“对命名服务组件进行故障诊断”主题。
  4. 使用跟踪规范 RRA=all=enabled 为资源适配器启用跟踪。遵循转储及浏览跟踪输出的指示信息以缩小问题起因的范围。请参阅“启用跟踪”主题。

有关特定于数据库的故障诊断技巧的完整列表,请参阅 WebSphere Application Server 产品支持页面。(在本文章末尾可以找到相应的链接。)在 Search Support 字段中,在搜索项中输入数据库供应商名称。选择 Solve a problem,然后单击 Search

请记住,始终都可以在此信息中心的“IBM 提供的故障诊断帮助”主题中找到 Support 引用。

目前,此信息中心对下列数据库提供的故障诊断技巧数目有限:

IllegalConnectionUseException

发生此错误的原因是从 WAS40DataSource 获取的连接正用于多个线程。此用法违背了 J2EE 1.3 编程模型,并且在服务器上检测它时生成异常。用户通过 servlet 或 bean 管理的持久性 (BMP) 企业 Bean 访问数据源时会发生此问题。

要确认此问题,请检查连接共享的代码。如果不遵循编程模型建议,那么代码会无意中导致共享,例如,通过 在 servlet 的实例变量中存储连接,会导致在多个线程上同时使用该连接。

WTRN0062E: 发生登记多个支持一阶段的资源的非法尝试

发生此错误的原因是:
  • 已尝试共享一阶段连接,但并非所有 getConnection 调用都使用相同的连接属性;例如 AccessIntent 属性。
  • 当数据源不是 XA 资源时,尝试使多个不可共享的连接参与到全局事务中。
  • 在一个 XA 资源或一阶段资源参与全局事务后,尝试使另一个一阶段资源参与此全局事务。以下信息可以帮助您确定此错误情况的发生原因:
    • 如果您使用的是非 XA 数据源,并且期望共享连接,请将所有相关资源引用设置为可共享。如果未使用资源引用,那么缺省值将设置为不可共享的连接。
    • 如果并非所有连接请求都使用相同的连接属性(例如 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.ConnectionWaitTimeoutExceptioncom.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

此错误表明,在 WebSphere Application Server 启动环境的 LIBPATH 环境变量中,不包括包含二进制库 (支持数据库)的目录。

包含 DBM 供应商库的路径随 dbm 的不同而有所变化。查找它们的一种方法 是搜索错误消息中指定的缺少库。然后,您可以通过以下两种方法更正 LIBPATH 变量以使其包括缺少的目录:在启动 WebSphere Application Server 的帐户的 .profile 中进行更正,或者在随后用于启动 startServer 程序的 .sh 文件中添加语句进行更正。

[z/OS]使用 domain_region_libpath 环境变量(例如 control_region_libpath、server_region_libpath 或 adjunct_region_libpath)来配置 Java LIBPATH (java.library.path) 属性。请参阅有关更改 BBOM0001I 消息中所引用变量的值的主题,获取有关如何设置 region libpath 变量的指示信息。

包装在错误 WTRN0063E 中的错误 J2CA0030E

尝试执行事务时,在“WTRN0063E: 已发生将支持一阶段的资源与支持两阶段的现有资源并列的非法尝试”错误中包装了“J2CA0030E: 方法 enlist 捕获到 java.lang.IllegalStateException”。如果缺少或禁用最后参与者支持,那么会发生此错误。最后参与者支持允许支持一阶段的资源与支持两阶段的资源在同一事务中并列。

仅当存在下列情况时,最后参与者支持才可用:
  • 已安装 WebSphere Application Server 编程模型扩展 (PME)。PME 包含在 Application Server Integration 服务器产品中。
  • 安装 PME 时启用了“其他 Integration 服务器扩展”选项。如果执行典型安装,那么缺省情况下将启用此功能。如果执行定制安装,那么可以禁用此功能,这将禁用最后参与者支持。
  • 登记一阶段资源的应用程序是在启用接受试探风险选项的情况下进行部署的。此部署是使用组装工具完成的。

尝试执行数据库操作时发生“J2CA0114W: 对于连接工厂或数据源 datasource,找不到容器管理的认证别名”

使用 JACL 脚本创建数据源后,如 果运行应用程序以访问此数据源,那么 SystemOut.log 文件中可能发生此错误。

因为 JACL 脚本未设置 CMP 连接工厂的容器管理的认证别名,所以会发生此错误消息。 JACL 缺少这一行:
$AdminConfig create MappingModule $cmpConnectorFactory  "{mappingConfigAlias 
DefaultPrincipalMapping} {authDataAlias $authDataAlias}

要解决此问题,请将缺少的行添加到 JACL 脚本并再次运行此脚本。请参阅“示例:使用 Java 管理扩展 API 和脚本编制工具创建 JDBC 提供程序和数据源”主题,以获取样本 JACL 脚本。

在 HP 平台上使用 ws_ant 命令为 SQLJ 执行数据库定制时发生错误

如果使用 ws_ant 命令在 HP 平台上执行 Java 结构化查询语言 (SQLJ) 的数据库定制,那么可能收到类似于以下内容的错误:
[java] [ibm][db2][jcc][sqlj]
[java] [ibm][db2][jcc][sqlj] Begin customization
[java] [ibm][db2][jcc][sqlj] encoding not supported!!
此错误的原因可能是数据库是使用 HP 缺省字符集创建的。Java 公共客户机 (JCC) 驱动程序依靠软件开发包 (SDK) 执行代码页转换。但是,本产品随附的 SDK 不支持 HP 缺省代码页。
必须先将 LANG 设置为 ISO 语言环境,然后再创建数据库。这应该类似于:
export LANG=en_US.iso88591
请参阅信息管理软件的 IBM 支持站点,以访问有关 DB2 的最新技术说明。

容器管理的持久性 (CMP) 无法按照定义成功获取数据库访问功能

如果 WebSphere Application Server 正在高速缓存在连接工厂的数据库中访问的某些生成的代码,并且 Java 归档 (JAR) 文件中的任何更改要求重新生成数据库访问,那么只有停止并重新启动服务器,这些更改才会生效。

有关何时可能发生此故障的示例包括:
  • 添加企业 Bean 定制 finder 方法;将会产生 NullPointerException 异常。
  • 更新企业 Bean 定制 finder 方法;新的 SQL 语句不能运行。
  • 更改模式映射;新的 SQL 语句不能运行。

总之,如果添加或更新包含定制 finder 方法的企业 Bean,就必须停止服务器然后重新启动 它。


指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rtrb_dsaccess
文件名:rtrb_dsaccess.html