Db2查询所有处于load pending状态或正在load的表

本文介绍如何使用Db2的ADMINTABINFO查询表的load状态,包括如何检查LOAD_STATUS字段了解loadpending的原因,并通过loadquerytable命令获取更多信息。此外,还讨论了在loadpending状态下尝试访问表可能遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Db2中可以使用ADMINTABINFO来查询表的load的状态,如果LOAD_STATUS字段值为PENDING,说明为load pending,如果值为IN_PROGRESS,说明正在做load操作,示例:

qingsong@node01:~$ db2 "select substr(TABSCHEMA,1,20) as TABSCHEMA, substr(TABNAME,1,20) as TABNAME from  SYSIBMADM.ADMINTABINFO where LOAD_STATUS='PENDING'"

TABSCHEMA            TABNAME             
-------------------- --------------------
INST105              T3                  
INST105              T4                  

  2 record(s) selected.

要查看load pending的原因,除了查看db2diag.log,可以尝试使用load query table命令,在下面的例子中,t3是因为load被中断(可能是被force)了,t4是因为load的表所在表空间满了:

qingsong@node01:~$ db2 "load query table inst105.t3"
SQL3501W  The table space(s) in which the table resides will not be placed in 
backup pending state since forward recovery is disabled for the database.

SQL3109N  The utility is beginning to load data from file 
"/home/inst105/b.del".

SQL3500W  The utility is beginning the "LOAD" phase at time "03/30/2019 
18:46:45.355904".

SQL3519W  Begin Load Consistency Point. Input record count = "0".

SQL3520W  Load Consistency Point was successful.

SQL1224N  The database manager is not able to accept new requests, has 
terminated all requests in progress, or has terminated the specified request 
because of an error or a forced interrupt.  SQLSTATE=55032

SQL3532I  The Load utility is currently in the "LOAD" phase.


Number of rows read         = 0
Number of rows skipped      = 0
Number of rows loaded       = 0
Number of rows rejected     = 0
Number of rows deleted      = 0
Number of rows committed    = 0
Number of warnings          = 0

Tablestate:
  Load Pending
qingsong@node01:~$ db2 "load query table inst105.t4"
SQL3501W  The table space(s) in which the table resides will not be placed in 
backup pending state since forward recovery is disabled for the database.

SQL3109N  The utility is beginning to load data from file 
"/home/inst105/b.del".

SQL3500W  The utility is beginning the "LOAD" phase at time "03/30/2019 
18:55:36.042533".

SQL3519W  Begin Load Consistency Point. Input record count = "0".

SQL3520W  Load Consistency Point was successful.

SQL0289N  Unable to allocate new pages in table space "TBS2".  SQLSTATE=57011

SQL3532I  The Load utility is currently in the "LOAD" phase.


Number of rows read         = 0
Number of rows skipped      = 0
Number of rows loaded       = 0
Number of rows rejected     = 0
Number of rows deleted      = 0
Number of rows committed    = 0
Number of warnings          = 0

Tablestate:
  Load Pending

另外,如果尝试访问load pending状态的表,比如runstats、truncate,可能会在诊断日志中报出"ACCESS TABLE WHEN IN RESTRICTED STATE"的错误,例如:

2019-03-30-18.56.22.819074-420 I136437E962           LEVEL: Severe
PID     : 2490                 TID : 140120866940672 PROC : db2sysc 0
INSTANCE: inst105              NODE : 000            DB   : SAMPLE
APPHDL  : 0-32                 APPID: *LOCAL.inst105.190331014725
AUTHID  : INST105              HOSTNAME: node01
EDUID   : 92                   EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, catalog services, sqlrltt0, probe:10
MESSAGE : ZRC=0x8004002E=-2147221458=SQLD_ACCESSRESTRICTED
          "ACCESS TABLE WHEN IN RESTRICTED STATE"
          DIA8070C Attempt to access a table in a restricted state
<...略...>	

参考资料:

https://www.ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.sql.rtn.doc/doc/r0052897.html

