循序渐进DB2(第2版)-第6章 数据移动

目录

6.1.数据移动格式

6.1.1.定界ASCII文件格式(DEL/ASCII)

6.1.2.非定界ASCII文件格式

6.1.3.PC/IXF文件格式

6.1.4.WSF工作表文件格式

6.1.5.游标

6.2.EXPORT

6.2.1.EXPORTt概述

6.2.2.导出数据

6.3.IMPORT

6.3.1.IMPORT概述

6.3.2.导入数据

6.3.3.导入的工作机制

6.3.4.IMPORT限制

6.4.LOAD

6.4.1.LOAD概述

6.4.2.装入数据

6.4.3.在线LOAD

6.4.4.LOAD过程

6.4.5.监控LOAD进度

6.4.6.LOAD期间和之后的表空间状态

6.4.7.使用CURSOR文件类型移动数据

6.4.8.提高LOAD性能

6.4.8.1.并行性和装入

6.4.8.2.用于提高装入性能的选项

6.4.8.3.文件类型修饰符

6.4.9.LOAD失败恢复

6.5.db2move和db2look

6.5.1.db2move

6.5.2.db2look

7.指令详解

7.1.import

7.2.export

7.3.load

7.4.db2move

7.5.db2look


6.1.数据移动格式

被DB2用作数据移动的中间文件的格式有4种:非界定ASCII文件(ASCII)、定界ASCII文件(DEL/ASCII)、WSF文件、PC/IXF文件和游标。

6.1.1.定界ASCII文件格式(DEL/ASCII)

定界ASCII文件是带有行定界符、列定界符的顺序ASCII文件。每个DEL ASCII文件都是一个ASCII字符流,ASCII字符流先按行排序,然后按列排序的单元值组成。数据流中的行由行定界符分割,行中的列值由列定界符分割。文件类型修饰符可用于修改这些定界符的默认值。(通俗来讲,就是把table中的内容以字符的方式明文展示出来,可以通过文本工具查看内容)

6.1.2.非定界ASCII文件格式

非定界ASCII文件也是ASCII字符流。数据流中的行由行定界符分隔,而行中的每一列则通过起始位置、结束位置来定义。

非定界ASCII文件格式有2种变体:定长ASC、变长ASC。对于定长ASC来说,所有记录都是定长的,对于变长ASC来说,记录是由行定界符(始终是换行符)定界。在非定界ASCII文件中,非定界指的是列值未由定界符来分割;

在导入或者装入ASC数据时,如果指定reclen文件类型修饰符,那么表示数据文件是定长ASC文件,否则是变长ASC文件。

(通俗来讲,就是把table中的内容以字符的方式明文展示出来,只不过没有列分隔符,都是空格空格出来)

6.1.3.PC/IXF文件格式

PC/IXF文件由一些可变长的记录组成,包括标题记录、表记录、表中每个列的列描述符记录、表中每行的一个或多个数据记录。

PC/IXF文件记录是由一些包含字符数据的字段组成。

PC/IXF文件格式是一种通用关系数据库交换格式,支持很多关系数据类型,包括特定关系数据库产品可能不支持的某些类型。PC/IXF文件格式保留了这一灵活性,PC/IXF文件是一种非常通用的格式,被多种数据库管理系统支持,可以用于在其他数据库进行数据转移。

跨平台传输数据时,建议使用PC/IXF文件格式。这是因为PC/IXF可以保留很多表属性(例如:主键、唯一索引、列信息、索引信息等),并且可以使用DB2数据移动工具用一种与平台无关的方式来处理数据。

6.1.4.WSF工作表文件格式

工作表文件格式WSF是一种专有的二进制文件格式,用于在DB2、Lotus1-2-3、Symphony产品之间交换数据。

WSF文件不能被load支持,因此如果工作中不使用Lotus1-2-3、Symphony产品则可以忽略这种数据格式。

6.1.5.游标

游标cursor是select语句返回的结果集。这种格式仅限于load使用,这种格式优点在于减少了中间文件的生成,从而提高load速度。

6.2.EXPORT

6.2.1.EXPORTt概述

EXPORT实用程序会使用SQL SELECT语句或者XQuery语句抽取数据,并将该信息存放到文件中。

EXPORT工具本质是把一条SQL语句的结果集导出到文件中,EXPORT面向的是SQL而不是单纯的是表,可使用输出文件移动数据以便将来执行导入或者装入操作,或者将数据用于分析。

EXPORT导出所必须的参数:

①用于存储已导出数据的操作系统文件的路径、名称;

②EXPORT支持对输出文件使用IXF/WSF/DEL数据格式;

③对于大部分导出操作,需要提供SQL语句来指定需要进行检索来导出的数据;

6.2.2.导出数据

成功的调用EXPORT实用程序,必须拥有sysadm或者dbadm权限,或者拥有export命令中所访问的表或视图上的control或select特权。在运行export实用程序之前,必须连接或能够隐式连接到要从中导出数据的数据库;

因为export程序会发出commit语句,因此应在运行export程序之前通过发出commit或者rollback语句来完成所有事务并释放所有锁定;

EXPORT可以通过3种方式来触发:图形化的控制中心、客户端发出export命令、调用admin_cmd存储过程,下面着重讲解一下export命令常用参数:

常用参数名称

参数说明

TO filename

指定导出文件的名称

OF filetype

指定导出文件的类型,export

LOBFILE filename

指定LOB文件的一个或多个基文件名。如果表中有LOB类型数据要被导出,就指定一个或多个文件用于存储LOB数据。

导出操作中创建LOB文件时,通过从这个列表向当前路径lob-path追加当前基名,然后追加一个3位的序列号来构建文件名,例如当前lob-path路径是/u/foo/lob/path,而当前LOB基名是bar,那么创建的LOB文件分别是/u/foo/lob/path/bar.001、/u/foo/lob/path/bar.002等等依次排序

LOBS TO lob-path

如果表中有LOB类型数据需要导出,就指定一个或多个目录文件,用于存储LOB数据。LOBFILE参数指定的文件将存储在这个路径下。

MESSAGES message-file

Export程序会将错误消息、警告消息、参考消息写到标准ASCII文本消息文件、对于CLP以外的所有接口,必须预先使用MESSAGES参数来指定这些文件的名称。如果要使用CLP并且不指定消息文件,那么export会将消息写到标准输出,但是如果想指定用于写入警告消息和错误消息的消息文件,为此,需要添加MESSAGES参数和消息文件名称。

MODIFIED BY filetype-mod

指定一些额外的文件修饰符参数。文件类型修饰符提供了运行用户更改数据、日期、时间戳、代码页格式之类的许多选项,或者为输出文件指定特定的定界分隔符。

METHOD N column-name

可指定要用于导出数据的不同列名。如果没有指定,将使用表中相应列的名字。导出表仅仅支持N方法。

select-statement

利用SELECT语句指定要导出的数据。

XMLFILE/XML TO/XMLSAVESCHEMA

可以从包括一个或多个XML数据类型列的表中导出数据。使用XMLFILE、XML TO、XMLSAVESCHEMA参数指定有关如何存储已导出文档的详细记录。

 

同时,还可以直接调用ADMIN_CMD存储过程来导出数据:

