DB2离线和在线全备、增量备份及恢复的操作详解

DB2离线和在线全备、增量备份及恢复的操作详解
DB2离线和在线全备、增量备份及恢复的操作详解

DB2离线和在线全备、增量备份及恢复的操作步骤

DB2离线和在线全备、增量备份及恢复的操作步骤

1、离线全备份

1)、首先确保没有用户使用DB2:

$db2 list applications for db sample

2)、停掉数据库并重新启动,以便断掉所有连接:

db2stop force

db2start

3)、执行备份命令:(使用TSM作为备份的介质)

db2 backup db sample use tsm

备份成功,将会返回一个时间戳。

4)、检查备份成功:

Db2 list history backup all for sample ,可以看到多了这个备份的纪录。

Db2adutl query命令也可以看到返回值。

5)、备注:

首先对主节点(catalog表空间在的节点)执行备份命令,再对另外的节点也做这个操作。

2、在线备份:

1)、首先打开一下支持在线备份的数据库配置参数:

db2 update db cfg for sample using userexit on 启用用户出口

db2 update db cfg for sample using logretain on 启用归档日志

db2 update db cfg for sample using trackmod on 启用增量备份功能

(需要各个Node都分别做设置)

开启这些参数后,数据库处于backup pending状态,要求做数据库的离线全备份。做一下离线全备份,参考上面的命令。

2)、在线备份命令如下:

db2 backup db sample online use tsm

备份成功,返回一个时间戳。

3)、同样可以用db2adutl 和db2 list history察看备份纪录。

4)、备注:

同样,对每个节点都做这个操作。

3、在线增量备份

1)、在开启了必须的三个参数的情况下,做增量备份:

db2 backup db sample online incremental use tsm

备份成功,返回一个时间戳。

2)、同样可以用db2adutl 和db2 list history察看备份纪录。

3)、还有一种delta的备份:

db2 backup db sample online incremental delta use tsm

这两种备份的区别,类似Oracle Exports的Incremental和Cumulative方式,db2的incremental对应oracle的cumulative方式,而db2的delta方式则对应oracle的incremental方式。

4)、备注:同样,对每个节点都做这个操作。

4、恢复数据库

1)、手工drop数据库,模拟灾难恢复的情况,执行如下操作:

db2 drop db sample

2)、恢复备份历史纪录(每次backup,不论类型,都会备份历史纪录文件)。这里的时间戳应该是最新的:

db2 restore db sample history file use tsm taken at 20030102223107 buffer 100 3)、使用db2的恢复帮助工具:

db2ckrst -d sample -t 20030101224424 -r database

命令返回建议的必需的恢复操作命令。

4)、按照帮助工具的提示,先做版本恢复,恢复命令如下:

db2 restore db sample incremental use tsm taken at 20030101224424 buffer 100 同样先做主节点的恢复,再做其他节点的恢复操作。

5)、这时数据库处于rollforward-pending state的状态,需要做roll forward 操作:db2 rollforward db sample to 2003-01-12-13.27.25.000000 on all nodes and stop 前滚到同一个时间点。这个操作要在主节点来做。

5、有关说明:

1)、恢复操作也有online和offline的,区别如同backup的操作。

2)、按照表空间的备份和恢复类似,加子句TABLESPACE ( tablespace-name 即可。表空间级别的备份/恢复操作要求数据库处于归档日志和启用增量备份模式下。

3)、恢复的例子中只做了版本恢复。若还有更新的全备份和增量备份的image,可以依次做恢复(注意使用db2ckrst的建议恢复次序和次数)后,再做roll forward.

DB2存储过程快速入门.

