1、db2基础操作手册 了解db2结构,特点 学会db2常规管理维护技能 开关机顺序 安全性管理 存储管理 软件管理 网络管理 进程管理 任务调度 性能监控 ha简介BufferpoolExtended MemoryDBHEAP(LOGBUF,CATALOGCACHE_SZ)UTILITYHEAP(BACKUP,RESTORE BUFFER)Package CacheLock ListSort Heap 创建实例创建实例 db2icrt db2icrtdb2icrt-u fenced_user_ID instance_name indb2icrt-u fenced_user_ID instance
2、_name in UNIX 删除实例删除实例 db2idrop f db2idrop f instance_nameinstance_name 列出实例列出实例 db2ilistdb2ilist 移植实例移植实例db2imigr db2imigr instance_nameinstance_name 升级实例升级实例 db2iupdt db2iupdt instance_nameinstance_name db2 profile registries db2 profile registries 操作系统的环境变量操作系统的环境变量 db2 dbm db2 dbm 配置参数配置参数 db2 d
3、b db2 db 配置参数配置参数Db2环境参数控制着db2的操作和功能 可以设置不同的级别可以设置不同的级别Instance/global/user/Instance/global/user/instance node/instance profileinstance node/instance profile 使用使用db2setdb2set命令,可以显示,修改,删除命令,可以显示,修改,删除 db2set all db2set all显示所有设置的显示所有设置的 db2set lr db2set lr显示所有可以设置的显示所有可以设置的 db2 db db2 db 配置参数配置参数 wi
4、ndows windows Set param=valueSet param=value unix ksh unix ksh和和bshbshExport param=valueExport param=value unix csh unix cshSetenv param=valueSetenv param=value 读取读取Db2 get database manager configuration Db2 get database manager configuration Db2 get database configuration for database_nameDb2 get d
5、atabase configuration for database_name 设置设置Db2 update dbm cfg using param valueDb2 update dbm cfg using param valueDb2 update db cfg for db_name using param valueDb2 update db cfg for db_name using param value 服务器端配置服务器端配置设置设置db2 profile registrydb2 profile registry的参数的参数DB2COMM,DB2COMM,如:如:Db2set
6、db2comm=tcpipDb2set db2comm=tcpip设置实例级参数设置实例级参数Db2 update dbm cfg using svcename 50000Db2 update dbm cfg using svcename 50000修改该参数,需要重起实例修改该参数,需要重起实例客户端可供选择方式之一客户端可供选择方式之一自动搜索自动搜索有两种方法:有两种方法:known known 和和 search search需要需要serverserver端的管理服务器启动端的管理服务器启动db2admin startdb2admin start配置管理服务器配置管理服务器updat
7、e admin cfg using discover update admin cfg using discover searchsearch配置实例配置实例update dbm cfg using discover_inst update dbm cfg using discover_inst enableenable配置数据库配置数据库update db cfg for db_name using update db cfg for db_name using discover_db enablediscover_db enable客户端可供选择方式之二客户端可供选择方式之二概要文件概要文
8、件客户端可供选择方式之三客户端可供选择方式之三手工配置手工配置编目节点编目节点Catalog tcpip node node_name remote ipCatalog tcpip node node_name remote ip地址地址Server 50000Server 50000编目数据库编目数据库Catalog db db_name as at node node_nameCatalog db db_name as at node node_name db2cmd db2cmd命令行交互模式,可以直接输入命令行交互模式,可以直接输入Db2Db2命令,操作系统命令前加!命令,操作系统命令
9、前加!命令行模式,可以直接识别操作系统命令,命令行模式,可以直接识别操作系统命令,db2db2命令前加命令前加db2db2执行脚本执行脚本Db2 f myfile.clpDb2 f myfile.clp脚本中用脚本中用-做注释做注释命令行选项命令行选项Db2 list command optionsDb2 list command options获得帮助获得帮助Db2?Db2?Db2?CommandDb2?CommandDb2?SqlnnnnDb2?SqlnnnnDb2?db2nnnnDb2?db2nnnn可以在控制中心调用可以在控制中心调用图形化的命令行处理器,功能类似图形化的命令行处理器,
10、功能类似特殊的功能特殊的功能可以得到可以得到sqlsql的执行计划的执行计划可以将可以将sqlsql加到脚本中加到脚本中 配置功能,可以显示和修改实例和数据库参数配置功能,可以显示和修改实例和数据库参数 备份、恢复、前滚数据库和表空间备份、恢复、前滚数据库和表空间 管理本地和远程数据库,可以创建管理本地和远程数据库,可以创建/删除、显示、编目远程删除、显示、编目远程数据库和去掉编目数据库和去掉编目 管理存储。创建、修改、删除表空间。管理存储。创建、修改、删除表空间。Create database db_name using codeset GBK territory zh_CN 模式是一组数据
11、库对象的集合,他提供了数据库对象的逻模式是一组数据库对象的集合,他提供了数据库对象的逻辑分类辑分类 如果不指定模式名,则用当前用户名如果不指定模式名,则用当前用户名切换当前模式可以用切换当前模式可以用set current schema xxxset current schema xxx或或set set current sqlid xxxcurrent sqlid xxx系统模式:系统模式:SYSIBM SYSIBM 基本的编目信息,不建议直接访问基本的编目信息,不建议直接访问SYSCAT SYSCAT 编目信息的只读视图,所有人具有查询权限,推荐的获取编目信编目信息的只读视图,所有人具有查
12、询权限,推荐的获取编目信息的途径息的途径SYSSTAT SYSSTAT 编目信息可更新视图,可以影响优化器编目信息可更新视图,可以影响优化器SYSFUN SYSFUN 用户定义函数用户定义函数创建新表:create table tabname(col1 type1 not null primary key,col2 type2 not null,.)根据已有的表创建新表:A:create table tab_new like tab_old B:create table tab_new as select col1,col2 from tab_old definition only三种表空间三
13、种表空间常规表空间常规表空间长表空间长表空间临时表空间临时表空间两类表空间两类表空间DMSDMSSMSSMS默认产生三个表空间:默认产生三个表空间:SYSCATSPACE,USERSPACE1,TEMPSPACE1SYSCATSPACE,USERSPACE1,TEMPSPACE1创建视图:create view viewname as select statement删除视图:drop view viewname 注:视图唯一能修改的是引用类型列,改变列的范围。其他定义好了都不能修改。当视图基于的基表drop后,视图变为无效。使用索引的主要原因有两条:确保数据值的惟一性 提高 SQL 查询的性
14、能 使用索引时,能够按一种排列好的顺序更迅速地访问数据,从而避免了使用临时存储排序数据这一耗时的任务。创建索引:create unique index idxname on tabname(col.)删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。索引的使用都是从WHERE中的条件得出的,从谓词是否使用索引可以将谓词分为可索引谓词和不可索引谓词,如下图,我们列出了索引谓词和不可索引谓词。谓词类型可索引注 释ColconY代表,=,=,=,但是不是可索引的。Col between con1 and con2Y在匹配系列中必须是最后的。Col in li
15、stY仅对一个匹配列Col is nullYCol like xyz%Y模糊匹配%在后面。Col like%xyzN模糊匹配%在前面。Col1Col2NCol1和col2来自同一个表ColExpressionN例如:c1(c1+1)/2Pred1 and Pred2YPred1和Pred2都是可索引的,指相同索引的列Pred1 or Pred2N除了(c1=a or c1=b)外,他可以被认为是c1 in(a,b)Not Pred1N或者任何的等价形式:Not between,Not in,Not like等等。可索引谓词可索引谓词数据库中数据的完整性或有效性极其重要。确保插入数据库的数据的有
16、效性非常困难,DB2 提供了定义某些可并入数据库的基于规则的约束或检查的能力。在 DB2 中,可使用以下检查来最小化将错误数据插入表中的风险:可检查一行中的一段,看它们是否符合所关联列的数据类型和长度。例如,“Geoff”值不匹配数据类型为 INTEGER 的列,因而带有该值的行会被拒绝,以这种方式来确保数据库中数据的有效性。若表上定义了主键约束,表中的各行必须在一列或共同构成主键的多个列中具有惟一值。若插入的行中存在与现有键相同的键,则新行将被拒绝。若表上已定义了惟一约束,表中的各行必须遵循此约束,即具有惟一值或构成惟一键的值组合。若已定义了外键约束,表中各行的外键列或多个列必须具有与父表中
17、一行的主键相匹配的值。在某些情况下,若一列或多个列定义为外键的一部分,而这个外键可为空,则空值也是可接受的。若列上已定义了检查约束,各行必须遵循此约束。例如,EMPLOYEE 表的 SALARY 列上的检查约束可能会阻止应用程序或用户插入工资低于 0 的新员工记录或行。插入表的任何 salary 值小于 0 的行都会被拒绝,从而最小化将错误数据插入表中的风险。尽可能设置为尽可能设置为not nullnot null,可以通过,可以通过defaultdefault的方式来解决的方式来解决insert nullinsert null的情况的情况查询查询 is null is null是一个数字型的
18、字段,当新行插入时,是一个数字型的字段,当新行插入时,db2db2自动产生一个唯一的数字自动产生一个唯一的数字一个表中只能有一个列被定义有该属性一个表中只能有一个列被定义有该属性可以定义成可以定义成alwaysalways或或defaultdefault的方式的方式AlwaysAlways方式,只能有方式,只能有db2db2产生,不允许应用提供值产生,不允许应用提供值DefaultDefault方式,可以由应用提供值,不能保证唯一性方式,可以由应用提供值,不能保证唯一性 select distinct column-list select distinct column-list from t
19、able-list from table-list where where group by having group by having order by ase/ease order by ase/ease保留行表左外连接中左边的表。右外连接中右边的表。全外连接中全部的表。替换 NULL 的表左外连接中右边的表 右外连接中左边的表 全外连接中全部的表 子查询可以由内连接和外连接代替,推荐做法子查询可以由内连接和外连接代替,推荐做法 in in、existexist可以由内连接代替可以由内连接代替select projno,projname,d.deptno,deptname from de
20、partment d select projno,projname,d.deptno,deptname from department d left outer join project p on p.deptno=d.deptno;left outer join project p on p.deptno=d.deptno;select projno,projname from department where deptno inselect projno,projname from department where deptno in(select deptno from project)
21、;(select deptno from project);not in not in、not existnot exist可以由外连接代替可以由外连接代替select projno,projname,d.deptno,deptname from department d select projno,projname,d.deptno,deptname from department d left outer join project p on p.deptno=d.deptnoleft outer join project p on p.deptno=d.deptnowhere p.proj
22、name is null;where p.projname is null;select projno,projname from department where deptno not inselect projno,projname from department where deptno not in(select deptno from project);(select deptno from project);内建函数内建函数列函数列函数:avg,sum,count,:avg,sum,count,操作函数操作函数:+:+类型转换函数类型转换函数decimaldecimal其他其他 用
23、户自定义函数用户自定义函数UDFUDF1、类型转化函数:、类型转化函数:转化为数字类型的:decimal,double,Integer,smallint,realHex(arg):转化为参数的16进制表示。转化为字符串类型的:char,varcharDigits(arg):返回arg的字符串表示法,arg必须为decimal。转化为日期时间的:date,time,timestamp2、时间日期:、时间日期:year,quarter,month,week,day,hour,minute,seconddayofyear(arg):返回arg在年内的天值Dayofweek(arg):返回arg在周内
24、的天值days(arg):返回日期的整数表示法,从0001-01-01来的天数。midnight_seconds(arg):午夜和arg之间的秒数。Monthname(arg):返回arg的月份名。Dayname(arg):返回arg的星期。烟草产品事业部培训中心烟草产品事业部培训中心3、字符串函数:、字符串函数:length,lcase,ucase,ltrim,rtrimCoalesce(arg1,arg2.):返回参数集中第一个非null参数。Concat(arg1,arg2):连接两个字符串arg1和arg2。insert(arg1,pos,size,arg2):返回一个,将arg1从p
25、os处删除size个字符,将arg2插入该位置。left(arg,length):返回arg最左边的length个字符串。locate(arg1,arg2,):在arg2中查找arg1第一次出现的位置,指定pos,则从arg2的pos处开始找arg1第一次出现的位置。posstr(arg1,arg2):返回arg2第一次在arg1中出现的位置。repeat(arg1,num_times):返回arg1被重复num_times次的字符串。replace(arg1,arg2,arg3):将在arg1中的所有arg2替换成arg3。right(arg,length):返回一个有arg左边length
26、个字节组成的字符串。space(arg):返回一个包含arg个空格的字符串。substr(arg1,pos,):返回arg1中pos位置开始的length个字符,如果没指定length,则返回剩余的字符。4、数学函数:、数学函数:Abs,count,max,min,sumCeil(arg):返回大于或等于arg的最小整数。Floor(arg):返回小于或等于参数的最小整数。Mod(arg1,arg2):返回arg1除以arg2的余数,符号与arg1相同。Rand():返回1到1之间的随机数。Power(arg1,arg2):返回arg1的arg2次方。Round(arg1,arg2):四舍五入
27、截断处理,arg2是位数,如果arg2为负,则对小数点前的数做四舍五入处理。Sigh(arg):返回arg的符号指示符。-1,0,1表示。truncate(arg1,arg2):截断arg1,arg2是位数,如果arg2是负数,则保留arg1小数点前的arg2位。5、其他:、其他:nullif(arg1,arg2):如果2个参数相等,则返回null,否则,返回参数1烟草产品事业部培训中心烟草产品事业部培训中心数据库备份数据库备份 是数据库的一个完整的副本。除了数据外,备份副本还包含关是数据库的一个完整的副本。除了数据外,备份副本还包含关于表空间、容器、数据库配置、日志控制文件和恢复历史文件于表
28、空间、容器、数据库配置、日志控制文件和恢复历史文件的信息。注意,备份不会存储数据库管理器配置文件或注册表的信息。注意,备份不会存储数据库管理器配置文件或注册表变量。只有数据库配置文件才会得到备份。变量。只有数据库配置文件才会得到备份。要执行备份,需要要执行备份,需要 SYSADM SYSADM、SYSCTRL SYSCTRL 或或 SYSMAINT SYSMAINT 权限权限要为数据库要为数据库 sample sample 执行完整的离线备份,并将备份副本存储在执行完整的离线备份,并将备份副本存储在 d:mybackups d:mybackups 目录中,可以目录中,可以使用以下命令:使用以下
29、命令:BACKUP DATABASE sample TO d:mybackupsBACKUP DATABASE sample TO d:mybackups要使用其他选项为数据库要使用其他选项为数据库 sample 执行完整离线备份,可以使用以下命令:执行完整离线备份,可以使用以下命令:(1)BACKUP DATABASE sample(2)TO/db2backup/dir1,/db2backup/dir2(3)WITH 4 BUFFERS(4)BUFFER 4096(5)PARALLELISM 2 我们来更仔细观察前面的命令:我们来更仔细观察前面的命令:1.表明要备份的数据库的名称(或别名)。
30、表明要备份的数据库的名称(或别名)。2.指定用于存储备份的位置。指定用于存储备份的位置。3.表明在备份操作期间可以使用多少个内存缓冲区。使用多个缓冲区可以提高性能。表明在备份操作期间可以使用多少个内存缓冲区。使用多个缓冲区可以提高性能。4.表明每个缓冲区的大小。表明每个缓冲区的大小。5.决定使用多少媒介读决定使用多少媒介读/写进程写进程/线程来进行备份。线程来进行备份。DB2 事务日志对于恢复来说是至关重要的。它们跟踪数据库对象和数据上发生的变化。主日志文件和辅助日志文件主日志文件和辅助日志文件主日志文件 是在建立第一个数据库连接或者数据库活动时立即分配的。辅助日志文件 是在需要时动态分配的。
31、活动日志活动日志 如果以下两个条件之一得到满足,则一个日志被认为是活动的(active):它包含关于尚未被提交或回滚的事务的信息。它包含关于已经被提交但是其更改还没有被写(具体化)到数据库磁盘的事务的信息。在线归档日志在线归档日志 离线归档日志离线归档日志 1.1.配置日志空间配置日志空间 DB2DB2数据库通过日志文件维护数据的完整性和一致性。数据库通过日志文件维护数据的完整性和一致性。DB2 DB2 数数据库的日志空间可通过如下公式计算:据库的日志空间可通过如下公式计算:日志空间日志空间=(主日志文件(主日志文件+辅助日志文件)辅助日志文件)*日志文件尺寸日志文件尺寸 其中:其中:主日志文
32、件由参数主日志文件由参数 LOGPRIMARY LOGPRIMARY 控制,控制,二级日志文件由参数二级日志文件由参数 LOGSECOND LOGSECOND 控制控制日志文件尺寸由参数日志文件尺寸由参数 LOGFILSIZ LOGFILSIZ 控制控制2.2.正确的处理日志满正确的处理日志满根据实际的情况配置以上相关参数。根据实际的情况配置以上相关参数。如果出现日志空间满的情况,如果出现日志空间满的情况,DB2 DB2 会将系统挂起。会将系统挂起。这时,应这时,应该增加该增加 LOGSECOND LOGSECOND 参数,而不要尝试参数,而不要尝试 db2stop force db2stop
33、 force 或者或者 kill kill。一个数据库的日志记录的类型是由数据库参数 LOGARCHMETH1 决定的。当 LOGARCHMETH1 为 OFF(默认值)时,归档日志记录被禁用,循环日志记录被启用。为了启用归档日志记录,可以将 LOGARCHMETH1 设置为以下值中的任何一个值:LOGRETAIN:日志文件将被保留在活动日志目录中USEREXIT:日志的归档和检索是由用户提供的用户出口程序自动执行的,这个出口程序必须由 db2uext2 调用。这个程序用于将在线归档日志移动到与活动日志目录不同的一个目录中,或者移动到另一个媒介上。当在 ROLLFORWARD 操作期间需要某些
34、离线归档日志时,这个程序还可以用于将离线归档日志取出到活动日志目录中。在 Windows 下,db2uext2 必须存储在 sqllibbin 目录中,在 UNIX 下,db2uext2 必须存储在 sqllib/adm 目录中DISK:directory_name:与 USEREXIT 使用相同的算法。DB2 不调用用户出口程序,而是自动将日志文件从活动日志目录归档到指定的目录TSM:management class name:与 USEREXIT 使用相同的算法。日志被归档到本地 Tivoli Storage Manger(TSM)服务器上。management class name 参数
35、是可选的。如果没有指定该参数,则使用默认的管理类VENDOR:library_name:与 USEREXIT 使用相同的算法。日志是使用指定供应商的库来归档的由于向后兼容的原因,数据库配置文件仍然包含参数 LOGRETAIN 和 USEREXIT。从 8.2 版开始,这两个参数已经被 LOGARCHMETH1 取代。如果更新 USEREXIT 或 LOGRETAIN 参数,那么 LOGARCHMETH1 将自动被更新,反之亦然。在线备份在线备份BACKUP DATABASE sample ONLINE TO/dev/rdir1,/dev/rdir2BACKUP DATABASE sample
36、ONLINE TO/dev/rdir1,/dev/rdir2由于在线备份允许用户在执行备份的同时访问数据库,因此这些用户作出由于在线备份允许用户在执行备份的同时访问数据库,因此这些用户作出的更改很可能不会存储在备份副本中。因此,仅仅凭借在线备份还不足以的更改很可能不会存储在备份副本中。因此,仅仅凭借在线备份还不足以进行恢复,另外还需要备份操作期间收集到的相应的日志。进行恢复,另外还需要备份操作期间收集到的相应的日志。当在线备份完成时,当在线备份完成时,DB2 DB2 强制关闭当前活动日志(并将其归档),因此很强制关闭当前活动日志(并将其归档),因此很容易在备份完成时收集当前活动日志。容易在备份
37、完成时收集当前活动日志。为了将日志也备份到备份副本中,可以使用为了将日志也备份到备份副本中,可以使用 BACKUP DATABASE BACKUP DATABASE 命令的命令的 INCLUDE LOG INCLUDE LOG 选项。这样可以确保即使丢失了日志,也仍然可以使用备份选项。这样可以确保即使丢失了日志,也仍然可以使用备份镜像中包含的日志来恢复到最小的时间点上。镜像中包含的日志来恢复到最小的时间点上。例如,要对例如,要对 sample 数据库和日志进行在线备份,并以数据库和日志进行在线备份,并以/dev/rdir1 作作为目标目录,可以发出:为目标目录,可以发出:BACKUP DATA
38、BASE sample ONLINE TO/dev/rdir1 INCLUDE LOGS 使用一个备份文件作为输入,输出是一个新的或已有的数据库。要恢复到已有的数据库,需要 SYSADM、SYSCTRL 或 SYSMAINT 权限。要恢复到新的数据库,则需要 SYSADM 或 SYSCTRL 权限。要执行 sample 数据库的恢复,可以使用以下命令:(1)RESTORE DATABASE sample(2)FROM C:DBBACKUP (3)TAKEN AT 20190314131259 (4)WITHOUT ROLLING FORWARD (5)WITHOUT PROMPTING 上面的
39、例子中:1.表明要恢复的数据库镜像的名称。2.指定要从中读取输入备份文件的位置。3.如果该目录中有多个备份镜像,该选项将基于时间戳(备份名称的一部分)标识特定的备份。4.如果一个数据库启用了归档日志记录,那么当该数据库被恢复时,它将自动被置于 rollforward pending 状态。这一行告诉 DB2 不要将该数据库置于 rollforward pending 状态。5.当执行 RESTORE 时,您将看不到任何提示。备份镜像中包括日志文件,那么可以使用 RESTORE DATABASE 命令的 LOGTARGET 选项恢复日志文件。为了使用 C:DBBACKUP 目录中的备份镜像恢复
40、SAMPLE 数据库,并将日志文件恢复到 C:DB2NODE0000SQL00001SQLOGDIR 目录,可以发出:RESTORE DATABASE sample FROM C:DBBACKUP LOGTARGET C:DB2NODE0000SQL00001SQLOGDIR 也可以通过使用 LOGS 关键字只恢复日志文件,而不恢复数据库:RESTORE DATABASE sample LOGS FROM C:DBBACKUP LOGTARGET C:DB2NODE0000SQL00001SQLOGDIR Db2move dbname export sn db2inst1-u username
41、 p password Db2move dbname export sn db2inst1-u username p password Db2move dbname import sn db2inst1-u username p passwordDb2move dbname import sn db2inst1-u username p passwordEXPORT 实用程序使用一条 SQL SELECT 语句或 XQUERY 语句将数据从数据库表提取到一个文件中。数据可以被导出到 DEL、IXF 或 WSF 文件中。建议在 export 中包括 MESSAGES 子句,以捕获导出过程中遇到的
42、错误、警告和包含有用信息的消息。要想成功地调用 EXPORT 实用程序,必须拥有 SYSADM 或 DBADM 权限,或者拥有 EXPORT 命令中所访问的表或视图上的 CONTROL 或 SELECT 特权。一个简单的导出的例子。下面的命令将 SELECT 语句的结果导出到一个 DEL 格式的文件中。消息文件 msg.out 用于记录有用的信息和遇到的错误或警告:EXPORT TO myfile.del OF DEL MESSAGES msg.out SELECT staff.name,staff.dept,org.location FROM org,staff WHERE org.dept
43、numb=staff.dept;IMPORT 实用程序用一个输入文件将数据填充到一个表中,输入文件的文件类型可以是 ASC、DEL、IXF 或 WSF。目标是一个表、一个类型化表(typed table)或者一个视图。但是,不能导入到系统表、临时表和物化查询表。例子:IMPORT FROM emp.ixf OF IXF MESSAGES msg.out CREATE INTO employee IN datatbsp INDEX IN indtbsp下面显示的 IMPORT 命令具有五个不同的选项:IMPORT FROM file_name OF file_type MESSAGES mess
44、age_file INSERT|INSERT_UPDATE|REPLACE|REPLACE_CREATE|CREATE INTO target_table_name INSERT 选项将导入的数据插入表中。目标表必须已经存在。INSERT_UPDATE 将数据插入表中,或者更新表中具有匹配主键的行。目标表必须已经存在,并且定义了一个主键。REPLACE 选项删除所有已有的数据,并将导入的数据插入到一个已有的目标表中。使用 REPLACE_CREATE 选项时,如果目标表已经存在,则导入实用程序删除已有的数据,并插入新的数据,就像 REPLACE 选项那样。如果目标表还没有定义,那么首先创建这个
45、表以及它的相关索引,然后再导入数据。正如您可能想像的那样,输入文件必须是 PC/IXF 格式的文件,因为那种格式包含对导出表的结构化描述。如果目标表是被一个外键引用的一个父表,那么就不能使用 REPLACE_CREATE。CREATE 选项首先创建目标表和它的索引,然后将数据导入到新表中。该选项惟一支持的文件格式是 PC/IXF。还可以指定新表所在表空间的名称。LOAD LOAD 实用程序是用于为表填充数据的另一种方法。该实用实用程序是用于为表填充数据的另一种方法。该实用程序将格式化的页面直接写入到数据库中。这种机制允许比程序将格式化的页面直接写入到数据库中。这种机制允许比 IMPORT IM
46、PORT 实用程序更有效地移动数据。实用程序更有效地移动数据。LOAD FROM input_source OF input_type MESSAGES LOAD FROM input_source OF input_type MESSAGES message_file INSERT|REPLACE|TERMINATE|RESTART message_file INSERT|REPLACE|TERMINATE|RESTART INTO target_tablenameINTO target_tablename LOAD 可以以四种不同的模式执行:INSERTINSERT 模式将输入数据添加到一
47、个表中,而不更改已有的表数据。REPLACEREPLACE 模式删除表中所有已有的数据,然后用输入数据填充这个表。TERMINATETERMINATE 模式终止装载操作,并回滚到它开始时所在的时间点。一个例外是,如果指定了 REPLACE 模式,那么表将被删节。RESTARTRESTART 模式用于重新开始之前被中断的装载命令。它将自动从最近的一致点继续。要使用这个模式,可以指定与前一个 LOAD 命令相同的选项,但是这一次加上 RESTART。它使实用程序可以发现在装载处理中生成的所有需要的临时表。因此,千万不要手动删除装载命令所生成的任何临时文件,除非您确信不再需要这些临时文件。一旦装载成
48、功完成,这些临时文件将自动被删除。默认情况下,这些临时文件是在当前的工作目录中创建的。也可以使用 TEMPFILES PATH 选项指定存放临时文件的目录。db2move 是用于在 DB2 数据库之间移动大量表的一个数据移动工具。这个命令中支持的动作有 EXPORT、IMPORT、LOAD 和 COPY。EXPORT、IMPORT 和 LOAD 这几个动作的行为与前一屏中描述的完全相同。db2move 将一组用户表从系统编目表中提取出来,并将每个表以 PC/IXF 格式导出。然后,PC/IXF 文件可以被导入或装载到另一个 DB2 数据库中。下面是一些例子。这个命令用指定的用户 ID 和密码以
49、 REPLACE 模式导入 sample 数据库中的所有表:db2move sample IMPORT-io REPLACE-u userid-p password 下面的命令以 REPLACE 模式装载 db2admin 和 db2user 这两个模式下的所有表:db2move sample LOAD-sn db2admin,db2user-lo REPLACE runstatsDB2 利用先进的基于成本的优化器来决定如何访问数据。它的决定很大程度上要受到关于数据库表和索引的大小的统计信息的影响。因此,应该使数据库统计信息不断更新,以便于选择有效的数据访问计划。#db2 runstats o
50、n table 表名 and index all对系统表以及变化比较频繁的表运行统计信息,建议写成shell脚本自动运行。数据库中添加和删除的数据在物理上可能不是按连续的顺序放置的。在这种情况下,DB2 必须执行附加的读操作来访问数据。这通常意味着需要更多的磁盘 I/O 操作,我们都知道那些操作是开销很大的。在这种情况下,应该考虑在物理上将表重组,使相关的数据存放在相近的位置,以减少 I/O 操作。REORG 是用于重组表和/或索引中的数据的一个实用程序。REORGCHK 是另一种数据维护实用程序,它可以选择检索当前数据库统计信息或更新数据库统计信息。检查表是否需要重组使用REORGCHK命令