在运行DMDRS服务前,数据库管理员需要对数据库做如下准备工作。
| 配置服务 | 准备工作 |
|---|---|
| 源DMDRS |
|
| 目标DMDRS |
|
| DMDSS | 无 |
为了保证源DMDRS服务运行中数据的一致性,源DMDRS服务需要读源数据库的归档和逻辑日志,因此源数据库需要开启归档和日志功能。数据库管理员可按下列方式进行配置。
以管理员权限打开DB2命令行处理器。
连接到DB2数据库。
connect to <dbname> user <user> pwd <password>
打开DB2数据库的归档功能。
update db cfg using logarchmeth1 logretain
重启DB2数据库。
db2stop
db2start
DB2开启归档后,需要对数据库做备份。
backup db <dbname> to <back_dir>
DMDRS服务支持DDL同步功能。当应用场景中需要DDL同步时,数据库管理员可按下列方式进行配置。
方式:DDL归档日志
连接到DB2数据库后,开启DDL日志配置。
update db cfg using log_ddl_stmts YES
请源数据库管理员和目标数据库管理员分别创建数据库同步用户DMDRS,并指定DMDRS用户所需的权限,DMDRS用户的最小权限请参见3.4 配置数据库同步用户最小权限。
说明数据库同步用户DMDRS创建完成后,如果需要在用户下进行DDL和DML操作,需要数据库管理员赋予相应的操作权限。
DMDRS服务运行过程中,使用的数据库同步用户需要一定的权限访问数据库数据。数据库管理员可根据应用场景配置数据库用户的最小权限。
赋予DB2源数据库同步用户最小权限的脚本示例请参见 8.2.1 DB2源数据库同步用户最小权限脚本示例,具体的权限说明如下表所示。
| 权限类别 | 权限说明 | 权限 |
|---|---|---|
| 基础权限 | DB2数据库用户连接数据库的权限。 | 需要赋予如下权限: CONNECT ON DATABASE |
| 装载相关权限 | 装载时,数据库用户需要具有装载表的查询权限。 如果待装载的表或序列在当前用户下,不需要额外赋予任何查询权限。 如果待装载的表或序列在其他用户下,则需要赋予待装载表的查询权限。 | 需要赋予如下权限: SELECT ON TABLE <待装载表/序列的模式名>.<待装载表/序列的表名> |
DM8目标数据库同步用户最小权限
赋予DM8目标数据库同步用户最小权限的脚本示例请参见 8.2.2 DM8目标数据库同步用户最小权限脚本示例,具体的权限说明如下表所示。
| 权限类别 | 权限说明 | 权限 |
|---|---|---|
| 基础权限 | 目标DMDRS在执行DML时需要数据操作权限。 | 需要赋予如下权限:PUBLIC |
| 目标DMDRS在启动时需要在目标数据库中创建辅助表和辅助存储过程。 | 需要赋予如下权限:RESOURCE | |
| 目标DMDRS在启动时需要查询数据库的相关参数信息、系统表字典信息。 | 需要赋予如下权限:SOI、VTI | |
| 目标DMDRS在启动时需要同步用户有创建会话的权限。 | 需要赋予如下权限:CREATE SESSION | |
| 装载与同步相关权限 | 若需要同步在非同步用户模式下已存在的表/序列的数据,需要赋予在待同步表/序列上的DML权限或查询权限。 | 需要赋予如下权限: INSERT|UPDATE|DELETE ON <目标表的模式名>.<目标表名> SELECT ON <目标序列的模式名>.<目标序列名> |
| 若需要同步在非同步用户模式下未存在的表/序列的数据,可以先在装载时使用CREATE掩码同步创建表/序列DDL语句,然后赋予该表/序列的DML权限或查询权限。也可为同步用户赋予在所有表/序列上的DML权限或查询权限。 | 需要赋予如下权限: INSERT|UPDATE|DELETE|SELECT ANY TABLE SELECT ANY SEQUENCE | |
| 若需要同步在非同步用户模式下表的注释,需要赋予创建表注释的权限。 | 需要赋予如下权限: COMMENT ANY TABLE | |
| 若需要同步在非同步用户模式下的对象的DDL语句,需要赋予相应的DDL权限。 注:装载表时需要赋予TABLE和INDEX的权限。授予ANY权限前,需先执行语句“ALTER SYSTEM SET 'ENABLE_DDL_ANY_PRIV'=1 BOTH;”开启ANY的授权权限。 |
需要赋予如下权限: CREATE|ALTER|DROP ANY <对象类型> | |
| 若需要非模式对象(表空间、用户、角色和公共同义词)的DDL操作权限,需要赋予同步用户相应的DDL权限。其中角色和公共同义词不需要ALTER权限。 | 需要赋予如下权限: CREATE|ALTER|DROP <对象类型> | |
| 若需要同步在非同步用户模式下的非表对象的DDL语句或源DMDRS的DDL_MASK配置SQL掩码情况下同步对象的DDL语句,需要赋予同步用户辅助存储过程的执行权限以及非同步用户下模式所属用户的存储过程的创建权限。 | 需要赋予如下权限: EXECUTE ON PROCEDURE "DRS_$DDL_SQL_PROC" CREATE PROCEDURE TO <非同步用户下模式所属的用户> |
DB2目标数据库同步用户最小权限
赋予DB2目标数据库同步用户最小权限的脚本示例请参见 8.2.3 DB2目标数据库同步用户最小权限脚本示例,具体的权限说明如下表所示。
| 权限类别 | 权限说明 | 权限 |
|---|---|---|
| 基础权限 | DB2数据库用户连接数据库的权限。 | 需要赋予如下权限: CONNECT ON DATABASE |
| 同步相关权限 | 同步时,数据库用户需要具有修改表数据的权限。 | 需要赋予如下权限: ALL PRIVILEGES ON <待同步表的模式名>.<待同步表的表名> |
源数据库新建表后,需要立即开启表的数据变化捕获,如:
ALTER TABLE DB2INST1.PERSONS DATA CAPTURE CHANGES;
如果不开启,那么只有源DMDRS解析到该表的建表操作时,才会由源DMDRS开启该表的数据变化捕获。在建表和开启捕获的期间,如果对表进行修改,不会记录任何日志信息,可能会导致同步数据不一致的问题。
如果需要同步LONG VARCHAR或LONG VARGRAPHIC数据类型,需要额外开启LONG VAR类型数据捕获,如:
ALTER TABLE DB2INST1.PERSONS DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;
在配置和运行DMDRS服务前,需要对DMDRS做如下准备工作。
在配置DMDRS服务前,需规划DMDRS服务的Manager模块的端口号,包括源DMDRS、目标DMDRS服务和DMDSS服务的Manager模块的端口号。
注意不同的应用场景,DMDRS所包括的DMDRS服务不同。如果在同一台服务器上部署不同的服务,必须确保这些服务的Manager模块的端口号的唯一性。
说明DMDRS的运行用户与安装用户使用同一个用户dmdrs,安装用户请参见《DMDRS安装手册》。
DMDRS运行用户需要以下权限:
Windows:运行用户具有管理员权限。
Linux/Unix系统:运行用户具有DMDRS服务所在目录及子目录的读、写和执行权限。源DMDRS的运行用户应同数据库归档文件目录属同一用户组,该用户组对归档文件所在目录及子目录有读权限。
DMDRS服务运行过程中,需要使用数据库的驱动文件访问数据库数据。
源DMDRS服务:需要使用DB2API驱动文件访问DB2源数据库数据,用户需要在源DMDRS服务器的环境变量中添加DB2API驱动文件路径。
目标DMDRS服务:需要使用目标数据库对应的驱动文件访问目标数据库数据,用户需要在目标DMDRS服务器的环境变量中添加各数据库对应的驱动文件路径。
不同数据库对应的驱动如下所示。
DB2数据库:DB2API驱动
DM8数据库:DMDPI驱动
说明
- 设置环境变量前,请确保源DMDRS与目标DMDRS服务器上已安装数据库的驱动,且驱动版本与数据库版本相匹配。
- 设置环境变量前,请向数据库管理员获取数据库驱动路径。
- 由于操作系统、终端不同,设置环境变量命令或操作步骤会略有差异。
以设置DB2数据库的DB2API驱动的环境变量为例,介绍常用操作系统下设置环境变量的方法。
Linux系统
在终端的配置文件中添加设置环境变量命令。
export LD_LIBRARY_PATH=<DB2API驱动路径>:$LD_LIBRARY_PATH
UNIX系统
在终端的配置文件中添加设置环境变量命令。
export LIBPATH=<DB2API驱动路径>:$LIBPATH
Windows系统
在Windows桌面或“开始”菜单,右键单击“此电脑”,选择“属性”。
在打开的“设置”窗口中,选择“高级系统设置”。
在弹出的“系统属性”对话框的“高级”选项卡中,选择“环境变量”。
在“环境变量”对话框中,选择“系统变量”中系统变量“Path”,再选择“系统变量”下的“编辑”。
在“编辑环境变量”表格中,填写“DB2API驱动路径”。
DMDRS无法获取和更改DB2的客户端字符集,用户需要获取DB2客户端字符集,并将DMDRS配置文件中的char_code参数配置为DB2客户端字符集。
用户可通过以下命令来获取DB2客户端字符集。
db2set -all
查看结果中的DB2CODEPAGE项:
1208表示客户端字符集为UTF-8。
1386表示客户端字符集为GBK。
1392表示客户端字符集为GB18030。
若无法执行该命令或该命令执行结果中无DB2CODEPAGE项,则DB2客户端字符集为默认值(即操作系统字符集)。用户可通过以下命令查看操作系统字符集。
echo $LANG
注意无特殊需求时,应保证DB2客户端字符集与DB2数据库字符集一致。
文章
阅读量
获赞