call sysproc.admin_cmd(‘export to /home/db2inst1/output/sales.del of del messages /home/db2inst1/output/export.msg select * from sales’)

6.3.IMPORT

6.3.1.IMPORT概述

IMPORT程序会使用SQL-INSERT语句来向表、类型表、视图中填充数据,如果目标表和目标视图中已包含数据,那么输入数据可替换replace现有数据,也可以追加insert到现有数据。

6.3.2.导入数据

IMPORT所需权限和特权:

操作

权限

特权

注释

创建新的表

Sydadm/dbadm

Createtab

IMPORT允许在导入期间动态地创建新表。这只能应用于表。

在现有的表中插入数据

Sydadm/dbadm

Control、insert、select

可应用于表和视图

替换现有表中的数据

Sydadm/dbadm

Control/(insert、select、update、delete)

可应用于视图

在现有的表中追加数据

Sydadm/dbadm

Select和insert

可应用于视图

在运行IMPORT实用程序之前,必须连接或能够隐式连接到要从中导入数据的数据库;

鉴于IMPORT程序会发出commit语句,因此应在运行IMPORT程序之前通过发出commit或者rollback语句来完成所有事务并释放所有锁定;

IMPORT导出所必须的参数:

①导入文件的路径、名称;

②目标表或视图的名称或别名;

③输入文件中的数据格式;

④用于导入数据的方法;

IMPORT可以通过3种方式来触发:图形化的控制中心、客户端发出IMPORT命令、调用admin_cmd存储过程,下面着重讲解一下IMPORT命令常用参数:

常用参数名称

参数说明

filename

指定进行数据导入的文件

OF filetype

指定导入文件的类型:DEL/WSF/IXF/ASC

LOBS FROM lob-path

如果表中有LOB类型数据需要导入,就指定一个或多个目录文件,用于存储LOB数据。

MODIFIED BY filetype-mod

指定一些额外的文件修饰符参数。文件类型修饰符提供了运行用户更改数据、日期、时间戳、代码页格式之类的许多选项,或者为输出文件指定特定的定界分隔符。

ALLOW NO ACCESS

脱机导入,在NO ACCESS方式下,导入会在插入任何行之前获取针对目标表的独占锁定X。挂起对该表的锁定有2个影响:

①首先,如果其他程序挂起针对导入目标表的表锁定或行锁定,那么IMPORT将等待这些应用程序落实或回滚更改。

②其次,IMPORT运行时,请求锁定的任何其他程序会等待导入操作完成。

ALLOW WRITE ACCESS

联机导入,在WRITE ACCESS方式下,IMPORT将获取针对目标表的非独占锁定IX。挂起对该表的此锁定具有下列影响:

①如果其他程序挂起不兼容的表锁定,那么在所有程序落实或回滚更改之前,IMPORT不会开始插入数据。

②IMPORT运行时,如果任何其他程序请求不可兼容的表锁定,那么这些应用程序都将等待直到导入操作落实或回滚当前事务。注意:导入的表锁定仅仅针对单个事务有效,因此,在每次提交后,联机导入必须请求表锁定并可能需要等到。

③如果其他程序挂起不兼容的行锁定,那么IMPORT将停止插入数据,直到所有这些应用程序落实或回滚更改。

④IMPORT运行时,如果任何其他程序请求不可兼容的行锁定,那么这些程序都将等待,直到导入操作落实或回滚当前事务。

⑤为保留联机属性并降低死锁概率,WRITE ACCESS导入将定期落实当前事务,并在上升为独占表锁定之前释放所有行锁定,如果未显式设置提交频率,则导入会按照指定commitcount automatic方式来落实,如果commitcount为0,那么不会执行任何落实。

COMMITCOUNT n

每隔n条记录进行一次提交。避免在出现错误以后,需要重新导入所有的数据。也可以设置为automatic,让db2自动设置commitcount。

RESTARTCOUNT n

在导入失败后,定义重新进行导入的起点。

MESSAGES message-file

用于指定在导入表过程中生成的警告消息和错误消息的存储文件,如果没有指定,则将消息导出到标准导出上,例如屏幕,通常来说,导入完成后,应该检查这个文件中的信息,查看看导入的数据行的数量、成功导入的行的数量、被拒绝导入的行的数量。

 

导入方式有5种方式

导入方式

工作机制

insert

①目标表已存在的情况下使用,都支持IXF/WSF/ASC/DEL数据格式,且可以与昵称配合使用。

②将输入数据插入到目标表中而不更改现有数据。

insert_update

①目标表已存在的情况下使用,都支持IXF/WSF/ASC/DEL数据格式,且可以与昵称配合使用。

②将导入的数据行插入到表中,如果导入的数据与表中原有数据的主键一样时,就执行更新update操作,否则执行插入insert操作,表中有主键时才可以使用这种模式。

replace

①目标表已存在的情况下使用,都支持IXF/WSF/ASC/DEL数据格式。

②删除所有现有数据并插入已导入数据,同时保留表和索引定义。

replace_create

①目标表不存在时使用,且只能与PC/IXF格式的输入文件配合使用,这是因为此格式包含了要创建的表的结构化描述。如果对象表具有自身以外的任何从属,则不能以这些方式执行导入操作。

②删除所有现有数据并插入已导入数据,同时保留表和索引定义。如果目标表和索引不存在,则创建目标表和索引。

create

①目标表不存在时使用,且只能与PC/IXF格式的输入文件配合使用,这是因为此格式包含了要创建的表的结构化描述。如果对象表具有自身以外的任何从属,则不能以这些方式执行导入操作。

②创建目标表和索引,可指定在其中创建新表的表空间名称。

 

还可以使用ADMIN_CMD存储过程来导入数据:

call sysproc.admin_cmd(‘import from /home/db2inst1/output/sales.del of del messages /home/db2inst1/output/export.msg insert into sales’)

6.3.3.导入的工作机制

导入所需的步骤数、时间量取决于要移动的数据量和指定的选项。导入操作遵循下列步骤:

①锁定表

根据是否允许对表进行并行访问,导入操作会获取对现有目标表的独占锁定X或非独占锁定IX。

IMPORT支持2种表锁定方式:脱机ALLOW NO ACCESS、联机ALLOW WRITE ACCESS方式。其中ALLOW NO ACCESS会阻止并行程序访问表数据,而ALLOW WRITE ACCESS方式允许并行程序同时对导入目标表进行读写访问,如果未指定方式,则DB2默认以ALLOW NO ACCESS方式运行。同时默认情况下,IMPORT程序会使用隔离级别RS(读稳定性)绑定至数据库。

②查找和检索数据

导入使用from子句来查找输入数据。如果命令指示XML或者LOB数据存在,那么导入会查找此数据。

③插入数据

导入会替换现有数据或将新数据行添加到目标表。

④检查约束和激发触发器

写入数据后,导入会确保每个已插入行符合针对目标表定义的约束。有关被拒绝行的信息将写到消息文件。导入还会激发现有的触发器。

⑤提交操作

导入会保存所做更改并释放针对目标表的锁定,还可指定在导入期间的定期落实。

6.3.4.IMPORT限制

(1)如果现有表是父表,且其主键被从属表中的外键引用,那么不能替换此表的数据,只能追加数据。

