IBM db2与oracle一样都是后台大型数据库,在我国许多银行的后台服务器都是db2。

db2的PENDING状态

  1. backup pending状态:是在修改数据库的日志模式所导致的;解决方法是对数据库再做一次备份。
  2. set integrity pending状态:是在load过程中,我们装载的数据发生违反参照完整性约束的行,导致表无法使用;结局方法:运行脚本:
set integrity for 表名
immediate checked for exception
in 表名 use <exception table name>//将异常行放入例外表中

DB2共有几种恢复方式?

三种

  1. 版本恢复:恢复通过使用一个以前建立的数据库备份,可以将数据库恢复到与原来状态完全一样。但只能恢复到你做的备份点上。
  2. 崩溃恢复:一般情况下自动完成,通过对系统参数配置,若服务器突然宕机,系统下次会启动读取日志,做过的进行redo,没做完的进行回滚。
  3. 前滚恢复:先进行版本恢复,再进行崩溃恢复。

分析import和load的区别。

import:

  1. 移动大量数据时速度变慢
  2. 创建支持XF格式的表和索引
  3. 可以导入到表,视图,别名中
  4. 在导入期间允许写的选项访问
  5. 所有导入的行都会被记录到日志
  6. 会检查约束
    load:
  7. 移动大量数据速度较快
  8. 表和索引事先必须存在
  9. 只能向表中导入
  10. 导入数据期间只能读操作,不允许写操作
  11. 触发器不会检查,会有唯一性检查。

若发布“select * from db2admin.employee”之后,系统返回错误信息“db2admin.employee是个未定义的名称”,分析是什么原因造成的?

  1. 可能是因为模式名schema不正确,当前并不是代表db2admin
  2. 可能是因为大小写有问题,当在建表的时候表名用上了引号,那么表名就会区分大小写。

在实验中曾发布如下语句:

create trigger reorder

after update

of qty on stock

referencing new as n

for each row mode db2sql

when (n.qty <=5)

insert into reorder values (n.itemno, current timestamp)

请解释该语句所实现的具体功能。分析该触发器能否阻止同一商品被重复插入reorder表中?若不能阻止,应该如何修改trigger?

语句功能:当顾客购买商品后,当商品库存小于5后,就往reorder中添加一条语句,代表该物品需要采购,该触发器无法阻止,修改如下:

create trigger reorder
after update
of qty on stock 
referncing new as n ,old as m
for each row mode db2sql
when (n.qty<=5 and m.qty>5)
insert into reorder values (n.itemno,current timestamp)