1.1 SQL过程的结构 命名规则: 1、清洗过程名称命名: PROC_业务主题_目标表(PROC_JY_KJYRLJB 交易主题的卡交易日类聚表) 2、函数名称命名: PROC_业务主题_函数名(PROC_JY_GETYWZL 交易主题取得卡业务种类函数) 3、变量命名: VAR_变量描述(VAR_YWZL 业务种类变量) 4、游标命名: CUR_游标描述(CUR_KJYB 对卡交易表进行游标处理) 语法: CREATE PROCEDURE 过程名称 (参数列表 DYNAMIC RESULT SETS 结果集数量 是否允许SQL LANGUAGE SQL BEGIN SQL 过程体

END 范例“资产负债.sql ”中 第1行:Create Procedure admin.BalanceSheetDayly定义了过程名称 参数列表为Out ProcState varchar(100 其定义SQL 过程从客户应用获取,或返回客户应用的0个或多个参数,参数列表使用逗号侵害各个参数 参数类型有三种: l IN 从客户应用检索值。其不能够在SQL 过程体中修改 l OUT 向客户应用返回值 l INOUT 从客户应用检索值,并返回值 省略了结果集数量的定义,default 为0。即表示不返回结果集。 省略了是否允许SQL 的说明。其值指出了存储过程是否会使用SQL 语句,如果使用,其类型如何: l NO SQL 不能够执行任何SQL 语句 l COTAINS SQL 可以执行不会读取SQL 数据,也不会修改SQL 数据的SQL 语句 l READS SQL DATA 可以包含不会修改SQL 数据的SQL 语句 l MODIFIES SQL DATA 可以执行任何SQL 语句,除了不能够在存储过程中支持的语句以外。

DB2存储过程学习总结

Db2 存储过程学习总结 ●在命令窗口执行存储过程,可以方便看出存储过程在哪一行出现错误,方便修改。 ●db2 存储过程常用语句格式 ----定义 DECLARE CC VARCHAR(4000); DECLARE SQLSTR VARCHAR(4000); DECLARE st STATEMENT; DECLARE CUR CURSOR WITH RETURN TO CLIENT FOR CC; ----执行动态SQL不返回 PREPARE st FROM SQLSTR; EXECUTE st; ----执行动态SQL返回 PREPARE CC FROM SQLSTR; OPEN CUR; ----判断是否为空,使用值替代 COALESCE(判断对象,替代值)

----定义临时表 DECLARE GLOBAL TEMPORARY TABLE SESSION.TempResultTable ( Organization int, OrganizationName varchar(100), AnimalTypeName varchar(20), ProcessType int, OperatorName varchar(100), OperateCount int ) WITH REPLACE -- 如果存在此临时表,则替换 NOT LOGGED; DB2 9.x临时表使用总结 1). DB2的临时表需要用命令Declare Temporary Table来创建,并且需要创建在用户临时表空间上; 2). DB2在数据库创建时,缺省并不创建用户临时表空间,如果需要使用临时表,则需要用户在创建临时表之前创建用户临时表空间; 3). 临时表的模式为SESSION,SESSION即基于会话的,且在会话之间是隔离的。当会话结束时,临时表的数据被删除,临时表被隐式卸下。对临时表的定义不会在SYSCAT.TABLES中出现 .; 4). 缺省情况下,在Commit命令执行时,DB2临时表中的所有记录将被删除; 这可以通过创建临时表时指定不同的参数来控制; 5). 运行ROLLBACK命令时,用户临时表将被删除; 下面是DB2临时表定义的一个示例: DECLARE GLOBAL TEMPORARY TABLE results ( RECID VARCHAR(32) , --id XXLY VARCHAR(100), --信息来源 LXDH VARCHAR(32 ), --信息来源联系电话 FKRQ DATE --反馈时间 ) ON COMMIT PRESERVE ROWS WITH REPLACE NOT LOGGED; ----字符串函数

DB2存储过程简单例子

DB2存储过程简单例子 客户在进行短信服务这个业务申请时,需要填写一些基本信息,然后根据这些信息判断这个用户是否已经存在于业务系统中。因为网上服务和业务系统两个项目物理隔离,而且网上数据库保存的客户信息不全,所以判断需要把数据交换到业务系统,在业务系统中判断。 解决方式是通过存储过程,以前也了解过存储过程,但没使用到项目中。不过经过一番努力最后还是完成了,期间遇到了一些困难,特写此文让对DB2存储过程还不熟悉的童鞋避免一些无谓的错误。 DROP PROCEDURE "PLName" @ CREATE PROCEDURE "PLName"(--存储过程名字 IN IN_ID BIGINT , --以下全是输入参数 IN IN_ENTNAME VARCHAR(200) , IN IN_REGNO VARCHAR(50), IN IN_PASSWORD VARCHAR(20), IN IN_LEREP VARCHAR(300), IN IN_CERTYPE CHARACTER(1), IN IN_CERNO VARCHAR(50), IN IN_LINKMAN VARCHAR(50), IN IN_SEX CHARACTER(1), IN IN_MOBTEL VARCHAR(30), IN IN_REQDATE TIMESTAMP, IN IN_REMITEM VARCHAR(300), IN IN_STATE CHARACTER(1), IN IN_TIMESTAMP TIMESTAMP ) BEGIN declare V_RESULT BIGINT; --声明变量 DELETE FROM TableNameA WHERE ID = IN_ID;