(2)不能执行导入替换操作,来将数据导入到以立即刷新方式定义的物化查询表所关联的基表中。

(3)不能将数据导入到系统表、摘要表、其他带有结构化类型列的表中。

(4)不能将数据导入到已声明的临时表中。

(5)不能通过import创建视图。

(6)根据PC/IXF文件创建表时,不会保留引用约束、外键定义,如果数据是通过select *导出的,那么才保留主键定义。

(7)由于import会生成自己的SQL语句,因此某些情况下可能会超过最大语句限制,即2MB。

(8)不能使用create或者replace_create导入子项来重新创建分区表或者多维集群表MDC。

(9)不能重新创建包含XML列的表。

(10)不能导入已经加密的数据。

(11)导入替换操作不能识别NLI(not logged initially)子句。IMPORT命令的replace选项不能识别create table的not logged initially子句、alter table的activate not logged initially子句。如果包含了replace选项的IMPORT调用了NLI语句在同一个事务内执行,则IMPORT无法识别NLI子句,这种情况有2种变通方法:

使用delete语句删除表的内容,然后再使用insert语句调用import操作,

或者,

drop后重新建表,紧接着使用insert调用导入操作。

6.4.LOAD

6.4.1.LOAD概述

IMPORT本质是执行insert、update、delete的SQL语句,因此,在操作过程中会触发触发器、执行日志记录、约束检查、索引构建。

而LOAD则是直接将格式化的数据页data page写入数据库,从而绕过触发器、日志记录,因此LOAD操作不会触发触发器,并且除了验证索引唯一性之外,不会执行引用约束检查、表约束检查。

LOAD能够高效的将大量数据移到新建的表或者已包含数据的表中,且能够处理绝大多数的数据类型,包括XML、大对象LOB、用户自定义类型UDT等。

6.4.2.装入数据

在运行LOAD实用程序之前,必须连接或能够隐式连接到要从中导入数据的数据库;

鉴于LOAD程序会发出commit语句,因此应在运行LOAD程序之前通过发出commit或者rollback语句来完成所有事务并释放所有锁定;

DB2 LOAD需要sysadm或者dbadm权限,至少要有LOAD权限和相关的insert或者delete特权

LOAD可以通过3种方式来触发:图形化的控制中心、客户端发出LOAD命令、调用admin_cmd存储过程;

常用参数名称

参数说明

FROM [inputfile_name]

包含要装载的数据文件。Load还可以从管道、设备、游标中装载数据。

OF ASC/DEL

ASC表示不分界的ASCII数据,数据的划分由位置决定。DEL表示分界的ASCII数据,每行的数据长度可变。分界的数据可以使用多种修饰符,主要的2种是coldel和chardel;coldel决定列和列之间如何分界,默认设置是逗号;chardel决定字符串如何分界,默认设置是双引号;

MODIFIED BY DUMPFILE=[dumpfile_name]

被拒绝的记录放到这个文件中

NETHOD P(1,2,3,)

LOAD有3个方法:

①METHOD L只用于ASC数据,这个方法指出每列的开头和结尾。形式是:METHOD L(start1 end1,start2 end2...)

②METHOD N用于IXF或者游标数据,这个方法要指定源表中要装载的列。形式是:METHOD N(col1,col2...)

③METHOD P用于DEL、IXF或者游标数据,这个方法要指定源数据中要装载的列的位置号。形式是:METHOD P(1,2,4....)

INSERT/REPLACE/RESTART/TERMINATE INTO schema.table

LOAD由于任何原因未完成操作时,使用这些选项

(col1,col2...)insert column list

Load使用这个列表来决定要放入数据的列,如果省略这个列表,load尝试按照读取和解析数据的次序来装载数据

FOR EXCEPTION [table_name]

把违反唯一性约束、主键规则的异常记录,放到之前创建的这个表中

WARNINGCOUNT=number

该参数指定强制装入操作终止之前load程序可以返回的警告数目。Load操作将在达到WARNINGCOUNT数目时停止,这允许您在尝试完成装入操作之前解决问题。

NOROWWARNINGS

在装入操作期间,关于已拒绝的行的警告消息将写入指定的文件中。但如果LOAD程序必须处理大量已拒绝、无效、已拦截的记录,那么可能会对装入性能产生负面影响。如果预计会产生许多警告,那么使用NOROWWARNINGS文件类型修饰符来抑制记录这些警告会很有用,但也存在少许风险。

MESSAGES messagefile

把消息放入这个文件中。如果不指定消息文件,就不产生消息。为了定位load期间产生的问题,建议指定消息文件。

ROWCOUNT number

指定要装载的记录数。如果省略这个关键字,默认设置是所有记录。

CPU_PARALLELISM number

DISK_PARALLELISM number

FETCH_PARALLELISM yes

DB2 V9中load自动决定这些设置,来控制对文件、设备、管道、游标装载中的记录进行解析、转换、格式化、写操作所生成的线程数,当然也可以自己设置这些关键字的值来提高load性能。

DATA BUFFER number

Load操作使用4KB的页来传输数据,这个数值通常是自动决定的,也可以自己指定页大小

SAVECOUNT number

Load使用一致点确保装载操作的可恢复性

RESTART

REPLACE,

INSERT,

TERMINATE

Load使用restart模式在遇到故障点之前的最后一个一致点之后选择重新载入的起始点。Load自己决定起始点,不需要用户计算。

Replace则是覆盖已有数据

Insert则是追加数据

Terminate终止load操作

INDEXING MODE

DEFERRED

该模式表示在装载期间不会创建索引,涉及到的索引会做出标记,但是需要刷新。当重新启动数据库或者第一次访问那些索引的时候,才会重新构建那些索引。

INDEXING MODE REBUILD,

INCREMENTAL,

AUTOSELECT

Rebuild模式强制重新构建所有索引

Incremental模式只向索引中添加新增的数据

Autoselect模式允许程序在rebuild和incremental之间做出选择

NONRECOVERABLE和COPY NO区别

如果启用前滚恢复,那么前滚后不需要对表恢复装入事务的情况下使用此参数。NONRECOVERABLE装入和COPY NO装入具有完全相同的性能,但在潜在数据丢失方面却有重大差别:NONRECOVERABLE装入将把表标记为不可前滚恢复,并同时使得能够完全访问表,这里有个问题,在需要前滚装入操作的情况下,已装入的数据以及对表的所有后续更新都会丢失。COPY NO装入会让所有从属表空间处于“备份暂挂”状态,因此在执行备份操作之前,表不可访问。因为在该类型的装入后会强制执行表空间备份操作,所以,不存在丢失已装入数据或对表的后续更新风险,即COPY NO装入完全可恢复。如果使用COPY NO,在装载操作完成后表空间处于backup pending状态,在装载操作期间不复制装载的数据。

COPY YES

此参数指定在load操作期间是否创建输入数据的副本。仅仅当启用了归档日志时,COPY YES才能使用。COPY NO会导致与装入的表相关的表空间处于backup pending状态,而且必须先备份这些表空间之后,才能继续访问该表,而COPY YES则是在load期间自动做了表空间备份。

MODIFIED BY RECLEN=x

固定输入记录的大小,适用于ASC文件格式