<think>嗯,用户现在问的是如何在DB2中查看状态。之前他们问过如何使用db2top查看是否在回滚,现在可能想扩展了解更全面的状态信息。我需要确保回答涵盖不同的方法,而不仅仅是db2top,因为用户可能没有权限者更习惯用其他工具。 首先,用户可能想知道状态包括哪些方面,比如是否正常、是否有锁、统计信息、是否在恢复中者回滚。之前的回答已经涉及了回滚的情况,所以这次需要补充其他状态,比如空间状态、统计信息、索引状态等。 我需要考虑不同的工具,比如db2top、db2pd、控制中心,以及SQL查询。用户可能对命令行工具更感兴趣,因为问题中提到了db2top,但也要提供其他方法,比如系统视图查询,这样即使没有图形界面也能操作。 需要注意权限问题,某些命令可能需要高级权限,比如db2pd者监控。要提醒用户需要相应的权限才能执行这些命令。 还要检查是否有遗漏的常用方法,比如使用ADMIN_GET_TAB_INFO函数,db2look工具。这些都能提供的不同信息,比如压缩状态、行数等。 可能需要分步骤说明每种方法,确保结构清晰。例如,先介绍db2top,再讲db2pd,然后是SQL查询,最后是控制中心。每个步骤要说明具体操作和关键指标的含义,帮助用户理解输出结果。 同时,注意事项部分需要强调长时间锁定的处理,权限要求,以及统计信息的重要性。可能用户遇到性能问题,需要检查状态,所以统计信息更新也是一个关键点。 最后,总结部分要简明扼要,让用户知道根据需求选择合适的方法。可能需要检查是否有重复内容,者是否需要调整顺序,让回答更易读。</think>以下是通过DB2命令和工具查看状态的分步说明,涵盖空间、锁状态、统计信息等关键指标: --- ### **方法 1:使用 `db2top` 工具实时监控** 1. **启动db2top**: ```bash db2top -d <数据库名> -u <用户> -p <密码> ``` 2. **查看状态**: - 按下 `T` 键进入 **视图(Table View)**,显示所有的实时状态。 - 关键列解释: - **`TBSP`**:所在空间名称。 - **`Rows`**:的行数(需启用统计信息)。 - **`Lock-Waits`**:当前上的锁等待数量。 - **`Stats`**:统计信息是否过期(`Yes/No`)。 --- ### **方法 2:通过 `db2pd` 检查锁和状态** 1. **查看锁**: ```bash db2pd -d <数据库名> -tcbstats ``` - 输出字段: - **`TableName`**:名。 - **`TableType`**:类型(如用户、临时)。 - **`LockEscalation`**:锁升级状态。 - **`StatsTime`**:统计信息最后更新时间。 2. **检查空间状态**: ```bash db2pd -d <数据库名> -tablespaces ``` - 确认所在空间状态为 `Normal`,而非 `Quiesced` `Backup pending`。 --- ### **方法 3:通过SQL查询系统** 1. **查询基本信息**: ```sql SELECT TABNAME, TABLEID, TBSPACE, CARD, STATS_TIME FROM SYSCAT.TABLES WHERE TABNAME = '<名>'; ``` - **`CARD`**:预估行数(需更新统计信息)。 - **`STATS_TIME`**:统计信息最后更新时间。 2. **检查状态**: ```sql SELECT TABNAME, LOCK_STATUS, LOCK_MODE FROM TABLE(MON_GET_TABLE('', '', -2)) WHERE TABNAME = '<名>'; ``` - **`LOCK_MODE`**:锁模式(如 `X` 示排他锁)。 --- ### **方法 4:使用控制中心(Control Center)** 1. 打开DB2控制中心,导航到目标。 2. 右键选择 **“显示状态”**,查看: - **空间状态**。 - **索引状态**(是否处于 `Pending` 状态)。 - **压缩状态**(若启用压缩)。 --- ### **关键状态指标解析** 1. **空间状态**: - `0x0000`:正常(Normal)。 - `0x0008`:备份挂起(Backup pending)。 2. **统计信息过期**: - 若 `STATS_TIME` 为旧日期,需执行 `RUNSTATS` 更新: ```sql RUNSTATS ON TABLE <模式名>.<名> WITH DISTRIBUTION; ``` 3. **锁冲突**: - 若被 `X` 锁长期占用,可能因事务回滚未提交操作导致。 --- ### **注意事项** 1. **权限要求**: - `db2pd` 和 `MON_GET_TABLE` 需要 `SYSADM` `SYSCTRL` 权限。 2. **统计信息更新**: - 定期执行 `RUNSTATS` 确保优化器使用最新数据。 3. **状态异常**: - 若空间状态异常,尝试 `ALTER TABLESPACE ... NORMAL` 恢复。 --- 通过以上方法,可全面检查DB2的健康状态、锁争用及统计信息有效性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值