DB2存储过程--基础详解

DB2存储过程-基础详解 2010-12-20 来源:网络 简介 DB2 SQL Procedural Language(SQL PL)是SQL Persistent Stored Module 语言标准的一个子集。该标准结合了SQL 访问数据的方便性和编程语言的流控制。通过SQL PL 当前的语句集合和语言特性,可以用SQL 开发综合的、高级的程序,例如函数、存储过程和触发器。这样便可以将业务逻辑封装到易于维护的数据库对象中,从而提高数据库应用程序的性能。 SQL PL 支持本地和全局变量,包括声明和赋值,还支持条件语句和迭代语句、控制语句的转移、错误管理语句以及返回结果集的方法。这些话题将在本教程中讨论。 变量声明 SQL 过程允许使用本地变量赋予和获取SQL 值,以支持所有SQL 逻辑。在SQL 过程中,在代码中使用本地变量之前要先进行声明。 清单 1 中的图演示了变量声明的语法: 清单 1. 变量声明的语法 .-,-----------------. V | |--DECLARE----SQL-variable-name-+-------------------------------> .-DEFAULT NULL------. >--+-data-type--+-------------------+-+-------------------------| | '-DEFAULT--constant-' | SQL-variable-name 定义本地变量的名称。该名称不能与其他变量或参数名称相同,也不能与列名相同。 图 1 显示了受支持的DB2 数据类型:

DB2 存储过程开发最佳实践

DB2 存储过程开发最佳实践 COALESCE函数会依次检查输入的参数,返回第一个不是NULL的参数,只有当传入COALESCE函数的所有的参数都是NULL的时候,函数才会返回NULL。例如, COALESCE(piName,''),如果变量piName为NULL,那么函数会返回'',否则就会返回piName本身的值。 下面的例子展示了如何对参数进行检查何初始化。 Person表用来存储个人的基本信息,其定义如下: 表1: Person 下面是用于向表Person插入数据的存储过程的参数预处理部分代码:

表Person中num、name和age都是非空字段。对于name字段,多个空格我们也认为是空值,所以在进行判断前我们调用RTRIM和COALESCE对其进行处理,然后使用 piName = '',对其进行非空判断;对于Rank 字段,我们希望如果用户输入的NULL,我们把它设置成"0",对其我们也使用COALESCE进行初始化;对于"Age"和"Num" 我们直接使用 IS NULL进行非空判断就可以了。 如果输入参数没有通过非空判断,我们就对输出参数poGenStatus设置一个确定的值(例子中为 34100)告知调用者:输入参数错误。 下面是对参数初始化规则的一个总结,供大家参考: 1. 输入参数为字符类型,且允许为空的,可以使用COALESCE(inputParameter,'')把NULL转换成''; 2. 输入类型为整型,且允许为空的,可以使用COALESCE(inputParameter,0),把空转换成0; 3. 输入参数为字符类型,且是非空非空格的,可以使用COALESCE(inputParameter,'')把NULL转换成'',然后判断函数返回值是否为''; 4. 输入类型为整型,且是非空的,不需要使用COALESCE函数,直接使用IS NULL进行非空判断。 最佳实践 3:正确设定游标的返回类型 前面我们已经讨论了如何声明存储过程的返回结果集。这里我们讨论一下结果集返回类型的问题。结果集的返回类型有两种:调用者(CALLER) 和客户应用(CLIENT)。首先我们看一下声明这两种游标的例子:

DB2存储过程语法