MODIFIED BY DUMPFILE=filename

指定一个文件,用来决定在哪里存储被拒绝的记录

FOR EXCEPTION tablename

异常表来存储不遵守唯一约束、主键约束的记录。如果装入时没有指定异常表,违反唯一约束的行将被丢弃,并且不再有机会恢复或修改。而异常表结构比要装入表的结构增加了2列:时间戳列、消息描述列CLOB

OF DEL/ASC/IXF/WSF

LOAD的数据格式

INTO TABLE tablename

要存储数据的目标表

MODIFIED BY COLDELx

在所有输入数据中以这个字符分割各个列,默认设置是逗号

MODIFIED BY CHARDELx

用这个字符包围输入的字符数据,默认设置是双引号

LOBS FROM lob-path

MODIFIED BY LOBSINFILE

寻找LOB文件路径,要想使用LOBS FROM子句,就必须设置这个关键字,参数本身包含文件名,但不包含完整的路径名,因为将搜索LOBS FROM路径

ALLOW NO ACCESS或者

ALLOW READ ACCESS

在装入操作执行过程中,是否可以查询表中预先存在的数据。ALLOW READ ACCESS允许在进行load时查询表,只不过,只能查看load操作之前表中已经存在的数据

LOCK WITH FORCE

Load操作在继续执行之前是应该等待其他程序使用完表,还是应该强制其他程序释放锁定

STATISTICS USE PROFILE

Load过程中是否收集统计信息。仅仅当以replace方式运行load时才支持此选项

TEMPFILES PATH

该参数指定Load操作执行期间创建临时文件时要使用的标准路径,默认是数据库路径,并且由DB2实例以独占方式访问。

USE <tablespace-name>

如果正在执行ALLOW READ ACCESS装入并且建立索引方式为rebuild,那么该参数允许在系统临时表空间中重建索引,并在load的复制阶段将其复制回索引表空间

 

使用AMDIN_CMD存储过程:

call sysproc.admin_cmd(‘load from /xxx/sales.del of del messages /xxx/load.msg replace into sales’)

6.4.3.在线LOAD

DB2 V8之前,当表被load时,load使用超级排它锁将表锁定,并且该表所在的表空间也处于load pending状态而无法访问。

DB2 V8之后,为了增强load可用性,通过ALLOW READ ACCESS选项让被装载的表以共享的方式锁定,我们可以访问表中已有的数据,但不能访问新状态的数据。(load完成之后就可以访问新装入的数据了)

Load默认方式是ALLOW NO ACCESS,此方式会让load装载的表处于LOAD IN PROGRESS与READ ACCESS ONLY状态,使得被load的表无法被访问。

6.4.4.LOAD过程

①LOAD

该阶段,数据被写入表中,在数据装载进表中之后,如果需要的话,还要收集索引键、表统计数据。按照load命令中savecount选项指定的时间间隔建立保存点(即一致点)来确保恢复。生成的消息记录在保存点上已经成功装载的记录数量,如果发生故障,可以重新启动装载操作;restart选项会自动从最近成功的一致点重新启动load操作,还可以使用terminate选项回滚失败的装载操作;

②BUILD

基于load阶段收集到的键建立索引,可以选择索引构建方式

③DELETE

该阶段删除表中违反唯一性约束的记录,一般情况下违反唯一性约束的记录会记录在异常表中(如果指定了FOR EXCEPTION选项),为了确保100%把数据装入表中,我们还需要检查MESSAGES filename文件,与构建阶段类似,如果删除阶段发生故障,restart选项会自动在适当的点上重新启动load操作;

④INDEX COPY

如果指定了ALLOW READ ACCESS和USE TABLESPACE,那么该阶段会把索引数据从系统临时表空间复制到这些索引应该在的表空间中;

6.4.5.监控LOAD进度

①load query

db2 load query table schema.table_name

②list utilities

db2 list utilities show detail

该方式监控insert、replace、restart方式执行的load操作,而terminate方式执行的load操作则无法监控

6.4.6.LOAD期间和之后的表空间状态

Load操作会使用表空间来保持数据库的一致性,通过控制对数据的访问或用户操作来起作用。

用户可以使用list tablespaces/load query/list utilities来检查表空间状态,表空间可以同时处于多个状态,load期间与之后常见的状态有:

表空间状态

说明

正常normal

创建表空间后该表空间的初始状态,表示当前没有异常状态影响的表空间

只读访问

read access

如果指定ALLOW READ ACCESS选项,那么表将处于“只读访问”状态,在调用LOAD命令前存在的表数据在装入操作运行期间可供只读访问。如果指定ALLOW READ ACCESS选项且装入操作失败,那么在装入操作前存在的表数据在故障发生之后将继续可供只读访问

正在装入

load in progress

该状态指示正在表空间上进行装入操作,此状态不允许在装入操作期间备份从属表。仅当对可恢复数据库指定了COPY NO参数时,load程序才使得表空间处于“正在装入”状态

备份暂挂

backup pending

如果对可恢复数据库执行装入操作并且指定COPY NO参数,则第一次落实后表空间将处于“备份暂挂”表空间状态,不能update该状态下的表空间,只能通过备份表空间操作来脱离“备份暂挂”表空间状态,由于装入操作开始时会更改表空间状态并且不能回滚,因此即使取消load操作,表空间也保持处于“备份暂挂”状态。

复原暂挂

restore pending

如果使用COPY NO选项成功执行了load操作、复原数据库,然后前滚该操作,那么相关表空间将处于“复原暂挂”状态,要想脱离该状态,就必须执行复原操作。

装入暂挂

load pending

“装入暂挂”指示load操作失败或者被中断,可以执行下列其中一种方法来脱离该状态:

①找出故障原因,然后重新启动restart装入操作;

②终止terminate装入操作;

③对装入操作失败时处理的那个表进行load replace操作;

④使用最新的表空间或数据库备份,通过restore database命令恢复装入的表的表空间,然后执行下一步的恢复操作

不可重新启动装入

该状态表示,数据表已经部分装入,并且不允许装入重新启动操作,有2种情况会产生这种状态:

①在未能成功地重新启动或终止的失败装入操作后,执行前滚操作;

②根据表处于“正在装入”或者“装入暂挂”状态时创建的联机备份执行复原操作;

要想让表脱离这种状态,可以通过load terminate或load replace命令;

设置完整性暂挂

该状态表示已装入的表有未经验证的约束。当load操作对带有约束的表执行装入操作时,就会让表处于次状态,可以使用set integrity语句来让表脱离次状态。

不可用

通过不可恢复的装入操作执行前滚,将使表处于该状态,该状态下表不再可用,必须drop table或者通过备份来还原表。

6.4.7.使用CURSOR文件类型移动数据

通过使用LOAD命令时指定CURSOR文件类型,可以将SQL语句查询结果直接装入到目标表中,而不必创建中间导出的文件。

步骤一共2步:

①声明游标CURSOR

db2 +c declare mycurs CURSOR FOR SELECT colunm... FROM taBName1

②执行LOAD命令

db2 +c LOAD FROM mycurs OF CURSOR INSERT INTO tabName2

注意:+c是关闭自动提交,需要显式触发commit或者rollback

