问题原因:db2 load 数据的时候没加nonrecoverable,load数据的时候没注意数据库字符的长度限制,导致load失败,然后表空间被锁。参考了下面的方式解决了,文章最后有原文链接
解决方案:
根据错误描述确定问题原因为表空间不可访问,
1)首先查看表空间状态:
执行db2 list tablespaces命令,查看表空间状态。
查看各表空间的状态(State),若表空间状态不为0x0000,表明该表空间有问题。
数据库的异常表空间状态如下:
TableSpace ID = 13
Name = DAT_EFS02
Type = Database managed space
Contents = All permanent data. Large table space.
State = 0x0020
Detailed explanation:
Backup pending
TableSpace ID = 14
Name = DAT_EFS03
Type = Database managed space
Contents = All permanent data. Large table space.
State = 0x0020
Detailed explanation:
Backup pending
TableSpace ID = 21
Name = IDX_EFS02
Type = Database managed space
Contents = All permanent data. Large table space.
State = 0x0020
Detailed explanation:
Backup pending
TableSpace ID = 22
Name = IDX_EFS03
Type = Database managed space
Contents = All permanent data. Large table space.
State = 0x0020
Detailed explanation:
Backup pending
2) 从表空间状态可看出,异常表空间状态为0x0020(Backup pending)状态。
若要解决该异常状态,需要执行backup db <database_name> tablespace <tablespace_name> online to /dev/null命令。
db2 => backup db test tablespace DAT_EFS02 online to /dev/null
Backup successful. The timestamp for this backup image is : 20210203143906
db2 => backup db test tablespace DAT_EFS03 online to /dev/null
Backup successful. The timestamp for this backup image is : 20210203143909
db2 => backup db test tablespace IDX_EFS02 online to /dev/null
Backup successful. The timestamp for this backup image is : 20210203144002
db2 => backup db test tablespace IDX_EFS03 online to /dev/null
Backup successful. The timestamp for this backup image is : 20210203144022
3)执行完成后,再次查看表空间状态,确认全部表空间状态是否正常
db2 list tablespaces