DB2存储过程语法 语法: CREATE PROCEDURE . (参数) [属性] <语句> --参数:SQL PL 存储过程中有三种类型的参数: IN:输入参数(默认值,也可以不指定) OUT:输出参数 INOUT:输入和输出参数 --属性 1、LANGUAGE SQL 指定存储过程使用的语言。LANGUAGE SQL 是其默认值。还有其它的语言供选择,比如Java 或者C,可以将这一属性值分别设置为LANGUAGE JAVA 或者LANGUAGE C。 2、DYNAMIC RESULT SETS 如果您的存储过程将返回n 个结果集,那么需要填写这一选项。 3、SPECIFIC my_unique_name 赋给存储过程一个唯一名称,如果不指定,系统将生成一个惟一的名称。一个存储过程是可以被重载的,也就是说许多个不同的存储过程可以使用同一个名字,但这些存储过程所包含的参数数量不同。通过使用SPECIFIC 关键字,您可以给每一个存储过程起一个唯一的名字,这可以使得我们对于存储过程的管理更加容易。例如,要使用SPECIFIC 关键字来删除一个存储过程,您可以运行这样的命令:DROP SPECIFIC PROCEDURE。如果没有使用SPECIFIC 这个关键字,您将不得不使用DROP PROCEDURE 命令,并且指明存储过程的名字及其参数,这样DB2 才能知道哪个被重载的存储过程是您想删除的。 4、SQL 访问级别 NO SQL:存储过程中不能有SQL 语句 CONTAINS SQL:存储过程中不能有可以修改或读数据的SQL 语句 READS SQL:存储过程中不能有可以修改数据的SQL 语句 MODIFIES SQL:存储过程中的SQL 语句既可以修改数据,也可以读数据 默认值是MODIFIES SQL,一个存储过程不能调用具有更高SQL 数据访问级别的其他存储过程。例如,被定义为CONTAINS SQL 的存储过程可以调用被定义为CONTAINS SQL 或NO SQL 的存储过程。但是这个存储过程不能调用被定义为READS SQL DATA 或MODIFIES SQL 的其他存储过程。 --语句 可以是一条单独的语句或者是一组由BEGIN [ATOMIC] ... END 复合语句 DB2数据库动态SQL应用 今天写了一个db2的存储过程,分享一下:

DB2存储过程编写规范

DB2存储过程编写规范 版本号:1.0 修订记录:

目录 第一章.前言 (3) 一.编写目的 (3) 二.编写背景 (4) 三.适用范围 (4) 第二章.程序结构 (5) 一.整体结构 (5) 二.程序说明 (6) 三.变量定义 (7) 四.异常错误处理 (7) 五.程序正文 (9) 第三章.命名规范 (10) 一.存储过程命名 (10) 二.参数命名 (10) 三.变量命名 (11) 四.临时表命名 (11) 第四章.书写格式 (12) 一.表达范式 (12) 二.段落缩进 (12) 三.段落间隔 (12) 四.程序注释 (13) 第五章.注意事项 (13)

一.固定的输出参数 (13) 二.临时表的使用 (14) 三.数据的插入 (14) 四.where 条件 (14) 五.count 的使用 (15) 六.全表删除 (15) 七.MERGE(UPSERT)的使用 (15) 第六章.附录A (15) 第一章.前言 一.编写目的 为了提高开发效率和程序的可读性,降低程序编写过程的出错率和重复劳动性,保持程序编写风格的一致性和连贯性,特定此规范。

二.编写背景 目前数据库工具有很多种,考虑到数据仓库开发的实用性,数据仓库开发工具选择了DB2。 三.适用范围 本规范适用于招商银行信息技术部开发人员以及运行管理人员,从事DB2存储过程开发的相关技术人必须按照此规范编写存储过程。

第二章.程序结构 一.整体结构 创建DB2存储过程必须按如下标准格式书写: DROP PROCEDURE 模式名.过程名@ CREATE PROCEDURE 模式名.过程名 ( IN|OUT 输入|输出变量名输入|输出变量类型 [ , ... ] ) SPECIFIC模式名.过程名 LANGUAGE SQL /* 程序说明*/ BEGIN <程序体> END@ 其中: 1)模式名是用来指定该存储过程属于哪个模式下的,默认为编译该过程的登录用户名,但为了过程的统一管理以及各系统间的相互区分,必须要指定一个模式名,模式名由过程所属项目设计中统一制

经典:深入了解IBM DB2的通信与连接过程

