近日,在DB2数据库中创建表时,报如下错误:
DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned:
SQL0960C The maximun number of objects hav been created in the table spaces with the following names or identifiers "TBS_TEST_DATA". SQLSTATE=57011
经分析,应该是该表空间上创建的表数量超过了最大值,导致无法在该表空间上创建新的表。
之前一直以为,只要表空间的空间还有富余,就可以在上面创建无数个表,现在看来,不是这样的。
我报错时,是创建表时,使用一个日期字段,设置了范围分区,且每天一个分区。而事后来看,DB2数据库,是将每一个分区都当作了一个对象,所以导致对象数达到了阀值。
咨询DBA,也没有找到这个上限是多少,如何配置的。
当前的解决方法,只能删除范围分区的设置。如果一张表太大,就按年或月拆分为多张物理表。
经过测试,在同一个表空间上建表,最多创建54000多张表就无法继续创建了。不知道这个上限是不是和数据库的其他设置有关系。