关于DB2数据库问题故障分析
案例一、
故障时间:2011-5-9     
完成时间:2011-5-10
故障
原因及错误代码
解决方案
备注
LINUX文件系统损坏,进不了系统
断电,会导致文件系统发生坏块,linux系统在引导时,有一个磁盘检查修复的机制,出现坏块的话,就会报错以对话的形式停下来,与你交互。
修复文件坏块:
LINUX分区有二种格式:ext2和ext3,针对不同的文件系统有以下两条命令进行修复:
Ext2:
#e2fsck –y –t ext3 /dev/VolGroup00/LogVol00
Ext3:
#fsck –y –t ext3 /dev/VolGroup00/LogVol00
这种修复过程完全默认对话,也就是说任何系统修复提示,默认YES修复大多数的文件损坏,非专业人士很难在修复进程中,叛断那个地方有问题,但修复的结果,表面上是令人满意的。
DB2表空间脱机挂起,连接数据库报错
文件系统损坏及其它操作
SQL0290N 不允许访问表空间。 SQLSTATE=55039 或者提示相关表空间错误
临时表空间在数据库下面一般建一个就可以了,我们建了好几个,可能是考虑到I/O效率吧,但这不重要,这个表空间内的数据,一般是临时存放的一些数据指针之类东东,挂起的话,可以删掉重建。
一、表空间文件脱机
--显示表空间脱机状态
db2 list tablespaces show detail
主要看输出的状态及文件类型,注:我这里处理系统和临时表空间脱机及损坏重建
--修改表空间为在线
1. db2 alter tablespace SYSCATSPACE switch online
二、重建临时及系统表空间
----创建BUFFER
db2 "create bufferpool ker pagesize 8k '/home/db2inst1/'  "
DB20000I The SQL command completed successfully.
-----创建系统临时表空间并指定BUFFER
db2 "create system temporary tablespace temp pagesize 8k bufferpool zy"
DB20000I The SQL command completed successfully.
----创建用户临时表空间
db2 "create USER temporary tablespace ORCLSP_USER_TMP  pagesize 8k managed by system using ('/home/db2inst1/temp')"
DB2数据库分几种表空间:系统表空间、临时表空间、缓存区表空间。我这里写的是针对临时表空间的,其它表空间的恢复机制,请查阅相关文档
DB2数据库某张表损坏导制HIS系统不能完成收费。
文件系统损坏及其它操作
***  SQL3015N  An SQL error "-901"ccurred during processing
***  SQL3015N  An SQL error "-1224" occurred during processing.(见海淀乡)
青龙桥报错为代码一:-901,
-------数据迁移步骤:
1、导出表结构(不是坏库的结构)
db2look -d orcl -e -l -td @ -a -x -i yygl -w yygl -o /home/db2inst1/backup/db2move/createdb.sql
2、导出表数据(坏库中完全导出)
db2move orcl export -u yygl -p yygl >db2moveout.log
3、创建空数据库
4、导入表结构
[db2inst1@localhost $]$db2 -td@ -vf createdb.sql >createdb.log
导入数据库数据(如:字典数据)
[db2inst1@localhost $]$ cd db2move
-----db2move orcl load 批量导入
[db2inst1@localhost db2move$]$ db2move orcl load >db2move.log
------db2move orcl import 一条一条审核导入
[db2inst1@localhost $]$ db2move orcl import -u db2inst1 -p db2inst1 >db2moveout.log
说明:实施数据迁移的前提是1、某个非关键业务的表发生错误,导致数据库不能正常操作。
2、凭个人经验"-901"一般是除坏表外其它表数据能导出来,可实现迁移。而"-1224",数据库损坏严重,一般导到坏表时,数据库就自动断开连接了,其它表基本上导不出来,不能进行迁移。
案例二、
故障时间:2011-5-30     
完成时间:2011-5-31
故障
原因及错误代码
解决方案
备注
DB2数据库某张表损坏导制HIS系统不能完成挂号、收费等操作
文件系统损坏及其它操作
***  SQL3015N  An SQL error "-1224" occurred during processing.(见海淀乡)
------断点恢复
1、 首先备份sample1数据库,查看归档日志的路径,看看最后归档的时间。(一般最后最后归档的时间的那个是坏的,前一个因该可以用例2011-06-08-01.21.25.000000。)
2、 将sample1数据库的活动日志文件拷贝到一个新的目录下(例/home/db2inst1/archivelogs/db2inst1/ORCL)。
3、 还原db2 restore database  sample2  from /home/db2inst1/  into sample1
4、 ----指定归档断点还原db2 "rollforward db orcl  to 2012-02-03-09.53.00.000000 using local time and stop overflow log path(/home/db2inst1/archivelogs/db2inst1/SAMPLE1/NODE0000/C0000000)"
断点还原前提条件:
1、 有备份数据库
2、 有归档日志
3、 恢复时要选择离断点最接近的时间,避免更多的数据坏失
db2数据库sql语句
案例三、
故障时间:2011-6-8  9:00     
完成时间:2011-6-8  21:00
故障
原因及错误代码
解决方案
备注
DB2数据库某张表损坏导制HIS系统不能完成挂号、收费等操作
文件系统损坏及其它操作
***  SQL3015N  An SQL error "-1224" occurred during processing.(见海淀乡)
同上
同上
2012-2-4 事故提示
[db2inst1@localhost ~]$ db2 connect to orcl
SQL1036C  An I/O error occurred while accessing the database.  SQLSTATE=58030

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。