教你深入了解IBM DB2的通信与连接过程 本文详细描述了DB2? Universal Database?(DB2 UDB)代理的工作原理以及连接集中器的特性,并对DB2 连接上常见的问题及代理的优化作了详细的分析。希望通过本文让用户能够了解DB2 的连接机制和客户端与服务器端的交互作用,可以解决在实际的商业环境中遇到的性能问题。 简介 DB2 的代理(agent) 是位于DB2 服务器中的服务于应用程序请求的一些进程或线程。当有外部应用程序连接至DB2 实例提出访问请求时,DB2 的代理就会被激活去应答这些请求。一般DB2 的代理被称为工作代理,工作代理大概有三种类型:空闲代理、活动的协调代理、子代理。 ◆空闲代理:指的是没有任何任务的代理。这种代理不服务于任何远程连接也不服务于本地连接,处于一种备用或待命状态。 ◆活动的协调代理:指的是处于工作状态的代理,每一个外部应用程序产生的数据库活动连接的都有一个活动协调代理来为它服务。 ◆子代理:指的是接受协调代理分发出来的工作的下一级代理。在DB2 V95 以前,只有在多分区环境(MPP) 或节点内并行环境(SMP) 下才存在子代理,在DB2 V95 中所有环境中都可能存在子代理。 在DB2 服务器中有一个代理池,当实例刚启动后这里便有一些代理(其数量取决于实例参数NUM_INITAGENTS)。在没有任何数据库连接时,它们处于待命状态,就是空闲代理。而当有外部程序连接至数据库时,这些代理开始得到命令去服务于这些新建的连接,这时它们就变成了活动的协调代理。这些协调代理再将请求逐步细分,分配给下一级代理即子代理去处理。如果当前的代理都已经在工作了,同时又来了新的请求,数据库管理器会产生一个新的代理去应答。当事务处理完毕而且数据库连接断开后,协调代理要么返回代理池变回空闲代理,要么就自动消失了(取决于实例参数NUM_POOLAGENTS)。这就是一个代理的生命周期。 相关的配置参数 通过执行DB2 get dbm cfg 可以看到以下几个和代理相关的实例参数:MAXAGENTS,NUM_POOLAGENTS,NUM_INITAGENTS,MAX_COORDAGENTS,MAX_CONNECTIONS,MAXCAGENTS。下面对它们做一下简要介绍: ◆MAXAGENTS:这个参数为当前实例中全部代理的数量,包括协调代理,空闲代理和子代理之和。不过这个参数在DB2 V95 中已经不再使用了。 ◆NUM_POOLAGENTS:这个参数用来控制代理池中的空闲代理的数量。当活动的代理完成工作返回代理池变成空闲代理时,如果数量超过了这个参数,那么这个代理就会自动消失了。注意:在连接集中器激活的情况下,代理池中的空闲代理数目在某一时刻可能会超过NUM_POOLAGENTS 的大小,以应对突发的高密度连接。 ◆NUM_INITAGENTS:这个参数就是前面提到的在实例刚刚启动时便生成的一些空闲

db2编程使用技巧

db2编程使用技巧一(转帖) 1 DB2编程 1.1 建存储过程时CREATE 后一定不要用TAB键3 1.2 使用临时表3 1.3 从数据表中取指定前几条记录3 1.4 游标的使用4 注意commit和rollback 4 游标的两种定义方式4 修改游标的当前记录的方法5 1.5 类似DECODE的转码操作5 1.6 类似CHARINDEX查找字符在字串中的位置5 1.7 类似DATEDIF计算两个日期的相差天数5 1.8 写UDF的例子5 1.9 创建含IDENTITY值(即自动生成的ID)的表6 1.10 预防字段空值的处理6 1.11 取得处理的记录数6 1.12 从存储过程返回结果集(游标)的用法6 1.13 类型转换函数8 1.14 存储过程的互相调用8 1.15 C存储过程参数注意8 1.16 存储过程FENCE及UNFENCE 8 1.17 SP错误处理用法9 1.18 IMPORT用法9 1.19 VALUES的使用9 1.20 给SELECT 语句指定隔离级别10 1.21 ATOMIC及NOT ATOMIC区别10 2 DB2编程性能注意10 2.1 大数据的导表10 2.2 SQL语句尽量写复杂SQL 10 2.3 SQL SP及C SP的选择10 2.4 查询的优化(HASH及RR_TO_RS) 11 2.5 避免使用COUNT(*) 及EXISTS的方法11 3 DB2表及SP管理12 3.1 看存储过程文本12 3.2 看表结构12 3.3 查看各表对SP的影响(被哪些SP使用) 12 3.4 查看SP使用了哪些表12 3.5 查看FUNCTION被哪些SP使用12 3.6 修改表结构12 4 DB2系统管理13 4.1 DB2安装13

