DMHS部署流程整理

1 软件部署

安装数据库软件并在初始化后重启

2 安装源端dmhs软件

$DM_HOME/bin/*.bin拷贝到dhms相应的bin目录下

3 源端配置dm.ini

开启归档ARCH_INI=1,逻辑日志RLOG_APPEND_LOGIC=1,FAST_COMMIT=0,
也可以不配置参数文件,在线修改(修改后需要重启数据库)
call sp_set_para_value(2,’RLOG_APPEND_LOGIC’,1);
alter system set ‘RLOG_APPEND_LOGIC’=1 spfile;
配置dmarch.ini,添加归档配置文件
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dbarch/arch #归档目录
ARCH_FILE_SIZE = 128 #归档文件大小,单位MB
ARCH_SPACE_LIMIT = 0 #空间大小限制,0表示不限制

4 源端验证配置正确性

4.1 检查归档配置的正确性

请执行以下SQL命令:
SELECT ARCH_DEST, ARCH_FILE_SIZE FROM SYS.V$DM_ARCH_INI WHERE ARCH_TYPE=‘LOCAL’ AND ARCH_IS_VALID=‘Y’;
查询结果如下,则表示配置归档是正确的。
行号 ARCH_DEST ARCH_FILE_SIZE


1 /dblog/dbbak 128
已用时间: 128.384(毫秒). 执行号:3.

4.2 检查逻辑日志配置的正确性

通过下面的查询:
SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = ‘RLOG_APPEND_LOGIC’;
查询结果如下,则表示逻辑日志参数配置成功。
行号 PARA_VALUE


1 1
已用时间: 20.685(毫秒). 执行号:4.

4.3 检查在线日志

通过如下的查询:
SELECT PATH FROM SYS.V$RLOGFILE;
查询结果如下,则表示在线日志正常。
行号 PATH


1 /opt/dmdbms/arch/src_db01.log
2 /opt/dmdbms/arch/src_db02.log
已用时间: 1.096(毫秒). 执行号:5.

4.4 检查FAST_COMMIT参数是否为0

 select para_value from v$dm_ini where para_name = 'FAST_COMMIT';

查询结果如下,则表示正常。
行号 PARA_VALUE


1 0
已用时间: 8.691(毫秒). 执行号:585.

5 源端配置DDL同步所需的DDL触发器和辅助表。

执行脚本前需要执行set define off;
创建脚本在DMHS安装目录下scripts中的ddl_sql_dm7.sql,创建时需要使用SYSDBA用户
如果脚本执行失败,则尝试使用dmmanager客户端工具执行。需要手动删除该脚本创建好的表与触发器(删除列表根据以下的查询sql进行删除)
检查创建的触发器和辅助表是否有效,检查辅助表的语句:
select owner, table_name from dba_tables where owner = ‘SYSDBA’ and table_name like ‘DMHS%’ and status = ‘VALID’;
查询结果如下,则表示DMHS辅助表创建有效。
行号 OWNER TABLE_NAME


1 SYSDBA DMHS_DDL_COL
2 SYSDBA DMHS_DDL_SQL
3 SYSDBA DMHS_DDL_CONS
4 SYSDBA DMHS_DDL_IDX
5 SYSDBA DMHS_DDL_RENAME
6 SYSDBA DMHS_DDL_SEQ
7 SYSDBA DMHS_DDL_PART
7 rows got
已用时间: 197.302(毫秒). 执行号:7.
检查触发器的语句:
select owner, trigger_name from dba_triggers where owner = ‘SYSDBA’ and trigger_name like ‘DMHS%’ and status = ‘Y’;
查询结果如下,则表示DMHS触发器创建有效。
行号 OWNER TRIGGER_NAME


1 SYSDBA DMHS_DDL_TRIGGER_AFTER
2 SYSDBA DMHS_DDL_TRIGGER_BEFORE
3 SYSDBA DMHS_DDL_TRIGGER_GRANT
4 SYSDBA DMHS_DDL_TRIGGER_REVOKE
已用时间: 12.147(毫秒). 执行号:16.

6 源端DMHS配置文件

如果需要DDL同步 基本配置如下
dmhs安装路径的bin目录下,有一个dmhs.hs文件,直接vi编辑修改为如下内容

<?xml version="1.0" encoding="GB2312"?>
<dmhs>
	<base><!-- 管理模块的基本配置 -->
		<lang>ch</lang><!-- 语言选项,ch为中文,en为英文 -->
		<mgr_port>5345</mgr_port><!-- 管理端口号,默认为5345,最小值1000,最大值65535 -->		
		<chk_interval>2</chk_interval><!-- 状态轮询间隔,默认为3s,最小值1s,最大值60s -->		
		<ckpt_interval>45</ckpt_interval><!-- 执行端检查点间隔,默认60s,最小值10s,最大值65536s -->
		<siteid>1</siteid><!-- 站点ID,这个ID配置时要注意,全局唯一,最小值0,最大值65535 -->
	</base>		
	<cpt><!-- 这项配置可以配置多个,也就是可以配置多个捕获模块,如果该节点只作为执行端,该节点需要删除 -->
		<db_type>dm7</db_type><!-- 数据库类型,默认为dm7,限定值Oracle10g,Oracle11g,dm6,dm7 -->
		<db_server>192.168.56.101</db_server><!-- 数据库服务名或IP,默认为127.0.0.1 -->
		<db_user>SYSDBA</db_user><!-- 数据库用户名,默认为SYSDBA -->
		<db_pwd>SYSDBA</db_pwd><!-- 数据库口令,默认为SYSDBA -->
		<db_port>5236</db_port><!-- 数据库端口号,默认为5236 -->
		<idle_time>300</idle_time><!-- 分析线程空闲睡眠时间,默认值为300ms,最小值0ms,最大值65536ms -->
		<ddl_mask>op:obj:rec</ddl_mask><!-- 分析端DDL同步支持的对象和操作,可选项参见手册4.2.1 CPT,需要将安装脚本中对应的DDL脚本在源端执行 -->
		<parse_thr>8</parse_thr><!-- 分析线程个数,默认为1,最小值1,最大值32,多线程分析时,不支持ALTER TABLE操作同步 -->	
		<dict_dir>/dbarch/dict</dict_dir>
		<arch>
			<clear_interval>600</clear_interval><!-- 归档文件清理间隔,默认为600s,最小值60s,最大值2000000000s -->
			<clear_flag>0</clear_flag><!-- 清除归档日志的方式,可选项0(无动作), 1(删除归档文件), 2(表示移走归档文件) -->
			<bak_dir></bak_dir><!-- clear_flag项配置成2时,该配置项可以用来指定归档文件转移的目录,如果未配置这项,则转移到归档路径的log_bak目录下 -->
		</arch>	
		<send><!-- 发送模块配置 -->
				<ip>192.168.56.102</ip><!-- 目的端IP,默认127.0.0.1 -->
				<mgr_port>5345</mgr_port><!-- 目的端管理端口,默认为5345,最小值1000,最大值65535 -->
				<data_port>5346</data_port><!-- 目的端数据接收端口号,默认为5346,最小值1000,最大值65535 -->
				<level>0</level><!-- 复制级别,默认为0,最小值0,最大值65535 -->
				<trigger>1</trigger><!-- 是否忽略触发器,默认为0,限定值0,1 -->
				<constraint>1</constraint><!-- 是否忽略约束,默认为0,限定值0,1 -->
				<identity>1</identity><!-- 是否忽略自增列,默认为0,限定值0(不忽略,插入同步过来的值),1(忽略,插入自增列自身的值) -->
				<net_turns>0</net_turns><!-- 是否开启网闸模式,默认为0,限定值0(关闭),1(开启),网匝模式下,主机看不到备机的统计信息 -->
				<filter><!-- 过滤,必须指定,一定要注意大小写,要跟源库中的对像名大小写保持一致 -->
					<enable><!-- 白名单,所有允许同步的表,黑名单白名单必须有内容(只有白名单:只同步白名单描述的对象,其余对象不同步,只有黑名单:同步除了黑名单中对象以外的所有对象)-->
						<!-- 格式 <item>实例名.模式名.表名</item> -->
						<!-- 实例名中除DM6为库名外,其它库为实列名 -->
						<!-- 配置过滤时,支持使用*号模糊匹配,例如: -->
						<!-- <item>SYS*.*</item> 所有模式名为sys打头的表允许同步 -->
						<!-- <item>SYSDBA.S*</item> 模式SYSDBA下以S打头的表才允许同步 -->
						<!-- <item>SYSDBA.TEST</item> 模式SYSDBA下表TEST才允许同步 -->
						<item>*.*</item><!-- 过滤项,可以配置N个该项,样例 <item>SYSDBA.*</item> 主机SYSDBA模式下的表才允许同步 -->
					</enable>
					<disable><!-- 黑名单,不允许被同步的表,该项可选,执行流程是:当通过了白名单的验证以后,再来定位黑名单单,如果在黑名单中命中,则不允许同步,配置参照白名单 -->
						<!-- 字段过滤格式 <item>实例名.模式名.表名(列名 == 列值,列值...),或者(列名 != 列值,列值...)</item> -->
						<!-- 操作过滤格式 <item>实例名.模式名.表名=操作类型名,操作类型名...,或者!= 操作类型名,操作类型名...</item> -->
					</disable>
				</filter>
				<map><!-- 表名映射,可选, 一定要注意大小写,要跟源库和目的库中的对像名大小写保持一致 -->
					<!-- 格式 <item>实例名.模式名.表名 ==> 实列名.模式名.表名</item> -->
					<!-- 实例名中除DM6为库名外,其它库为实列名 -->
					<!-- 配置映射时,支持使用*号模糊映射,例如: -->
					<!-- <item>SYS*.* == TES*.*</item> 把所有模式名为SYS打头的模式下的表映射到目的端,目的端的模式名改成以TES打头 -->
					<!-- <item>SYSDBA.S* == TEST.T*</item> 把所有模式SYSDBA下以S打头的表映射到目的端,目的端的表名改成以T打头 -->
					<!-- <item>SYSDBA.TEST == TEST.XXX</item> 把所有模式SYSDBA下的表TEST映射到目的端,目的端的表名改成XXX -->
					<item></item><!-- 映射项,可以配置N个该项,样例 <item>SYSDBA.* == TEST.*</item> 把主机SYSDBA模式下的表同步到备机TEST模式下 -->
				</map>
		</send>
	</cpt>
</dmhs>

7 目的端DMHS配置

目的端数据库的使用限制

  • 目的端数据库需要禁止触发器操作
  • 目的端数据库禁止使用自增列

8 目的端DMHS配置文件

<?xml version="1.0" encoding="GB2312"?>
<dmhs>
	<base><!-- 管理模块的基本配置 -->
		<lang>ch</lang><!-- 语言选项,ch为中文,en为英文 -->
		<mgr_port>5345</mgr_port><!-- 管理端口号,默认为5345,最小值1000,最大值65535 -->		
		<chk_interval>2</chk_interval><!-- 状态轮询间隔,默认为3s,最小值1s,最大值60s -->		
		<ckpt_interval>60</ckpt_interval><!-- 执行端检查点间隔,默认60s,最小值10s,最大值65536s -->
		<siteid>2</siteid><!-- 站点ID,这个ID配置时要注意,全局唯一,最小值0,最大值65535 -->
	</base>
	<recv><!-- 接收模块的基本配置,如果该节点只作为分析端,该节点需要删除 -->
		<data_port>5346</data_port><!-- 数据接收端口号,默认为5346,最小值1000,最大值65535 -->
		<exec><!-- 执行模块的基本配置 -->
			<db_type>dm7</db_type><!-- 数据库类型,默认为dm7,限定值Oracle10g,Oracle11g,dm6,dm7 -->
			<db_server>192.168.56.101</db_server><!—本地数据库服务名或IP -->
			<db_user>SYSDBA</db_user><!-- 数据库用户名,默认为SYSDBA -->
			<db_pwd>SYSDBA</db_pwd><!-- 数据库口令,默认为SYSDBA -->
			<db_port>5236</db_port><!-- 数据库端口号,默认为5236 -->
			<db_name></db_name><!-- 默认数据库名,默认为空串(只针对dm6有用) -->
			<exec_mode>1</exec_mode><!-- 执行模式, 1(多线程执行),2(ETL模式),3(消息中转模式,跨网段级联时使用) -->
			<exec_thr>4</exec_thr><!-- 执行线程个数,只有当exec_mode为1时才会生效!默认为1,最小值1,最大值64 -->
			<exec_sql>1024</exec_sql><!-- SQL缓存大小,默认为512M,最小值32M,最大值4096M -->
			<exec_trx> 5000 </exec_trx><!-- 事务缓存个数,默认为5000,最小值,1000,最大值10000 -->
			<exec_rows>1000</exec_rows><!-- 批量绑定行数,默认为250,最小值1,最大值2000 -->
			<exec_policy>2</exec_policy><!--执行策略:0 出错后忽略继续。1 出错后停止执行。2 出错后部分执行继续-->
			<msg_col_size>8000</msg_col_size><!-- 保存缓存消息列的大小,这取决于目的库的块大小, 默认为8000,最小值1000,最大值8000 -->
			<level>0</level><!-- 复制级别,默认为0,最小值0,最大值65535 -->
		</exec>
	</recv>
</dmhs>

9 开启目的端DMHS服务

执行之前需要编辑dmhs_serverd中的$DMHS_HOME(描述dmhs的bin目录)与path(描述dmhs.hs配置文件位置)参数
[dmhs@localhost bin]#./dmhs_serverd start
[dmhs@localhost bin]#./dmhs_console
DMHS >connect
DMHS >start

10 开启源端服务(初始装载)

[dmhs@localhost bin]#./dmhs_serverd start
[dmhs@localhost bin]#./dmhs_console
DMHS >connect
DMHS >copy 0 “sch.name=‘SYSDBA’” DICT|LSN|CREATE|INSERT|INDEX

11 源端开启同步

DMHS >start

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值