6.4.8.提高LOAD性能

6.4.8.1.并行性和装入

这里有2个思考方向:使用多个存储设备、使用多个CPU处理器;可以通过下列load子选项来配置:

CPU_PARALLELISM number

DISK_PARALLELISM number

FETCH_PARALLELISM yes

6.4.8.2.用于提高装入性能的选项

①ALLOW READ ACCESS

允许用户在进行装入操作时查询表,只不过只能查看装入操作之前表中已存在的数据。

如果还指定了INDEXING MODE INCREMENTAL选项,当装入操作失败后,后续装入终止操作可能必须校正索引中的不一致,这就需要涉及大量IO的索引扫描,如果还对装入操作指定了ALLOW READ ACCESS,那么会把缓冲池用于IO,这个选项会间接影响LOAD时间,因为在线LOAD会延长装载时间;

②COPY YES或者COPY NO

使用此参数来指定要在装入操作期间是否要创建输入数据的副本,仅当启用了前滚恢复时,COPY YES才适用,且由于装入操作期间会复制所有装入数据,因此使用此参数会降低装入性能。仅当启用了前滚恢复时,COPY NO才适用,且不会影响装入性能,但所有与已装入的表相关的表空间将处于“备份暂挂”状态,且必须先备份这些表空间后才能访问该表;

③CPU_PARALLELISM

借助此参数来使用分区内并行性,从而大幅改进装入性能。该参数指定LOAD用于分析、转换、格式化数据记录的进程或线程的数量。允许的最大数目是30.如果内存不足以支持指定值,那么实用程序将调整该值,如果未指定此参数,则LOAD将根据系统上的CPU数量选择默认值;

如果满足下列条件,该参数将失去其并行性:

情况1:未指定ANYORDER文件类型修饰符;

情况2:未指定PARTITIONING_DBPARTNUMS选项(并且将多个分区用于分区);

情况3:如果表中包含LOB或者LONG VARCHAR,那么CPU_PARALIELISM将设置为1,不支持并行性;

④DATA BUFFER

该参数指定分配给LOAD程序用做缓冲区的内存总量(以4KB为单位)。数据缓冲区将从实用程序堆分配,根据系统上可用的存储量,应该考虑分配更多内存来供DB2实用程序使用。可相应修改数据库的util_heap_sz实用程序堆大小参数。Util_heap_sz默认值为5000个4KB的页,而LOAD程序只是使用这5000个页中的一个程序而已,因此,将此参数定义的不超过50%的页供LOAD程序来使用,并且将实用程序堆定义的足够大;

⑤DISK_PARALLELISM

该参数指定LOAD程序用来将数据记录写到磁盘的进程或线程数量,允许的最大值是CPU_PARALLELISM值的4倍或者50倍中较大的数字。默认情况下该参数值等于包含对其装入表的对象的所有表空间中的表空间容器的总和,但当参数值超过允许的最大值时除外。

⑥SAVECOUNT

此参数来设置在装入操作的装入阶段建立一致点的时间间隔,为建立一致点而执行活动同步需要一些时间,如果进行太频繁则装入性能大幅下降。

⑦STATISTICS USE PROFILE

该参数收集统计信息概要文件中指定的统计信息,即使装入操作本身的性能下降,但与load完成后再去RUNSTATS相比,该参数收集的数据分布、索引统计信息比RUNSTATS更有效,LOAD完毕之后,用户通过bind命令重新绑定应用程序包来创建新的表访问路径,通过运行带有SET PROFILE选项的RUNSTATS命令来创建表统计信息概要文件。

⑧USE <tablespace-name>

如果正在执行ALLOW READ ACCESS装入且建立索引的方式为rebuild,则该参数允许在系统临时表空间中重建索引,并在装入的索引复制阶段将其复制回索引表空间;

默认情况下,将在原始索引所在的表空间中构建完全重建的索引(也称为影子索引),鉴于原始索引与影子索引在同一个表空间,这会引起表空间资源紧张问题。

另外,如果影子索引与原始索引在同一个表空间中构建的,则影子索引将瞬间替换原始索引,但如果影子索引是在系统临时表空间中构建的,那么在load复制阶段就需要把影子索引从系统临时表空间复制到索引表空间中,而复制阶段涉及到相当多的IO,这其中如果任何一个表空间是DMS表空间,那么系统临时表空间的IO可能不是顺序进行的。

6.4.8.3.文件类型修饰符

文件类型修饰符是用MODIFIED BY子句来指定的,下面举几个对性能有影响的文件类型修饰符:

①ANYORDER

默认情况下,LOAD将保留源数据的记录顺序,在SMP环境中装入时,要求并行处理之间保持同步来确保保留该顺序;

如果在SMP环境中指定了ANYORDER文件类型修饰符,则LOAD不保留顺序,正因为不必执行保留该顺序所需的同步,因此将会提高性能。

②BINARYNUMERICS/ZONEDDECIMAL/PACKEDDECIMAL

对于固定长度的非定界ASCII(ASC)源数据,用二进制表示数字数据可能会提高装入时的性能。

如果指定PACKEDDECIMAL则LOAD使用压缩十进制格式来表示十进制数据;

如果指定ZONEDDECIMAL则LOAD会使用分区十进制格式表示十进制数据;

对于其他数字类型,如果指定了BINARYNUMERICS则LOAD使用二进制格式来表示数据;

③FASTPARSE

必须小心该参数;

如果你对要装入的数据的安全性非常有信心,那么通过该参数来减少对其的语法检查,而缩小语法检查可以将LOAD性能提高10%-20%,该参数可以减少对ASC和DEL文件中列值的数据检查。

④PAGEFREESPACE/INDEXFREESPACE/TOTALFREESPACE

使用这几个参数来增大用于表和索引的可用空间量。前2个参数优先于PCTFREE,其含义是可用空间保留的数据百分比、索引页数的百分比,而TOTALFREESPACE则是指定要作为可用空间追加至表的总页数的百分比;

IXF格式的性能要比DEL和ASC要高;

6.4.9.LOAD失败恢复

LOAD执行期间,会创建临时性的二进制文件,该文件用于load崩溃恢复、装入终止操作、警告和错误消息、运行时控制数据,当LOAD操作完毕且未发生任何错误时,这些二进制文件会被自动清除;

该临时性二进制文件可以通过LOAD命令的temp-pathname参数来指定路径,默认路径为数据库目录的子目录,鉴于DB2实例以独占方式访问,因此,temp-pathname指定的路径必须是DB2服务器上的目录结构且DB2实例拥有对应的读写权限;

解决导致LOAD操作失败的问题后,重新发出LOAD命令,确保指定的参数与原始命令中的参数完全一致,这样LOAD命令就会找到那些临时性的二进制文件来终止操作、重新装入表、重新启动装入操作,如果想禁止访问上一次创建的二进制文件则不必指定完全相同的参数,还可以用ALLOW READ ACCESS的LOAD来作为ALLOW NO ACCESS选项重新启动;

如果LOAD程序是因为用户错误而不能启动,例如:table不存在,列名无效等等,则终止操作,并让目标表处于正常状态;

