我对昨晚数据库升级出现的问题现在总结一下:
下边是错误:
SQL0668N 原因码为 "1",所以不允许操作 SQLSTATE=57016
1. 最根本的问题是load的问题:
Copy YES/ NONRECOVERABLE
对于DMS表空间,load默认为copy NO 模式,此模式下,load完成后,表空间会处于暂挂状态,这时候只能查表中的数据,需要对表空间进行一次备份,才可以对表进行update、insert等操作,那么我们可以使用如上2个命令,对于Copy YES,load完成以后会自动进行一次备份操作;NONRECOVERABLE 指出load不可恢复,此命令符不会产生表空间暂挂,也不会自动进行表空间备份,但是他有一个缺点就是,不能恢复,当数据库进行回滚的时候,不能还原,危险等级还是比较高一点,不过个人觉得也NONRECOVERABLE比较实用。
例:LOAD CLIENT FROM 'F:s1.del' OF DEL INSERT INTO DB2ADMIN.ZXTABLES NONRECOVERABLE
LOAD CLIENT FROM 'F:s1.del' OF DEL INSERT INTO DB2ADMIN.ZXTABLES COPY YES
2.List tablespaces show detail 看到的ox0200 找个状态就是表空间暂挂了。
Tablespace ID = 2
Name = USERSPACE1
Type = System managed space
Contents = Any data
State = 0x0020
Detailed explanation:
Backup pending
3.load导致表空间挂起深入分析:
首先是因为数据库的日志的设置方式引起的。我们平常使用的数据库的日志方式是循环日志,而这次使用的归档日志,这就是以前我们load 每次都是正常的,而这次为什么出现了这个原因。
设置数据库归档日志:
>db2 UPDATE DB CFG FOR test USING LOGARCHMETH1 "DISK:E:\db2log"
这时要备份数据库
db2_all "<<+0<db2 backup database test to D:\data compress"
db2_all "<<-0<db2 backup database test to D:\data compress"
重新连接数据库,可以访问了。下来开始实验:
load client from d:\MOBILE_PRODUCT_INST_200812.del of del insert into MOBILE_PRODUCT_INST_200812
load 完成后,我们看一下表空间的状态,发现表空间已经挂起了。这时我们只能去备份找个表空间
db2_all "<<+0<db2 backup database test tablespace userspace1 to D:\data compress"
db2_all "<<-0<db2 backup database test tablespace userspace1 to D:\data compress"
备份完成后,可以访问这个表了。
接下来看正确的load的方式:
load client from d:\MOBILE_PRODUCT_INST_200812.del of del insert into MOBILE_PRODUCT_INST_200812 NONRECOVERABLE;
注意加了个参数NONRECOVERABLE 意思是:不可恢复。
4.总结:
当你的数据库处在archivelog模式下,用load倒数时就会出现备份暂挂,因为load不写日志,自然会要求你备份的.或者用import,或用带copy yes,norecovery的load。
当 DB2的数据库启用了前滚恢复模式,即将日志由循环日志方式改为归档日志,以便用户在进行恢复操作时,可在恢复了数据库或表空间的备份后,再通过前滚归档日志中的事务,恢复数据库备份时间点之后提交的事务,最大程度的保护数据库的数据。
而 DB2 的 LOAD 实用程序为实现快速导入数据的功能,除采用了通过直接向数据库中写入格式化的数据页装载数据,导入过程中不激活触发器,不会检查参考完整性和表检查约束当等方式外,还最小化了记录事务日志的操作。在 LOAD 的 LOAD、BUILD、DELETE 和 INDEX COPY 四个处理阶段中,仅在 DELETE 阶段记录对每个删除事件记日志,即只对每个违反唯一约束的行的删除操作记日志,因此整个 LOAD 操作仅记录了极少的日志。
由于 LOAD 最小化了日志的记录,有因启用了前滚恢复的数据库在恢复在线备份时需要归档日志的特性,对于这种数据库的 LOAD 操作,为避免执行 LOAD 操作后,表在使用 ROLLFORWARD 命令前滚归档日志的过程中因缺少日志而被置为非正常状态,DB2 为 LOAD 命令提供了如下选项:
COPY NO(缺省)
COPY YES
NONREVERABLE
分享到:
相关推荐
数据库事务总结数据库事务总结数据库事务总结数据库事务总结
Sqlite数据库学习总结,希望能有帮助
数据库学期总结(小论文形式),选取了一部分内容进行扩展
各种数据库的连接文档JDBC连接数据库经验总结
数据库课程总结数据库课程总结
数据库编程总结 数据库编程总结 数据库编程总结
数据库基础学习的总结数据库基础学习的总结数据库基础学习的总结数据库基础学习的总结
大学简单数据库知识总结
数据库索引总结,索引的作用?索引的注意事项?数据库索引的结构?
mysql整理资料上传,包含了DDL(数据库定义语言)、DML(数据库操纵语言)的增删改查,还有DCL(数据库控制语句)以及事务隔离级别、数据库主从的原理和配置,以及一些sql调优的信息等等
Oracle到Mysql数据库迁移总结Oracle到Mysql数据库迁移总结Oracle到Mysql数据库迁移总结Oracle到Mysql数据库迁移总结
数据库知识点总结,大学计算机专业本科生数据库课程期末复习资料
ACCP6.0C#语言和数据库技术基础总结
个人总结空间数据库复习要点:第一章、 空间数据库原理
ASP连接11种数据库语法总结。。。。。
数据库系统期末总结,对学习数据库系统课程有一定帮助
数据库单表查询的总结 还有数据库的其他总结分开上传 数据库单表查询的总结 还有数据库的其他总结分开上传
我的数据库学习总结,这个是我的学习用的练习题
数据库和表的创建;数据库和表内容的操作;主键与外键关系...
数据库运算符总结 SQL运算符的总结 使用查看方便