DB2在Win7下安装及建库流程

DB2在Win7下安装及建库流程 安装流程 安装步骤 db2exc_972_WIN_x86.exe文件,双击运行即可。安装时它会把安装文件解压到系统临时文件夹,然后再运行,其实这就是一个压缩包,可以用360解压工具解压出来,除了一张图片无法解压外其他正常,以后安装时直接从解压出来的文件运行,可以省点时间,建议解压。双击setup.exe进入安装启动板,选择安装新产品 初始界面如下 下一步,接受许可

的,所以这里直接下一步 响应文件,这是用来自动安装的。有时,你需要将DB2 客户端安装到多台机器上,又或者需要将DB2 数据库服务器嵌入到应用程序,并在安装这个应用程序同时安装DB2 数据库服务器。这些情况下,DB2 的自动安装是一个理想的方法。DB2 利用响应文件来进行自动安 装,响应文件是一个文本文件,它保存了安装所需的信息。这里直接下一步

选择安装文件夹 用户帐户配置,新手只用填入密码和确认密码,其他不变,下一步。对于了解的人,可以输入一个存在的用户,这个用户将会使用DB2 的实例和其它服务。这个用户必须是windows 中本地管理员(Local Administrator)组的一员,且密码是登陆操作系统时用的密码。如果您输入的用户ID 不存在,这个用户ID 就会被创建,并成为一个本地管理员,即新建一个系统管理员。如果用户不属于任何的一个域,请将域(domain)留空。Windows 中,默认创建 的用户名是db2admin。这里,我选择使用当前登陆的系统用户帐户(最好是管理员大叔)

配置实例,可以做一些相应的配置,例如,是否开机启动服务、端口号(默认端口可能会是:50000,50001,50002),这里直接下一步。 点击完成开始安装

db2迁移方案

db2是个有着广泛商业应用的关系数据库软件。作为一个数据库管理员时常面临着数据库系统的迁移工作,这是一个复杂而艰巨的过程。互联网和db2 的帮助文档中有许多关于db2 数据库迁移的介绍,但是对于db2 数据库的跨平台迁移却很少谈及。本文将基于笔者的成功实践,总结一下跨平台数据库迁移的步骤和注意事项。 简介 设想您是一个db2 商业数据库系统的管理员。您被给予一项任务,支持业务开发和测试团队对商业系统的持续开发,为他们创建一套独立于产品环境的数据库系统,从而不影响日常的商业运作。由于种种原因,这套开发和测试数据库系统将运行在一个不同于产品环境的操作系统。我们知道db2 提供了一些方便的数据库管理工具,比如数据库的整体备份和恢复功能,用户可以用它很方便的将一个db2 数据库从一台物理节点迁移到另一个物理节点,但是db2 的备份和恢复功能目前只支持同构操作系统平台间的迁移,比如从windows 平台到windows 平台,AIX 平台到AIX 平台。对于上述任务要求的跨平台的数据库迁移,就没有一个专门的工具可以很方便的实现。 迁移步骤 经过笔者的实践,总结db2 数据库的跨平台迁移步骤如下: 记录源数据库管理系统配置参数,以备迁移过后数据库系统性能调优; 检查源数据库系统对象,明确要迁移哪些数据库系统对象; 导出源数据库系统的数据集; 生成源数据库系统的数据对象定义语句; 在目标平台创建新的数据库,参照源系统进行设置; 导入源数据集; 检查数据集导入过程日志,排除可能的错误; 执行数据对象定义语句; 检查数据对象语句执行日志,排除可能的错误; 检查更新存储过程的定义; 连接应用系统,测试数据库迁移是否成功。 下面给出一个遵循上述步骤的具体例子,其中将给出执行这些步骤的具体db2 命令以供参考。 1. 记录源数据库管理系统配置参数。这些是很重要的数据环境设置,其中的一些设置关系到迁移能否成功。

db2迁移方案

