ITPub博客

首页 > Linux操作系统 > Linux操作系统 > db2 重置处于停顿(quiesce)状态的表空间后仍然遇到 SQL0290N 的错误

db2 重置处于停顿(quiesce)状态的表空间后仍然遇到 SQL0290N 的错误

原创 Linux操作系统 作者:fengjin821 时间:2009-09-12 10:11:46 0 删除 编辑

环境:
产品:DB2 UDB
平台:Unix, Linux & Windows
版本:V7.2, V8.1


问题描述:

如果用户由于遇到 SQL0290N 的报错,指出表空间由于处于停顿状态而不允许存取,从而使用如下命令:

db2 quiesce tablespaces for table <表名> reset

对表空间状态进行重置,但在成功完成了重置操作后,再尝试对该表空间进行存取操作时,仍遇到上述错误,检查表空间状态并未发生改变,其原因可能与用于执行上述命令的用户有关。


解答:

当用户使用“ list tablespaces” 命令对 DB2 数据库的表空间状态进行检查时,如果发现输出信息中表空间的“ 状态” 项中为:0x1,0x2 或 0x4,“ 详细解释” 项中对状态的解释分别为:SHARE,UPDATE 或 EXCLUSIVE 的停顿状态,这表明表空间处于一种由 quiesce 命令发出的持续的锁定状态。对该表空间的操作将遇到 SQL0290N 的报错,具体报错信息为:

SQL0290N 不允许存取表空间。

解释:

进程尝试存取一个处于无效状态的表空间,该状态不允许所期望的存取。

o 若表空间处于停顿状态,则仅允许还使表空间处于停顿状态的进程存取表空间。
:
:

为了除去以上三种停顿(quiesce)状态,解决 SQL0290N 的问题,用户可利用以下命令:

db2 quiesce tablespaces for table <表名> reset

将表空间的状态重新置为正常状态(0x0),具体操作可参看文档《如何将表空间的状态置为正常》中的步骤描述。

如果在重置操作成功完成后,对表空间的操作仍然遇到 SQL0290N 的报错,并且在 DB2 的错误诊断日志文件 db2diag.log 文件中发现有类似如下的信息记录:

2003-06-06-13.50.39.579506 Instance:db2inst1 Node:001
PID:3432546(db2agent (XYZ) 1) TID:1

ADM6086W The attempt to acquire and reset the phantom quiesce state for table space "TBS1" (ID "6") did not change the state even though the command returned successfully. The authorization ID of the current user does not match the quiescer authorization ID and these must be the same to successfully acquire and reset a phantom quiesce. Determine the correct quiescer authorization ID by taking a table space snapshot and retry the quiesce reset command using that ID.

则说明用来执行停顿状态重置的用户有问题。正如上述信息中描述的那样,该用户的 ID 与当初执行停顿操作的用户的 ID 不一致。为成功将遗留的停顿状态去除,必须使用发出 quiesce 命令的用户(quiescer)进行重置操作。

这里介绍一种查询 quiescer 的方法:

1. 停止当前实例的运行:db2stop。

2. 利用 db2dart 工具搜集有关信息:
db2dart <数据库名> /dtsf

3. 从 db2dart 的输出报告文件(*.rpt)中,可在相应的表空间名下找到类似如下的信息:

1) Userid of quiescer: DB2INST1
Quiesce state: 1
Tbspace ID of quiesced object: 2
Table ID of quiesced object: 3
EDU ID: 0
Agent ID: 0

即 quiescer 的 ID 为“ DB2INST1” ,用户应该以该用户的身份重新登录,然后重新尝试状态重置的操作。在该命令成功完成后,应该不会再遇到 SQL0290N 的错误,用户可再次通过“ LIST TABLESPACES ” 的命令对表空间的“ 状态” 进行一次检查,以确保表空间的状态均为“ 正常” 。

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13165828/viewspace-614496/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-04-29

  • 博文量
    191
  • 访问量
    507680