当LOAD开始时,目标表将处于“正在装入”状态,出现故障后,表状态变为“装入暂挂”,此时可以通过LOAD TERMINATE回滚,或者通过LOAD REPLACE重新装入整个表,或者发出LOAD RESTART;

通常,LOAD失败后最好是重新启动LOAD操作,这是因为LOAD是从装入操作最后成功到达的位置而不是从该操作的开头重新启动装入操作的,这样可以节省时间,操作重新启动的精确位置取决于原始命令中SAVECOUNT参数,这样LOAD失败后重新装入则会在上一次到达的最后一个一致点重新启动,没有指定SAVECOUNT选项的话则装入操作在成功到达的最后一个阶段(装入、构建、删除阶段,这里指的是阶段,不是一致点)开始时重新启动。

如果装入XML文档,鉴于SAVECOUNT不支持XML数据,所以如果在装入阶段就失败的LOAD,再次LOAD的时候还是从装入阶段开始;如果是在构建阶段失败则将在rebuild方式下构建索引,从而扫描该表来从每一行获取索引键,只不过也必须扫描每个XML文档来获取索引键,因此,操作成本非常高;

重新启动或终止ALLOW READ ACCESS装入操作:

①如果以ALLOW READ ACCESS方式进行LOAD在装入阶段被中断/取消,则可以用ALLOW READ ACCESS来通过LOAD-RESTART重新启动/LOAD-TERMINATE终止那些指定了ALLOW READ ACCESS选项的已中断/已取消的装入操作,使其在装入阶段重新启动;

②如果以ALLOW READ ACCESS方式进行LOAD在装入阶段以外的任何阶段(build、delete、index copy)被中断/取消,那么其将在build阶段重新启动;

③如果索引对象不可用/标记为无效,则不允许ALLOW READ ACCESS方式的装入重新启动;

④如果原始装入操作在索引复制阶段被中断/取消,那么鉴于索引可能已损坏而不允许ALLOW READ ACCESS方式的重新启动操作;

⑤发出LOAD TERMINATE通常会导致已中断/已取消的装入操作以最短延迟回滚,但对于指定了ALLOW READ ACCESS和INDEXING MODE INCREMENTAL的装入操作发出了LOAD TERMINATE命令时,LOAD扫描索引和校正任何不一致时会有延迟,延迟时间取决于索引大小,无论是否对装入终止操作指定ALLOW READ ACCESS选项,都会发生延迟,如果原始装入操作在到达构建阶段前失败,那么不会发生延迟;

⑥如果以ALLOW NO ACCESS执行装入操作,当原始装入操作到达构建阶段并且索引有效时,将在删除阶段发生重新启动操作,如果索引标记为无效,那么LOAD将从构建阶段重新启动装入操作;

6.5.db2move和db2look

db2move用于在DB2数据库之间移动大量表的数据移动工作,db2move利用DB2的数据移动工具(EXPORT/IMPORT/LOAD/COPY)来移动数据库表,但还需要db2look来迁移其他数据库对象,例如:约束、触发器、索引、序列、表空间、缓冲池等等,db2look捕获到定义这些对象的数据定义语言DDL,并在目标DB2数据库中通过这些数据定义语言重新创建这些对象;

6.5.1.db2move

 db2move将一组用户表从系统编目表中提取出来,并将每个表以PC/IXF格式导出来,然后再把PC/IXF文件导入或装载到另一个DB2数据库中,也可以把这些文件拷贝到其他操作系统平台上并导入或装载到该平台上的DB2数据库中;

要想db2move操作成功,其所用用户ID必须具有底层DB2数据移动工具所需要的适当授权;

在调用db2move的时候,并不需要数据库连接,db2move会自动建立数据库连接;

db2move命令基本语法如下:

db2move database-name action [option value]

6.5.2.db2look

在调用db2look的时候,并不需要数据库连接,db2move会自动建立数据库连接,基本语法如下:

db2look -d database-name [<option1><option2><optionN>]

7.指令详解

7.1.import

[db2inst1@DB1:/home/db2inst1]#db2 ? import

IMPORT FROM filename OF {IXF | ASC | DEL | WSF}

[LOBS FROM lob-path [ {,lob-path} ... ] ]

[XML FROM xml-path [ {,xml-path} ... ] ][MODIFIED BY filetype-mod ...]

[METHOD {L ( col-start col-end [ {,col-start col-end} ... ] )

[NULL INDICATORS (col-position [ {,col-position} ... ] )] |

N ( col-name [ {,col-name} ... ] ) |

P ( col-position  [ {,col-position} ... ] )}]

[db2inst1@PICPDB1:/home/db2inst1]#db2 ? export

EXPORT TO filename OF {IXF | DEL | WSF}

[LOBS TO lob-path [ {,lob-path} ... ] ][LOBFILE lob-file [ {,lob-file} ... ] ]

[XML TO xml-path [ {,xml-path} ... ] ][XMLFILE filename [ {,filename} ... ] ]

[MODIFIED BY {filetype-mod ...}][XMLSAVESCHEMA]

[METHOD N ( column-name [ {,column-name} ... ] )] [MESSAGES message-file]

{select-statement | XQUERY xquery-statement |

 HIERARCHY {STARTING sub-table-name |

(sub-table-name [{, sub-table-name} ...])} [WHERE ...] }

  filetype-mod:

    NODOUBLEDEL, LOBSINFILE, CHARDELx, COLDELx, DECPLUSBLANK

    DECPTx, DATESISO, 1, 2, 3, 4, CODEPAGE=x, STRIPLZEROS, NOCHARDEL,

    LOBSINSEPFILES, XMLINSEPFILES, XMLCHAR, XMLGRAPHIC, XMLNODECLARATION,

    TIMESTAMPFORMAT=x

 

NOTE: From the operating system prompt, prefix commands with 'db2'.

      Special characters MAY require an escape sequence (\), for example:

      db2 \? change database

      db2 ? change database xxx comment with \"text\"

[db2inst1@DB1:/home/db2inst1]#

 

7.2.export

[db2inst1@DB1:/home/db2inst1]#db2 ? export

EXPORT TO filename OF {IXF | DEL | WSF}

[LOBS TO lob-path [ {,lob-path} ... ] ][LOBFILE lob-file [ {,lob-file} ... ] ]

[XML TO xml-path [ {,xml-path} ... ] ][XMLFILE filename [ {,filename} ... ] ]

[MODIFIED BY {filetype-mod ...}][XMLSAVESCHEMA]

[METHOD N ( column-name [ {,column-name} ... ] )] [MESSAGES message-file]

{select-statement | XQUERY xquery-statement |

 HIERARCHY {STARTING sub-table-name |

(sub-table-name [{, sub-table-name} ...])} [WHERE ...] }

  filetype-mod:

    NODOUBLEDEL, LOBSINFILE, CHARDELx, COLDELx, DECPLUSBLANK

    DECPTx, DATESISO, 1, 2, 3, 4, CODEPAGE=x, STRIPLZEROS, NOCHARDEL,

    LOBSINSEPFILES, XMLINSEPFILES, XMLCHAR, XMLGRAPHIC, XMLNODECLARATION,

    TIMESTAMPFORMAT=x

 

NOTE: From the operating system prompt, prefix commands with 'db2'.

      Special characters MAY require an escape sequence (\), for example:

      db2 \? change database

      db2 ? change database xxx comment with \"text\"

