DB2表空间是DB2数据库的重要组成部分,下面就为您详细介绍DB2表空间的静默状态,供您参考,希望对您能够有所帮助 。
DB2表空间的静默状态:
对于DB2数据库,可利用QUIESCE命令静默表所在的DB2表空间,其命令的基本语法为:
db2 quiesce tablespaces for table <tablename> <静默状态>
其中DB2表空间的静默状态分以下三种:
共享(SHARE):
将表置于共享方式 。在此方式中,交易将试图对表空间请求意向共享锁(IS),表上请求共享锁(S),因此所有用户(包括您自己)可读取但不能更改表数据 。
意向更新(INTENT TO UPDATE):
将表置于更新方式 。在此方式中,交易将试图对表空间请求意向互斥锁(IX),表上请求更新(U)锁,因此仅您自己可更新表数据,其他用户可读取但不能更新该数据 。
互斥(EXCLUSIVE):
使表处于互斥方式 。在此方式中,交易将试图对表空间和表请求超级互斥锁(Z),因此仅您自己可读取或更新表数据 。
如果表已经处于一个停顿方式,则可以将其更改至较高级(更加互斥)方式 。例如,若表已处于共享方式,则可将它更改为意向更新或互斥方式 。然而,不能将较高方式更改为较低方式 。互斥比意向更新级别更高,而意向更新又比共享级别更高 。
db2 => list tablespaces
当前数据库的表空间
表空间标识 = 0
名称 = SYSCATSPACE
类型 = 系统管理空间
内容 = 任何数据
状态 = 0x0000
详细解释:
正常
表空间标识 = 1
名称 = TEMPSPACE1
类型 = 系统管理空间
内容 = 系统临时数据
状态 = 0x0000
详细解释:
正常
表空间标识 = 2
名称 = USERSPACE1
类型 = 系统管理空间
内容 = 任何数据
状态 = 0x0000
详细解释:
正常
db2 => quiesce tablespaces for table EMP_ACT share
DB20000I QUIESCE TABLESPACES 命令成功完成。
db2 => list tablespaces
当前数据库的表空间
表空间标识 = 0
名称 = SYSCATSPACE
类型 = 系统管理空间
内容 = 任何数据
状态 = 0x0000
详细解释:
正常
表空间标识 = 1
名称 = TEMPSPACE1
类型 = 系统管理空间
内容 = 系统临时数据
状态 = 0x0000
详细解释:
正常
表空间标识 = 2
名称 = USERSPACE1
类型 = 系统管理空间
内容 = 任何数据
状态 = 0x0001
详细解释:
已停顿:SHARE
db2 =>
现在我对表插入一条数据
db2 => INSERT INTO WENCHAO.EMP_ACT (EMPNO, PROJNO, ACTNO, EMPTIME, EMSTDATE, EME
NDATE)VALUES ('100000', 'MA2100', 10, 0.5, '01/01/1982', '11/01/1982')
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0290N 不允许存取表空间。 SQLSTATE=55039
db2 =>
我现在插入另外一个表试下
db2 => INSERT INTO WENCHAO.ORG (DEPTNUMB, DEPTNAME, MANAGER, DIVISION, LOCATION)
VALUES (88, 'Head Office', 160, 'Corporate', 'New York')
DB21034E 该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0290N 不允许存取表空间。 SQLSTATE=55039
db2 =>
同样报错,可见只要对一张表使用了静默模式的话,该表所在的表空间就处于该种模式
看下数据库状态
db2 => get db cfg for sample
数据库 sample 的数据库配置
数据库配置发行版级别 = 0x0a00
数据库发行版级别 = 0x0a00
数据库地域 = CN
数据库代码页 = 1386
数据库代码集 = GBK
数据库国家/地区代码 = 86
数据库整理顺序 = UNIQUE
备用整理顺序 (ALT_COLLATE) =
动态 SQL 查询管理 (DYN_QUERY_MGMT) = DISABLE
对此数据库的发现支持 (DISCOVER_DB) = ENABLE
缺省查询优化类 (DFT_QUERYOPT) = 5
并行度 (DFT_DEGREE) = 1
在算术异常时继续 (DFT_SQLMATHWARN) = NO
缺省刷新有效期 (DFT_REFRESH_AGE) = 0
缺省维护的选项(DFT_MTTB_TYPES)的表类型 = SYSTEM
保留的高频值的数目 (NUM_FREQVALUES) = 10
保留的分位点数目 (NUM_QUANTILES) = 20
备份暂挂 = NO
数据库是一致的 = NO
前滚暂挂 = NO
复原暂挂 = NO
启用的多页文件分配 = YES
恢复状态的日志保留 = NO
日志记录状态的用户出口 = NO
Data Links 标记到期时间间隔(秒) (DL_EXPINT) = 60
Data Links 写令牌初始时间间隔 (DL_WT_IEXPINT) = 60
副本的 Data Links 数目 (DL_NUM_COPIES) = 1
删除后的 Data Links 时间(天数) (DL_TIME_DROP) = 1
大写的 Data Links 标记 (DL_UPPER) = NO
Data Links 标记算法 (DL_TOKEN) = MAC0
数据库堆(4KB) (DBHEAP) = 600
数据库共享内存大小(4KB) (DATABASE_MEMORY) = AUTOMATIC
目录高速缓存大小(4KB) (CATALOGCACHE_SZ) = (MAXAPPLS*4)
日志缓冲区大小(4KB) (LOGBUFSZ) = 8
实用程序堆大小(4KB) (UTIL_HEAP_SZ) = 5000
缓冲池大小(页) (BUFFPAGE) = 250
扩充存储段大小(4KB) (ESTORE_SEG_SZ) = 16000
扩充存储段的数目 (NUM_ESTORE_SEGS) = 0
锁定列表的最大存储量(4KB) (LOCKLIST) = 50
应用程序组内存集的最大大小(4KB) (APPGROUP_MEM_SZ) = 30000
应用程序组堆的内存百分比 (GROUPHEAP_RATIO) = 70
最大应用程序控制堆大小(4KB) (APP_CTL_HEAP_SZ) = 128
共享排序的排序堆域值(4KB) (SHEAPTHRES_SHR) = (SHEAPTHRES)
排序列表堆(4KB) (SORTHEAP) = 256
SQL 语句堆(4KB) (STMTHEAP) = 2048
缺省应用程序堆(4KB) (APPLHEAPSZ) = 256
程序包高速缓存大小(4KB) (PCKCACHESZ) = (MAXAPPLS*8)
统计信息堆大小(4KB) (STAT_HEAP_SZ) = 4384
检查死锁的时间间隔(毫秒) (DLCHKTIME) = 10000
每个应用程序的锁定百分比列表 (MAXLOCKS) = 22
锁定超时(秒) (LOCKTIMEOUT) = -1
更改的页阈值 (CHNGPGS_THRESH) = 60
异步页清除程序的数目 (NUM_IOCLEANERS) = 1
I/O 服务器的数目 (NUM_IOSERVERS) = 3
索引排序标志 (INDEXSORT) = YES
顺序检测标志 (SEQDETECT) = YES
缺省预取大小(页) (DFT_PREFETCH_SZ) = AUTOMATIC
跟踪修改的页数 (TRACKMOD) = OFF
容器的缺省数目 = 1
缺省表空间扩展数据块大小(页) (DFT_EXTENT_SZ) = 32
活动应用程序的最大数目 (MAXAPPLS) = AUTOMATIC
活动应用程序的平均数目 (AVG_APPLS) = 1
每个应用程序的最大打开 DB 文件数 (MAXFILOP) = 64
日志文件大小(4KB) (LOGFILSIZ) = 1000
主日志文件的数目 (LOGPRIMARY) = 3
辅助日志文件的数目 (LOGSECOND) = 2
已更改的至日志文件的路径 (NEWLOGPATH) =
日志文件路径 = D:\DB2\NODE0000\SQL00
002\SQLOGDIR\
溢出日志路径 (OVERFLOWLOGPATH) =
镜像日志路径 (MIRRORLOGPATH) =
首个活动日志文件 =
磁盘上已满的块日志 (BLK_LOG_DSK_FUL) = NO
事务使用的最大活动日志空间的百分比 (MAX_LOG) = 0
1 个活动 UOW 的活动日志文件的数目 (NUM_LOG_SPAN) = 0
组落实计数 (MINCOMMIT) = 1
软检查点前回收的日志文件的百分比 (SOFTMAX) = 100
启用的恢复的日志保留 (LOGRETAIN) = OFF
启用的日志记录的用户出口 (USEREXIT) = OFF
HADR 数据库角色 = STANDARD
HADR 本地主机名 (HADR_LOCAL_HOST) =
HADR 本地服务名称 (HADR_LOCAL_SVC) =
HADR 远程主机名 (HADR_REMOTE_HOST) =
HADR 远程服务名称 (HADR_REMOTE_SVC) =
远程服务器的 HADR 实例名 (HADR_REMOTE_INST) =
HADR 超时值 (HADR_TIMEOUT) = 120
HADR 日志写同步方式 (HADR_SYNCMODE) = NEARSYNC
第一个日志归档方法 (LOGARCHMETH1) = OFF
logarchmeth1 的选项 (LOGARCHOPT1) =
第二个日志归档方法 (LOGARCHMETH2) = OFF
logarchmeth2 的选项 (LOGARCHOPT2) =
故障转移日志归档路径 (FAILARCHPATH) =
错误时重试日志归档次数 (NUMARCHRETRY) = 5
日志归档重试延迟(秒) (ARCHRETRYDELAY) = 20
供应商选项 (VENDOROPT) =
启用的自动重新启动 (AUTORESTART) = ON
索引重新创建时间和重做索引构建 (INDEXREC) = SYSTEM (RESTART)
在索引构建期间记录页 (LOGINDEXBUILD) = OFF
loadrec 会话的缺省数目 (DFT_LOADREC_SES) = 1
要保留的数据库备份的数目 (NUM_DB_BACKUPS) = 12
恢复历史保留时间(天数) (REC_HIS_RETENTN) = 366
TSM 管理类 (TSM_MGMTCLASS) =
TSM 节点名 (TSM_NODENAME) =
TSM 所有者 (TSM_OWNER) =
TSM 密码 (TSM_PASSWORD) =
自动维护 (AUTO_MAINT) = OFF
自动数据库备份 (AUTO_DB_BACKUP) = OFF
自动表维护 (AUTO_TBL_MAINT) = OFF
自动 runstats (AUTO_RUNSTATS) = OFF
自动统计信息概要分析 (AUTO_STATS_PROF) = OFF
自动概要文件更新 (AUTO_PROF_UPD) = OFF
自动重组 (AUTO_REORG) = OFF
db2 =>
db2 => quiesce tablespaces for table EMP_ACT intend TO UPDATE
SQL0104N 在 "<标识>" 之后发现意外的标记
"intend"。期望的标记可能包括:"EXCLUSIVE"。 SQLSTATE=42601
db2 => quiesce tablespaces for table EMP_ACT intent TO UPDATE
DB20000I QUIESCE TABLESPACES 命令成功完成。
db2 => list tablespaces
当前数据库的表空间
表空间标识 = 0
名称 = SYSCATSPACE
类型 = 系统管理空间
内容 = 任何数据
状态 = 0x0000
详细解释:
正常
表空间标识 = 1
名称 = TEMPSPACE1
类型 = 系统管理空间
内容 = 系统临时数据
状态 = 0x0000
详细解释:
正常
表空间标识 = 2
名称 = USERSPACE1
类型 = 系统管理空间
内容 = 任何数据
状态 = 0x0002
详细解释:
已停顿:UPDATE
db2 => quiesce tablespaces for table EMP_ACT exclusive
DB20000I QUIESCE TABLESPACES 命令成功完成。
db2 => list tablespaces
当前数据库的表空间
表空间标识 = 0
名称 = SYSCATSPACE
类型 = 系统管理空间
内容 = 任何数据
状态 = 0x0000
详细解释:
正常
表空间标识 = 1
名称 = TEMPSPACE1
类型 = 系统管理空间
内容 = 系统临时数据
状态 = 0x0000
详细解释:
正常
表空间标识 = 2
名称 = USERSPACE1
类型 = 系统管理空间
内容 = 任何数据
状态 = 0x0004
详细解释:
已停顿:EXCLUSIVE
db2 =>
----现在如何解锁这种静默状态呢
db2 => quiesce tablespaces for table org reset
DB20000I QUIESCE TABLESPACES 命令成功完成。
db2 => list tablespaces
当前数据库的表空间
表空间标识 = 0
名称 = SYSCATSPACE
类型 = 系统管理空间
内容 = 任何数据
状态 = 0x0000
详细解释:
正常
表空间标识 = 1
名称 = TEMPSPACE1
类型 = 系统管理空间
内容 = 系统临时数据
状态 = 0x0000
详细解释:
正常
表空间标识 = 2
名称 = USERSPACE1
类型 = 系统管理空间
内容 = 任何数据
状态 = 0x0004
详细解释:
已停顿:EXCLUSIVE
db2 => quiesce tablespaces for table emp_act reset
DB20000I QUIESCE TABLESPACES 命令成功完成。
db2 => list tablespaces
当前数据库的表空间
表空间标识 = 0
名称 = SYSCATSPACE
类型 = 系统管理空间
内容 = 任何数据
状态 = 0x0000
详细解释:
正常
表空间标识 = 1
名称 = TEMPSPACE1
类型 = 系统管理空间
内容 = 系统临时数据
状态 = 0x0000
详细解释:
正常
表空间标识 = 2
名称 = USERSPACE1
类型 = 系统管理空间
内容 = 任何数据
状态 = 0x0000
详细解释:
正常
db2 =>
所以必须找到当初静默时的表,具体如下
1. 连接到数据库
2. 用 list tablespaces show detail #判断哪个tablespace处于quiesce状态和和取得对象(object)ID
3. 用 db2 “select tabname from syscat.tables where tablid=对象ID” #得到表名
4. 用 db2 quiesce tablespaces for table 表名 reset #去除quiesce状态
-----延伸