DB2一些异常情况的处理
1、DB2中几种遇到的SQL1032N出错的解决
在使用DB2以来,碰到了几次出现提示SQL1032N错误,每次出错时出错信息大概如下:
11/21/2004 22:15:33 0 0 SQL1042C 发生意外的系统错误。
SQL1032N 未发出启动数据库管理器的命令。 SQLSTATE=57019。
每 次出现问题后,都到网上找了很多资料,也问了许多人,费了些力才搞定的。几次出错的原因和解决方法都不尽相同,解决后我也只做了个简单的记录。一直想把它 们写下来,方便方便后来也遇到同样问题,跟我一样到处查找的人,中间也写了一些废话,比如我如何查找错误,甚至于作了哪些无用功。
第一种SQL1032N出错,是某天DB2的实例突然无法启动了,用db2start就提示大概如下的出错信息:
12/30/2004 11:28:39 0 0 SQL1042C 发生意外的系统错误。
SQL1032N 未发出启动数据库管理器的命令。 SQLSTATE=57019。
初次遇到这种问题,还以为会不会是数据库没起来,情急之下什么命令比如激活数据库只类的,都拿来试了试,实例都起不来,当时运行这些命令,肯定都是不行的了。
后来突然发现,在开启机器的时候,提示有个服务出错了没启动,由此推想应该就是在Window服务里设置为自动启动的DB2实例服务没有正常启动,我在服务里面手动启动它,提示这样的错误:
WINDOWS不能在本地计算机启动DB2-DB2-0.有关更多信息,查阅系统事件日志.并参考特定服务代码-8000.
查看事件管理器,有这样的记录:
DB2-DB2-0服务因4294959296服务性错误而停止.来源SERVICE CONTROL 事件ID:7024
做了这么多,全都是无用功,只限于知道了服务没起来,等于没找。
之后通过各方询问,终于找到了原因:License到期了。
在db2cmd界面下运行db2licm -l,可以很明显的看到许可证已经过期了。
知道原因所在了,剩下的,就是自己想办法去解决这个问题了。
小结:直到现在,在有些论坛中,还很经常看到有人发这种帖子来问,至少我在两个月内就碰到了三次这种帖子。所以,如果不是可以确定已经有永久授权的情况下,发生这种情况,用db2licm -l查一下,也不算坏事。
还有一种情况,跟前面的差不多
也是在启动实例的时候出现如上的SQL1032N错误。在windows NT服务中无法启动DB2-DB0服务,同时提示:
出错1069,登陆失败错误。
这个错误比较简单,是用来启动服务的用户名或密码错误。只需要在服务的属性中,选择登陆选项卡,选择用户,并填好密码,重新启动服务就可以了。
小结:这种情况,一般发生在切换用户登陆NT系统或者更改了DB2用户的密码的情况下。
第三种情况是这样的:
最开始,是突然DB2的客户端连接不上server了,提示如下:
C:Documents and SettingsAdministrator>db2 connect to fjdldw user install using install3211
SQL30081N 检测到通信错误。正在使用的通信协议:"TCP/IP"。正在使用的通信API:
"SOCKETS"。检测到错误的位置:"10.142.12.1"。检测到错误的通信函数:"connect"。协
议特定的错误代码:"10061"、"*"、"*"。 SQLSTATE=08001
我本来还以为真是什么TCP/IP协议的问题,去查找了很多与SQL30081N错误相关的信息,都无法解决问题。后来到了在服务器上检查,发现DB2实例未起来。
用db2start命令,仍是提示:
D:ProgramSQLLIBBIN>db2start
12/30/2004 11:28:39 0 0 SQL1042C 发生意外的系统错误。
SQL1032N 未发出启动数据库管理器的命令。 SQLSTATE=57019
用db2 get dbm cfg查看配置文件,因未作过其他操作,所以没有什么异常
查看相应实例下的db2diag.log文件,摘取真正有用的部分出错日志:
Failed to create the memory segment used for communication with fenced routines. If re-starting db2, ensure no db2fmp processes were on the instance prior to start. Otherwise, you can ajust this value through DB2_FMP_COMM_HEAPSZ db2set value, or by decreasing your ASLHEAPSZ setting.
依据ensure no db2fmp processes were on the instance prior to start,将任务管理器里的db2fmp进程全部杀掉,然后重新启动实例。db2start,OK!
小结:后来查了一查,db2fmp进程用于执行受保护的存储过程,或者自定义函数。这次出错的原因,一直没有弄清楚。但是,通过这次解决,可以说明一点,出了错误,查查db2diag.log文件,总是不会错的。^_^
2、DB2许可证过期问题解决 && Eclipse之中jdbc调用DB2
最笨的办法是将系统日期向前调。
使 用的连接字符串如"jdbc:db2://10.10.50.194:50000/ebank",在获取连接时出现异常如下: “com.ibm.db2.jcc.c.DisconnectException: encoding not supported!!”。在搜索 Google未果后只好自己硬着头皮找办法解决。发现另外一个同事在WSAD中连接正常(我用的Eclipse),灵机一动将引用的JRE从Sun的标准 JDK1.4.2换成了WSAD带的IBM的JDK1.4,连接时正常!又是一个JDK的问题啊。
只之后可能会出现一个license的问题,需要将DB2之中的几个db2jcc_license_cisuz.jar以及db2jcc_license_cu.jar加入到项目之中去。
但是这样仍然存在Timestamp从数据库之中不能用,ResultSet.getTimestamp()读出来的问题?如何解决?
耗了我将近一天的时间的采用"com.ibm.db2.jcc.DB2Driver"连接DB2数据库的时候,读取Timestamp类型的数据的时候老 是出现异常的情况,报告出现ArrayOutofIndex什么的错误。今天,终于把它给解决了,原来,使用的DB2 V8.1之中带的 db2jcc.jar包是不正确的,改成了DB2V8.2之中的带的db2jcc.jar包程序就运行正确了。
经验,JDBC连接DB2数据库的时候出现的很多的奇怪的问题是由包不对所导致的,遇到这种问题一定要检查所使用的驱动的包是否正确。
3、 SQL30081N 检测到通信错误。正在使用的通信协议:"TCP/IP"。正在使用的通信API:"SOCKETS"。检测到错误的位置: "192.168.1.12"。检测到错误的通信函数:"connect"。协议特定的错误代码:"10061"、"*"、"*"。 SQLSTATE= 08001
遇到该问题,有以下几种方法去查找原因:
一、看看端口号有没有配置正确,看一下配置参数svcename跟services文件中配置的db2端口号是否一致,windows一般用50000,unix/linux一般用60000
二、连接出错首先看看服务器ip 和端口写对没有
ip如果没错就要看看服务器的db2服务端口对不对。另外对于服务器下面这些也要注意
检查服务器的配置情况如下:
验证存在的DB2数据库
db2 list db directory
db2 list db directory show detail
验证实例使用的通讯协议,查看DB2COMM变量
db2set -all
查看数据库管理器的配置,查看SVCENAME(特指tcpip协议)
db2 get dbm cfg
查看/etc/services中,有无与上面对应SVCENAME的端口,例如:
db2cDB2 50000/tcp
要确认服务器是否在监听,可以用netstat -an 来查看端口是否处于LISTEN状态
linux:
我在 /etc/services 下添加了个 db2idb2inst1 60000/tcp
然后 db2 update dbm cfg using svcename db2idb2inst1
查看端口 netstat -an | grep -i 60000
还是没有找到端口
开始认为是端口没开的缘故
打开linux的60000端口
nc -l 60000 &
查看
netstat -an | grep -i 60000
显示监听状态 tcp 0 0 0.0.0.0:60000 0.0.0.0:* LISTEN
我在win下用DB2配置工具配置数据源,测试连接,一直停留在测试状态,没有显示成功
在linux下查看此时端口状态
tcp 0 0 0.0.0.0:60000 0.0.0.0:* LISTEN
tcp 0 0 192.168.0.39:60000 192.168.0.38:2371 TIME_WAIT
这时我觉得应该不是端口的问题,而应该是DB2没有设置监听打开
网上搜索得出,需要设置db2支持tcpip协议以便客户端访问
db2set DB2COMM=tcpip
我重启linux后发现监听 60000 已经自动打开,不需要手动 nc -l 60000 &
此时再通过DB2配置助手添加数据库,连接成功...
===========================================================================
大致总结了下DB2安装后简单配置的步骤
linux 下安装 DB2
.......
安装完成
安装授权文件 ( 不然90天后会过期 )
/opt/ibm/db2/V9.5/adm/db2licm -a /home/Hong/Download/exp/db2/license/db2expc_uw.lic
创建实例
opt/IBM/db2/V8.1/instance/db2icrt -u db2ins1 db2ins1 # useradd, groupadd
配置DB2的端口
db2 get dbm cfg | grep -i service # 显示DB2默认的端口5000x
可以通过修改 /etc/services 文件来更改DB2的端口号
在 /etc/services 后面添加
db2idb2inst1 60000/tcp
然后 db2 update dbm cfg svcename db2idb2inst1
重启DB2
再查看 db2 get dbm cfg | grep -i service # 显示 TCP/IP Service name (SVCENAME) = db2idb2inst1
设置DB2 实例环境变量
#db2set DB2AUTOSTART=YES (设置db2自动随linux启动)
db2set DB2COMM=tcpip (设置db2支持tcpip协议以便客户端访问,通过这个环境变量,当db2start后,会自动打开 svcename 监听端口)
创建数据库
create database db_1...
远程连接的机子上创建编目
db2 catalog tcpip node FEDN0000 remote 192.168.0.39 server 60000
db2 catalog database dbname as db_1 at node FEDN0000
分享到:
相关推荐
DB2中几种遇到的SQL1032N出错的解决
在数据库管理领域,性能优化是一项关键任务,特别是对于像IBM DB2 Universal Database (UDB)这样的大型企业级数据库系统。本文档深入探讨了如何使用Java示例程序PERFORMER来监控和优化DB2 UDB的性能,特别针对OLTP...
启动数据库是使用DB2服务的第一步,通常,你可以通过控制台或者命令行来启动DB2实例。例如,在命令行中输入`db2start`来启动DB2数据库管理器。相反,使用`db2stop`命令则可以停止数据库服务。 数据库的激活是一个...
【DB2通用数据库性能监控程序】是DB2数据库管理系统中用于监测数据库运行状态和性能的重要工具。它提供了全面的数据库信息,包括应用连接状态、缓冲池使用、锁资源、磁盘活动、预读取数据量等多个层面的实时数据,...
标题:DB2系统命令示例 描述:本文档旨在为每个DB2系统命令提供实例,因为这些示例...通过本文档,我们深入了解了DB2系统的几个关键命令及其使用场景,这将有助于数据库管理员更有效地管理和操作DB2环境。然而,正如文
这些知识对于DB2数据库管理员来说是非常宝贵的,能够帮助他们在不同的应用场景中高效地管理和使用DB2系统。此外,通过实践操作和案例研究,学习者可以更深入地理解这些概念,并将其应用到实际工作中。
- 发出`db2admin start`命令启动管理服务器。 - 在高可用(HA)环境中,需要确保启动命令已经在脚本中正确配置。 2. **检查DB2实例是否已经启动** - **重要性**: 确认DB2实例已经启动是进行数据库操作的基础。 - *...
常见的数据库管理软件:甲骨文的oracle,IBM的db2,sql server, Access,MySQL(开源,免费,跨平台). 数据库系统 数据库系统DBS(Data Base System,简称DBS)通常由软件、数据库和数据管理员组成。 软件主要包括...
- 方法一:通过Windows的服务管理器启动Oracle服务。 - 方法二:右键点击“我的电脑” -> “管理” -> “服务与应用程序” -> “服务”,找到Oracle相关服务启动。 **进入Oracle的方法:** - 方法一:通过Oracle...
- **选项D**:需要系统管理员在发出命令前连接到目标数据库。 **正确答案**:**选项A**。时间点恢复通常需要归档日志文件,以便能够将数据恢复到故障点之前的状态。 ##### 5. HADR环境下LOGINDEXBUILD表属性的影响...
IBM DB2作为一款高性能的关系型数据库管理系统,在并发控制方面有着出色的表现。本文将通过表格分析法来探讨DB2中的并发机制,特别是关于事务、隔离级别、锁以及锁兼容性的内容。 #### 二、基础概念回顾 ##### 1. ...
”)但是当IBM公司开始把它的DB2数据库系统移植到Linux上、SGI公司宣布把Linux作为它基本的桌面操作系统、甚至Dell公司都把Red Hat Linux作为它服务器计算机的一个预安装选项的时候——真正的“警报”才响了起来。...
- 支持SYBASE、DB2和ORACLE数据库。 正确答案包括A、B、C。 #### 十九、支持SNMP的设备 - **支持SNMP的设备**: - 包括ISN8850、Radium8750、MA系列(MA5100、MA5200)、MD5500等。 正确答案包括A、B、C、D...
- **配置数据立即采集**:当接收到GUI(图形用户界面)发出的指令时,NMC会立即启动配置数据的采集过程。 - **配置数据纠错**:通过比较OMC配置数据与NMC旧数据,检测两者之间的差异并提供反馈。 - **性能管理**...
”)但是当IBM公司开始把它的DB2数据库系统移植到Linux上、SGI公司宣布把Linux作为它基本的桌面操作系统、甚至Dell公司都把Red Hat Linux作为它服务器计算机的一个预安装选项的时候——真正的“警报”才响了起来。...
db2 IBM DB2在企业级的应用最为广泛, 在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器。收费 大型企业 Access 微软 Access是一种桌面数据库,只适合数据量少的应用,在处理少量 数据和单机访问的数据库时...
当ISP服务提供商因不可抗力因素导致服务中断时,系统应能及时监测到这一情况,并发出警报;同样地,当某个IDDC机房发生故障时,也需具备同样的监测和警报机制。此外,在收到相应的行政命令后,系统还需能够迅速切换...