[db2inst1@DB1:/home/db2inst1]#

 

7.3.load

[db2inst1@DB1:/home/db2inst1]#db2 ? load

LOAD QUERY TABLE table-name [TO local-message-file]

[NOSUMMARY | SUMMARYONLY] [SHOWDELTA]

 

LOAD [CLIENT] FROM file/pipe/dev/cursor_name [ {,file/pipe/dev} ... ]

OF {ASC | DEL | IXF | CURSOR}

[LOBS FROM lob-path [ {,lob-path} ... ] ]

[XML FROM xml-path [ {,xml-path} ... ] ]

[MODIFIED BY filetype-mod [ {filetype-mod} ... ] ]]

[METHOD {L ( col-start col-end [ {,col-start col-end} ... ] )

           [NULL INDICATORS (col-position [ {,col-position} ... ] )]

       | N ( col-name [ {,col-name} ... ] )

       | P ( col-position  [ {,col-position} ... ] )}]

[XMLPARSE {STRIP | PRESERVE} WHITESPACE]

[XMLVALIDATE USING {XDS [DEFAULT schema-sqlid]

[IGNORE (schema-sqlid [ {,schema-sqlid} ... ])]

[MAP ((schema-sqlid,schema-sqlid) [ {(schema-sqlid,schema-sqlid)} ... ])] |

SCHEMA schema-sqlid | SCHEMALOCATION HINTS }]

[SAVECOUNT n]

[ROWCOUNT n] [WARNINGCOUNT n] [MESSAGES msg-file]

[TEMPFILES PATH pathname]

{INSERT | REPLACE [{KEEPDICTIONARY | RESETDICTIONARY}] | RESTART | TERMINATE}

INTO table-name [( insert-column [ {,insert-column} ... ] )]

[FOR EXCEPTION table-name [NOUNIQUEEXC NORANGEEXC]]

[STATISTICS {NO | USE PROFILE}]

[{COPY {NO | YES { USE TSM [OPEN num-sess SESSIONS]

                 | TO dir/dev [ {,dir/dev} ... ]

                  | LOAD lib-name [OPEN num-sess SESSIONS]}}

 | NONRECOVERABLE} ]

[HOLD QUIESCE] [WITHOUT PROMPTING] [DATA BUFFER buffer-size]

[SORT BUFFER buffer-size] [CPU_PARALLELISM n] [DISK_PARALLELISM n]

[FETCH_PARALLELISM {YES | NO}

[INDEXING MODE {AUTOSELECT | REBUILD | INCREMENTAL | DEFERRED}]

[ALLOW NO ACCESS | ALLOW READ ACCESS [USE tblspace-name]]

[SET INTEGRITY PENDING CASCADE {DEFERRED | IMMEDIATE}] [LOCK WITH FORCE]

[SOURCEUSEREXIT executable [REDIRECT {[INPUT FROM {[BUFFER input-buffer] |

                      [FILE input-file]} [OUTPUT TO FILE output-file]]

                      [OUTPUT TO FILE output-file]] [PARALLELIZE]]

[[PARTITIONED DB CONFIG] partitioned-db-option [{partitioned-db-option}...]]

  filetype-mod:

    NOROWWARNINGS, ANYORDER, BINARYNUMERICS, CODEPAGE=x,

    DUMPFILE=x, FASTPARSE, NOHEADER, TOTALFREESPACE=x,

    INDEXFREESPACE=x, PAGEFREESPACE=x, FORCEIN, IMPLIEDDECIMAL,

    PACKEDDECIMAL, NOCHECKLENGTHS, NOEOFCHAR, NULLINDCHAR=x,

    RECLEN=x, STRIPTBLANKS, STRIPTNULLS, NODOUBLEDEL, LOBSINFILE,

    CHARDELx, COLDELx, DLDELx, DECPLUSBLANK, DECPTx, DATESISO,

    DELPRIORITYCHAR, USEDEFAULTS, DATEFORMAT=x, TIMEFORMAT=x,

    TIMESTAMPFORMAT=x, ZONEDDECIMAL, KEEPBLANKS, IDENTITYMISSING,

    IDENTITYIGNORE, IDENTITYOVERRIDE, GENERATEDMISSING,

    GENERATEDIGNORE, GENERATEDOVERRIDE, USEGRAPHICCODEPAGE,

    SECLABELCHAR, SECLABELNAME, XMLCHAR, XMLGRAPHIC, NOCHARDEL

  partitioned-db-option:

    PART_FILE_LOCATION x, OUTPUT_DBPARTNUMS x,

    PARTITIONING_DBPARTNUMS x, MODE x, MAX_NUM_PART_AGENTS x, OMIT_HEADER,

    ISOLATE_PART_ERRS x, STATUS_INTERVAL x, PORT_RANGE x, CHECK_TRUNCATION,

    MAP_FILE_INPUT x, MAP_FILE_OUTPUT x, TRACE x, NEWLINE, DISTFILE x

 

NOTE: From the operating system prompt, prefix commands with 'db2'.

      Special characters MAY require an escape sequence (\), for example:

      db2 \? change database

      db2 ? change database xxx comment with \"text\"

[db2inst1@DB1:/home/db2inst1]#

 

 

7.4.db2move

[db2inst1@DB1:/home/db2inst1]#db2move -help

 

--------db2move - database movement tool--------

 

 Usage: "db2move <dbname> <action> [options]"

 

  <dbname> is the name of the database.

 

  <action> is one of:

     EXPORT - Export all tables that meet the filtering criteria in [options]

              (If no [options] specified, export all tables).

              Internal staging information is stored in file 'db2move.lst'.

              Messages are stored in 'EXPORT.msg'.

 

     IMPORT - Import all tables listed in the staging file 'db2move.lst'.

              Messages are stored in 'IMPORT.msg'..

              Use the -io option for IMPORT specific actions.

 

     LOAD   - Load all tables listed in the staging file 'db2move.lst'.

              Messages are stored in 'LOAD.msg'.

              Use the -lo option for LOAD specific actions.

 

     COPY   - Duplicate a schema(s) into a target database.

              Use the -sn option to specify one or more schemas.

              See the -co option for COPY specific options.

              Use the -tn or -tf option to filter tables in LOAD_ONLY mode.

              Messages are stored in 'COPY.<timestamp>.msg'

              Error only messages in 'COPY.<timestamp>.err'

              Load messages in 'LOADTABLE.<timestamp>.msg'

              List of tables that failed Load in 'LOADTABLE.<timestamp>.err'

 

 

  [options] are one or more of:

 

    Option      Description                  Use for   Notes              

                                             Action                       

  ------------------------------------------------------------------------

  -tc <value>  Table Definers. Filter on     EXPORT   Comma seperated list,

                SYSCAT.TABLES.DEFINER                 Wildcard (*) allowed.

 

  -tn <value>  Table Names. Filter on        EXPORT   Comma seperated list,

                SYSCAT.TABLES.TABNAME        COPY     Wildcard (*) allowed for

                                                      EXPORT (not COPY).

 

  -sn <value>  Schema Names. Filter on       EXPORT,  Comma seperated list,

                SYSCAT.TABLES.TABSCHEMA      COPY     Wildcard (*) allowed for

                                                      EXPORT (not COPY).

 

  -ts <value>  Tablespace Names. Filter on   EXPORT   Comma seperated list,

                SYSCAT.TABLES.TBSPACE                 Wildcard (*) allowed.

 

  -tf <file>   Fully qualified list of       EXPORT   one table per line,like:

                table names in <file>        COPY      "MYSCHEMA1"."TAB1"

                                                       "MY SCHEMA2"."TAB2"

 

  -aw          Allow warnings                EXPORT   Don't disclude tables

                                                      that encounter warnings.

 

  -io <value>  IMPORT specific actions.      IMPORT   One of: INSERT,

               Default is REPLACE_CREATE               INSERT_UPDATE, REPLACE,

               (see docs for limitations               CREATE, REPLACE_CREATE

                of Import create function)

 

  -lo <value>  LOAD specific options.        LOAD     One of: INSERT,

                Default is INSERT                      REPLACE

 

  -l <path>    Path to lobfiles.             EXPORT,  Comma seperated list,

                Default is cwd               IMPORT,  no space characters

                                             LOAD

 

  -u <value>   Userid to connect to db.      ALL

                Default is current user

 

  -p <value>   Password to connect to db.    ALL

 

  -co <opt>    COPY specific options.        COPY     See options listed below.

 

      TARGET_DB <dbname> [USER <userid> [USING <passwd>]

         This mandatory option specifies the target database (and optional

         user/passwd) where the schema(s) will be created. (Default

         user/passwd are current user/passwd).

      MODE <value>

         The mode is one of DDL_AND_LOAD (default), DDL_ONLY, or LOAD_ONLY.

      SCHEMA_MAP <value>

         To rename the schema on the target db. For example, to rename schema

         'srcsch1' to 'tgtsch1', and schema 'srcsch2' to 'tgtsch2', use:

         "((srcsch1,tgtsch1), (scrsch2,tgtsch2))".

      TABLESPACE_MAP <value>

         To override tablespaces on the target db. For example, to

         recreate all tables that reside in TS1 on the source db, into TS2 on

         the target db, and all other tablespaces to use the default tablespace

         on the target, use: "((TS1,TS2), SYS_ANY)".

      NONRECOVERABLE

         To override the default Load recoverability action COPY-NO, to

         NONRECOVERABLE.

      OWNER <owner-name>

         To override the owner of each new object created on the target db.

 

 

Examples:

  1) Use db2move to Export all tables:

      >db2move dbname EXPORT

  2) Use db2move to Export all tables, filtering on table-name with 'mytab*'

     and table-definer with 'USER1', and lobs in /bigfs/mydir/:

      >db2move dbname EXPORT -tn mytab* -tc USER1 -l /bigfs/mydir/

  3) Use db2move to Import (recreate and repopulate) all previously exported

     tables:

      >db2move dbname IMPORT

  4) Use db2move to Load (repopulate) all previously exported tables:

      >db2move dbname LOAD

  5) Use db2move to Load (append) all previously exported tables, where

     lobfiles reside in /bigfs/mydir:

      >db2move dbname LOAD -lo INSERT -l /bigfs/mydir

  6) Use db2move to duplicate schema 'schema1' from source database 'dbsrc'

     to target database 'dbtgt':

      >db2move dbsrc COPY -sn schema1 -co TARGET_DB dbtgt

        USER myuser1 USING mypass1

  7) Use db2move to duplicate schema 'schema1' from source database 'dbsrc'

     to target database 'dbtgt', rename the schema to 'newschema1' on the

     target, and map source tablespace 'ts1' to 'ts2' on the target:

      >db2move dbsrc COPY -sn schema1 -co TARGET_DB dbtgt

        USER myuser1 USING mypass1 SCHEMA_MAP ((schema1,newschema1))

        TABLESPACE_MAP ((ts1,ts2), SYS_ANY))

 

