Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103695895
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-14 12:55:45

    来源:csdn    作者:胡晶玉

二、数据库问题

1.数据连接问题

无法连接数据库,常见的错误有代码页错误,通讯协议错误,数据库状态错误等。

对代码页类错误,可以通过设置db2codepage,db2country来解决,这两个变量需要用db2set 设置成与数据库一致的值。

当发生通讯类错误时,首先要要检查环境变量DB2COMM=TCPIP是否已经设置,然后要检查dbm cfg的SVCENAME,该变量可以直接设置成端口号,或者设置成服务名,该服务名要在services文件中设置成对应的端口号。要检查该端口号是否已经被其他服务占用。在启动数据库后,可以运行netstat –an |grep ,来查看该端口处于的状态。

TCP    0.0.0.0:50000          0.0.0.0:0              LISTENING

还有一种情况,当连接数据库时,数据库处于backup pending 状态,无法连接。这是只要对数据库做一个备份就可以了。

Tip:通常导致数据库处于备份赞挂的原因

当一个数据库从循环日志改成归档日志时,数据库要求进行一次脱机备份,在重新启动数据库后,数据库就处于备份赞挂的状态

对于一个使用线形日志的数据库,当做load时,表空间会处于备份赞挂的状态,为了避免这种情况,load命令需要使用copy yes,或者nonrecoverable参数。

2.数据库损坏

数据库最严重的问题莫过于数据库损坏,那么当数据库损坏时,最好的办法是从备份恢复数据库。

如果无法从备份恢复,可以根据损坏的原因尝试相应的解决方案。

由于存储问题导致部分数据文件损坏,但是数据库还可以连接,这种情况可以采用导出数据库的表结果和数据的方法来恢复数据库。当然对损坏的表,导出是无法完成的,这是可以使用db2dart的导出数据功能来导出这些损坏的表的数据。

如果数据库损坏到已经无法连接的程度,那么除了从备份恢复,唯一的办法是使用db2dart来导出所有的数据了。

Tip:如何使用db2dart来导出数据

运行命令

db2dart  /DDEL
# Table object data formatting start.
# Please enter
# Table ID or name, tablespace ID, first page, num of pages:
# (suffic page number with 'p' for pool relative),

按照提示输入表名,表空间id,起始页数,需要导出的页数

3.数据库的活动日志被删除

这个问题经常会遇到。也属于数据库损坏的一种情况。并且数据库无法连接。

首先考虑是否有可以恢复的备份,如果有,可以从备份恢复,然后前滚到日志的末尾,可以完全恢复该数据库。如果没有可用的备份来恢复,可以通过IBM的技术支持中心来协助解决。如果想自己解决那只有使用db2dart工具了。

Tip:如何避免数据库的活动日志被删除

启用数据库的镜像日志功能

启用数据库的日志出口程序,这样可以避免手工来删除活动日志目录中的日志

当一定要手工删除活动日志目录中的归档日志时,使用命令

PRUNE LOGFILE PRIOR TO log-file-name,]

可以避免失误将活动日志删除

阅读(459) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~