db2 load 命令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
当DB2 的数据库启用了前滚恢复模式,即将日志由循环日志方式改为归档日志,以便用户在进行恢复操作时,可在恢复了数据库或表空间的备份后,再通过前滚归档日志中的事务,恢复数据库备份时间点之后提交的事务,最大程度的保护数据库的数据。
而DB2 的LOAD 实用程序为实现快速导入数据的功能,除采用了通过直接向数据库中写入格式化的数据页装载数据,导入过程中不激活触发器,不会检查参考完整性和表检查约束当等方式外,还最小化了记录事务日志的操作。在LOAD 的LOAD、BUILD、DELETE 和INDEX COPY 四个处理阶段中,仅在DELETE 阶段记录对每个删除事件记日志,即只对每个违反唯一约束的行的删除操作记日志,因此整个LOAD 操作仅记录了极少的日志。
由于LOAD 最小化了日志的记录,有因启用了前滚恢复的数据库在恢复在线备份时需要归档日志的特性,对于这种数据库的LOAD 操作,为避免执行LOAD 操作后,表在使用ROLLFORWARD 命令前滚归档日志的过程中因缺少日志而被置为非正常状态,DB2 为LOAD 命令提供了如下选项:
·COPY NO(缺省)
·COPY YES
·NONREVERABLE
为更清楚地说明这些选项的作用,这里将以举例的方式进行说明。而在开始操作之前,首先了解一下DB2 备份操作所产生的映象文件的形式和命名特点:
在UNIX 环境下是文件的形式:
Databasealias.Type.Instancename.Nodename.Catnodename.Timestamp.number
在Windows 环境下是子目录及文件的形式:
Databasealias.Type\Instancename\Node0000\Catn0000\yyyymmdd\hhmmss.number
而其中的Type 则因备份类型的不同而不同:
0 -- 数据库全备份
3 -- 表空间备份
4 -- 由LOAD 操作产生的备份
1. 进行一次数据库的全备份:
首先对已启用前滚恢复模式的SAMPLE 数据库进行一次全备份:
E:\TEST>db2 backup db sample
备份成功。此备份映像的时间戳记是:20051230174105
这时看到在当前目录下产生了一个SAMPLE.0 的子目录,表明产生的是一个数据库全备份。下面将对这些现象逐个予以举例说明:
2. 关于COPY NO:
在LOAD 操作结束时,将表所在的表空间置于“备份暂挂”状态,此时虽然其中的表可以进行SELECT 操作,但不能进行UPDATE 和DELETE 操作。为使该表状态恢复正常,除去备份暂挂状态,必须手动对其表空间执行一个BACKUP 命令。由于该选项为缺省选项,如果LOAD 命令中未指明,则默认为使用该选项,如:
E:\TEST>db2 connect to sample
E:\TEST>db2 load from staff.del of del insert into staff
E:\TEST>db2 list tablespaces
:
表空间标识= 2
名称= USERSPACE1
类型= 系统管理空间
内容= 任何数据
状态= 0x0020
详细解释:
备份暂挂
:
E:\TEST>db2 select count(*) from staff
1
-----------
70
1 条记录已选择。
E:\TEST>db2 update staff set id=335 where id=340
DB21034E 该命令被当作SQL 语句来处理,因为它不是有效的“命令行处理器”命令。在SQL 处理期间,它返回:
SQL0290N 不允许存取表空间。SQLSTATE=55039
在手动对USERSPACE1 表空间进行一次备份操作后,表空间状态将正常,再次尝试更新操作就会成功:
E:\TEST>db2 backup db sample tablespace (userspace1)
备份成功。此备份映像的时间戳记是:20051230184841
命令完成后可以在当前目录下看到产生了一个SAMPLE.3 的子目录,表明产生的是一个表
空间级的备份。
E:\TEST>db2 connect to sample
E:\TEST>db2 list tablespaces
表空间标识= 2
名称= USERSPACE1
类型= 系统管理空间
内容= 任何数据
状态= 0x0000
详细解释:
正常
而所产生这份关于表空间的备份可在数据库因前滚操作将表空间置为“复原暂挂”状态时用于将表空间状态恢复为正常,并恢复LOAD 操作对该表的修改。如当前滚数据库超过LOAD 时间点后,表空间将被置为复原暂挂状态:
E:\TEST>db2 restore db sample taken at 20051230174105
DB20000I RESTORE DA TABASE 命令成功完成。
E:\TEST>db2 rollforward db sample to end of logs and stop
SQL1271W 已恢复数据库"SAMPLE",但在节点"0"上有一个或多个表空间脱机
E:\TEST>db2 connect to sample
E:\TEST>db2 list tablespaces
表空间标识= 2
名称= USERSPACE1
类型= 系统管理空间
内容= 任何数据
状态= 0x0100
详细解释:
复原暂挂
此时可利用这一表空间级的备份进行恢复操作:
E:\TEST>db2 restore db sample tablespace (userspace1) taken at 20051230184841
DB20000I RESTORE DA TABASE 命令成功完成。
E:\TEST>db2 connect to sample
E:\TEST>db2 list tablespaces
:
表空间标识= 2
名称= USERSPACE1
类型= 系统管理空间
内容= 任何数据