For more information, please see the DB2 documentation.

 

 

 

End time:  Mon Apr 19 17:45:13 2021

[db2inst1@DB1:/home/db2inst1]#

 

7.5.db2look

[db2inst1@DB1:/home/db2inst1]#db2look -?

 

The option "-?" is not supported by db2look.

 

Syntax: db2look -d DBname [-e] [-xs] [-xdir Path] [-u Creator] [-z Schema]

                          [-t Tname1 Tname2...TnameN] [-tw Tname] [-h]

                          [-o Fname] [-a] [-m] [-c] [-r] [-l] [-x] [-xd] [-f]

                          [-fd] [-td x] [-noview] [-i userID] [-w password]

                          [-v Vname1 Vname2 ... VnameN] [-dp] [-ct]

                          [-wrapper WrapperName] [-server ServerName] [-nofed]

                          [-wlm] [-ap] [-mod] [-cor] [-wrap] [-noimplschema] [-nostatsclause]

                          [-wrapper WrapperName] [-server ServerName][-fedonly] [-nofed]

 

        db2look [-h]

 

        -d: Database Name: This must be specified

 

        -e: Extract DDL file needed to duplicate database

       -xs: Export XSR objects and generate a script containing DDL statements

     -xdir: Path name: the directory in which XSR objects will be placed

        -u: Creator ID: If -u and -a are both not specified then $USER will be used

        -z: Schema name: If -z and -a are both specified then -z will be ignored

        -t: Generate statistics for the specified tables

       -tw: Generate DDLs for tables whose names match the pattern criteria (wildcard characters) of the table name

       -ap: Generate AUDIT USING Statements

      -wlm: Generate WLM specific DDL Statements

      -mod: Generate DDL statements for Module

      -cor: Generate DDL with CREATE OR REPLACE clause

     -wrap: Generates obfuscated versions of DDL statements

        -h: More detailed help message

        -o: Redirects the output to the given file name

        -a: Generate statistics for all creators

        -m: Run the db2look utility in mimic mode

            -c: Do not generate COMMIT statements for mimic

            -r: Do not generate RUNSTATS statements for mimic

        -l: Generate Database Layout: Database partition groups, Bufferpools and Tablespaces

        -x: Generate Authorization statements DDL excluding the original definer of the object

       -xd: Generate Authorization statements DDL including the original definer of the object

        -f: Extract configuration parameters and environment variables

       -td: Specifies x to be statement delimiter (default is semicolon(;))

        -i: User ID to log on to the server where the database resides

        -w: Password to log on to the server where the database resides

   -noview: Do not generate CREATE VIEW ddl statements

  -wrapper: Generates DDLs for federated objects that apply to this wrapper

   -server: Generates DDLs for federated objects that apply to this server

    -FEDONLY: Only created Federated DDL Statements

    -nofed: Do not generate Federated DDL

       -fd: Generates db2fopt statements for opt_buffpage and opt_sortheap along with other cfg and env parameters.

        -v: Generate DDL for view only, this option is ignored when -t is specified

       -dp: Generate DROP statement before CREATE statement

       -ct: Generate DDL Statements by object creation time

-noimplschema: Do not generate CREATE SCHEMA ddl for implicitly created schemas

-nostatsclause: Do not include statistics clause in CREATE INDEX DDL.

 

[db2inst1@DB1:/home/db2inst1]#

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值