db2 是个有着广泛商业应用的关系数据库软件。作为一个数据库管理员时常面临着数据库系统的迁移工作,这是一个复杂而艰巨的过程。互联网和db2 的帮助文档中有许多关于db2 数据库迁移的介绍,但是对于db2 数据库的跨平台迁移却很少谈及。本文将基于笔者的成功实践,总结一下跨平台数据库迁移的步骤和注意事项。 简介 设想您是一个db2 商业数据库系统的管理员。您被给予一项任务,支持业务开发和测试团队对商业系统的持续开发,为他们创建一套独立于产品环境的数据库系统,从而不影响日常的商业运作。由于种种原因,这套开发和测试数据库系统将运行在一个不同于产品环境的操作系统。我们知道db2 提供了一些方便的数据库管理工具,比如数据库的整体备份和恢复功能,用户可以用它很方便的将一个db2 数据库从一台物理节点迁移到另一个物理节点,但是db2 的备份和恢复功能目前只支持同构操作系统平台间的迁移,比如从windows 平台到windows 平台,AIX 平台到AIX 平台。对于上述任务要求的跨平台的数据库迁移,就没有一个专门的工具可以很方便的实现。 迁移步骤 经过笔者的实践,总结db2 数据库的跨平台迁移步骤如下: 记录源数据库管理系统配置参数,以备迁移过后数据库系统性能调优; 检查源数据库系统对象,明确要迁移哪些数据库系统对象; 导出源数据库系统的数据集; 生成源数据库系统的数据对象定义语句; 在目标平台创建新的数据库,参照源系统进行设置; 导入源数据集; 检查数据集导入过程日志,排除可能的错误; 执行数据对象定义语句; 检查数据对象语句执行日志,排除可能的错误; 检查更新存储过程的定义; 连接应用系统,测试数据库迁移是否成功。 下面给出一个遵循上述步骤的具体例子,其中将给出执行这些步骤的具体db2 命令以供参考。 1. 记录源数据库管理系统配置参数。这些是很重要的数据环境设置,其中的一些设置关系到迁移能否成功。 清单1. 显示数据库管理系统配置参数的命令 以下是引用片段:

db2使用手册

第一部分DB2系统管理命令 1.Db2有域,实例,和数据库三层的概念。 2.查看数据库服务器中有几个数据库。包括网络中数据库的引用。 进入数据库安装目录下的bin目录:C:\Program Files\IBM\SQLLIB\BIN 执行db2 list database directory命令 3.查看命令选项说明 list command options 4.查看运行的数据库服务器中关联了多少个引用程序对数据库的访问。 进入数据库安装目录下的bin目录:C:\Program Files\IBM\SQLLIB\BIN db2 list applications命令 可以通过db2 force application(进程id)杀死对应的进程。 5.如何强制断开应用程序和数据库的连接。 进入数据库安装目录下的bin目录:C:\Program Files\IBM\SQLLIB\BIN 行下列的命令db2 force applications可以强制断开应用程序和数据库的连接。 6.如何备份数据库 进入db2的操作环境,然后运行 backup database 数据库别名user 用户名using 密码命令 7.停止数据库的服务器。 进入数据库安装目录下的bin目录:C:\Program Files\IBM\SQLLIB\BIN 或db2操作环境中,如果在db2操作环境中必须通过的db2 terminate命令终结db2操作环境中启动的所有子进程(即停止所有命令行处理器回话) 再执行db2stop命令。 注意: 在执行此命令的时候,必须没有应用程序或用户和数据库连接。 可以在执行停止命令之前查看于db2服务器连接的应用程序和用户。然后执行牵制断开命令断开连接的数据库和用户。 8.如何从旧版本中把数据库迁移到新的安装版本中(在新版数据库种运行下列代码) i.验证数据库是否可以被迁移。用db2ckmig命令, db2ckmig /e 数据库别名/l 验证信息保存路径/u 用户名/p 密码ii.执行数据库的迁移命令 MIGRATE database 数据库别名user 用户名using 密码命令 9.启动DB2服务器 进入数据库安装目录下的bin目录:C:\Program Files\IBM\SQLLIB\BIN 或db2操作环境中 执行db2start命令

db2学习总结

