千家信息网

DB2数据库的SQL1042C错误的解决方法是什么

发表于:2024-09-25 作者:千家信息网编辑
千家信息网最后更新 2024年09月25日,这篇文章给大家介绍DB2数据库的SQL1042C错误的解决方法是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。测试机上一个老的DB2数据库在正常停库后,在启库时报SQL104
千家信息网最后更新 2024年09月25日DB2数据库的SQL1042C错误的解决方法是什么

这篇文章给大家介绍DB2数据库的SQL1042C错误的解决方法是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

测试机上一个老的DB2数据库在正常停库后,在启库时报SQL1042C错误。具体信息如下:

# su - db2inst1

$ db2start

2013-04-23 13:23:08 0 0 SQL1042C An unexpected system error occurred.

SQL1032N No start database manager command was issued. SQLSTATE=57019

这个错误必须要检查的信息:

o 看看文件系统的空间是否足够

o 查看是否有足够的内存和交换/调页空间可用

o 系统时间和日期设置正确,关系到db2授权许可的过期

o 查看跟踪文件,db2diag.log里面的内容来确认问题的所在

经过检查,前三个问题正常。现在查看DB2DIAG.LOG日志,有如下信息需注意

PID : 1388642 TID : 1 PROC : db2star2

INSTANCE: db2inst1 NODE : 000

FUNCTION: DB2 UDB, base sys utilities, LicCheckProcessors, probe:20

MESSAGE : ADM12017E The number of processors on this machine exceeds the

defined entitlement of "1" for the product "DB2 Enterprise Server

Edition". The number of processors on this machine is "2". You should

purchase additional processor based entitlements from your IBM

representative or authorized dealer and update your license using the

License Center or the db2licm command line utility. For more

information on updating processor based licenses, refer to the Quick

Beginnings manual for your platform. For more information on the

db2licm utility, refer to the DB2 Command Reference.

这个问题CPU的授权许可,关于这个问题可以查看一下许可文件信息

$ db2licm -l

Product Name = "DB2 Enterprise Server Edition"

Product Identifier = "DB2ESE"

Version Information = "8.2"

Expiry Date = "Permanent"

Registered Connect User Policy = "Disabled"

Number Of Entitled Connect Users = "5"

Enforcement Policy = "Soft Stop"

Number of processors = "2"

Number of licensed processors = "1"

Database partitioning feature = "Not entitled"

Annotation = ""

Other information = ""

Product Name = "DB2 High Availability Disaster Recovery

Option"

Product Identifier = "DB2HADR"

Version Information = "8.2"

Expiry Date = "Permanent"

Annotation = ""

Other information = ""

Product Name = "DB2 Advanced Security Option"

Product Identifier = "DB2ASO"

Version Information = "8.2"

Expiry Date = "Permanent"

Annotation = ""

Other information = ""

如果你注意到红色的两行,将会发现系统处理器的个数与授权个数不一样。这种情况下,使用db2licm -n "DB2ESE" 2 (注:2对应系统的处理器个数)即可。

命令如下:

#/home/db2inst1/sqllib/adm/db2licm -n "DB2ESE" 2

DBI1418I The number of licensed processors on this system has

been updated successfully.

然后再看,CPU许可已变过来了。

$ db2licm -l

Product Name = "DB2 Enterprise Server Edition"

Product Identifier = "DB2ESE"

Version Information = "8.2"

Expiry Date = "Permanent"

Registered Connect User Policy = "Disabled"

Number Of Entitled Connect Users = "5"

Enforcement Policy = "Soft Stop"

Number of processors = "2"

Number of licensed processors = "2"

Database partitioning feature = "Not entitled"

Annotation = ""

Other information = ""

Product Name = "DB2 High Availability Disaster Recovery

Option"

Product Identifier = "DB2HADR"

Version Information = "8.2"

Expiry Date = "Permanent"

Annotation = ""

Other information = ""

Product Name = "DB2 Advanced Security Option"

Product Identifier = "DB2ASO"

Version Information = "8.2"

Expiry Date = "Permanent"

Annotation = ""

Other information = ""

再启数据库发现依然报SQL1042C错误

$ db2start

2013-04-23 13:59:28 0 0 SQL1042C An unexpected system error occurred.

SQL1032N No start database manager command was issued. SQLSTATE=57019

继续查看日志发现有如下信息:

PID : 315522 TID : 1 PROC : db2sysc 0

INSTANCE: db2inst1 NODE : 000

FUNCTION: DB2 UDB, oper system services, sqloRunInstance, probe:210

CALLED : OS, -, unspecified_system_function

OSERR : EPERM (1) "Not owner"

针对这个问题,可以用如下方法解决:

1) 停止所有DB2进程

#ps -ef | grep db2

如有DB2进程,可以强制终止(kill),确保所有DB2进程已终止;

2) 执行以下语句

#/usr/opt/db2_08_01/instance/db2iupdt tstdb #实例名

or

#/usr/opt/db2_08_01/instance/db2iupdt -e

db2inst1

db2inst2

DBI1070I Program db2iupdt completed successfully.

注:更新实例,用于实例获得一些新的产品选项(特别是更改后)或修订包的访问权。


然后再启

$ db2start

2013-04-23 14:23:39 0 0 SQL1063N DB2START processing was successful.

SQL1063N DB2START processing was successful.

$ db2 connect to tstdb

Database Connection Information

Database server = DB2/6000 8.2.3

SQL authorization ID = DB2INST1

Local database alias = tstdb

最后数据库终于起来了,经测试一切正常。

关于DB2数据库的SQL1042C错误的解决方法是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0