首页 > 开发 > 综合 > 正文

DB2 LOAD的三种模式 COPY NO, COPY YES和NONRECOVERABLE

2024-07-21 02:51:50
字体:
来源:转载
供稿:网友
DB2数据库中,由于LOAD操作不会记录日志,那么对于采用了归档日志模式的数据库,LOAD的时候就会有一个问题:如果日后数据库出现问题,需要通过restore+rollforward操作来恢复数据的话,rollforward读取日志的时候根本没有对应数据的记录,也就无法恢复该表的数据。如何避免这种现象呢?有三种思路:1.) 优先保证数据完整:LOAD完成之后,做一个完整的数据库/表空间的备份。2.) 兼顾效率和数据完整:对LOAD进去的数据存放一个副本3.) 优先保证效率:不管不顾,真出了问题,restore + rollforward之后不要这个表了(或者有其他方式能恢复表的数据)。针对这三种思路,LOAD命令有三个参数,LOAD的时候只能三选一:COPY NO COPY NO 会强制将表所在的整个表空间置于Backup Pending的状态,只能对该表空间读取操作,不能更新或删除,必须备份表空间/数据库之后才能解除该状态。 COPY NO是默认的选项 COPY YES COPY YES 会生成一个文件,里面包含了被load数据的副本, 表所在表空间不会被置于backup pending的状态。 NONRECOVERABLE NONRECOVERABLE 不会把表空间置于Backup Pending的状态,这样load完成之后,表空间状态仍然是正常的。但这样做的后果就是如果出了问题,后续恢复数据库,并rollforward的时候,会将该表置为drop pending的状态,访问的时候会报SQL1477N 备注:以上讨论针对的是归档日志模式的数据库。如果采用的是循环日志,不存在上述问题: COPY NO和NONRECOVERABLE是等价的,都不会使表空间状态变为BACKUP PENDING;而COPY YES参数则不适用;  参考链接: LOAD command
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表