DB2相关程序优化建议 一、程序开发建议 注意程序锁的使用 DB2有十分严格的锁机制,存在锁升级的概念,锁也需要占用一定的缓 存空间,当程序的行级锁达到一定数量后可升级为表级锁,表锁达到一 定数量后可升级为库级锁,将整个数据库锁住。所以在写程序的时候我 们要十分关注程序锁的使用,尤其是对应并发性高的程序。 隔离级别主要用于控制在DB2根据应用提交的SQL语句向DB2数据库中 的相应对象加锁时,会锁住哪些纪录,也就是锁定的范围。隔离级别 的不同,锁定的纪录的范围可能会有很大的差别。 隔离级别分为RR/RS/CS/UR这四个级别。下面让我们来逐一论述: 1.RR隔离级别:在此隔离级别下,DB2会锁住所有相关的纪录。在 一个SQL语句执行期间,所有执行此语句扫描过的纪录都会被加上相应 的锁。具体的锁的类型还是由操作的类型来决定,如果是读取,则加共 享锁;如果是更新,则加独占锁。由于会锁定所有为获得SQL语句的 结果而扫描的纪录,所以锁的数量可能会很庞大,这个时候,索引的 增加可能会对SQL语句的执行有很大的影响,因为索引会影响SQL语句扫 描的纪录数量。 2.RS隔离级别:此隔离级别的要求比RR隔离级别稍弱,此隔离级别下 会锁定所有符合条件的纪录。不论是读取,还是更新,如果SQL语句 中包含查询条件,则会对所有符合条件的纪录加相应的锁。如果没有条 件语句,也就是对表中的所有记录进行处理,则会对所有的纪录加锁。 3.CS隔离级别:此隔离级别仅锁住当前处理的纪录。 4.UR隔离级别:此隔离级别下,如果是读取操作,不会出现任何的行 级锁。对于非只读的操作,它的锁处理和CS相同。 在这四种隔离级别中,CS是缺省值。这四种隔离级别均可以保证DB2 数据库在并发的环境下不会有数据丢失的情况发生。要注意的是如果对 纪录进行了修改,需要在相应的纪录上加独占类型的锁,这些独占类型 的锁直到交易结束时才会被释放,这一点在四种隔离级别下都是相同的。 到这里,我们已经对DB2中的表锁,行锁,隔离级别进行了论述。DB2 数据库的并发控制主要是通过这些机制。理解了这些概念,我们就可以 在使用DB2数据库时根据系统的实际需要来设计锁模式和隔离级别,来 实现我们的系统要求,在保障数据安全的前提下,提供较好的并发性。 如上针对隔离级别的解释,我们在对大表,尤其是并发性高的大表进行查询是一定要指定隔离级别,在语句的最后加上with ur。 注意清空表的方式 不管是在oracle还是DB2中delete的性能都是较低的,因为delete需要 回归段记录日志,oracle提供了一种全表清空的高效方法truncate语句,

DB2_存储过程执行计划的查看及监控方法

一,编写存储过程。 [db2inst1@db2lab ~]$ cattest.sql create procedure sales_status (in quota integer) dynamic result sets 2 languagesql begin declare SQLSTATE char(5); declarers cursor with return for select * from t1; openrs; end @ 二,建立存储过程 [db2inst1@db2lab ~]$ db2 -td@ -f 1.sql DB20000I The SQL command completed successfully. 三,执行存储过程 [db2inst1@db2lab ~]$ db2 "call sales_status(1)" Result set 1 -------------- ID ------- 1. 1 record(s) selected. Return Status = 0 四,利用表函数MON_GET_PKG_CACHE_STMT抓取static的信息,获取PACKAGE_NAME及SQL语句 [db2inst1@db2lab ~]$ db2 "select PACKAGE_NAME,SECTION_NUMBER,EXECUTABLE_ID from TABLE(MON_GET_PKG_CACHE_STMT ( 'S', NULL, NULL, -1)) as T" PACKAGE_NAME SECTION_NUMBER EXECUTABLE_ID -------------------------------------------------------------------------------------------------------------------------------- -------------------- ------------------------------------------------------------------- P0462483 1 x'0100000000000000BE0100000000000001000000010020140415004624839232' 1 record(s) selected. 五,利用EXECUTABLE_ID,获取SQL语句 [db2inst1@db2lab ~]$ db2 "SELECT STMT_TEXT FROM TABLE(MON_GET_PKG_CACHE_STMT > (null, x'0100000000000000BE0100000000000001000000010020140415004624839232', null, -2))"

相关主题
相关文档
最新文档