暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle端配置(捕获端)DMHS

原创 醒醒别睡了 2021-09-03
1035
当数据要从oracle库中迁移到DM数据库且数据量非常大时,就需要使用到DMHS来辅助迁移,所以学会搭建DMHS是非常有必要的。

一、Oracle端配置(捕获端):

1.关闭防火墙:

service iptables stop
chkconfig iptables off

2.在环境变量(.bash_profile)中添加LD_LIBRARY模块的路径信息:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

3.配置listener.ora、tnsnames.ora文件

4.打开监听

lsnrctl start

5.进入数据库

sqlplus / as sysdba

1.启动数据库

startup;

2.创建连接用户(此处创建了DMHS用户)

3.给用户授权

grant select any table to dmhs;
grant select any dictionary to dmhs;
grant create session to dmhs;
grant lock any table to dmhs;
grant execute on dbms_flashback to dmhs;
grant connect to DMHS;

4.oracle关闭最小回收机制:

show parameter recycle; #检查回收机制是否开启,为on则开启
alter system set recyclebin=off deferred;

5.Oracle开启归档

6.查看最小附加日志是否开启:

SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;

7.oracle开启最小附加日志

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

8.将同步表设置为logging模式,后续操作记录到redo日志中

select 'alter table '||owner||'.'||table_name||' logging;' from dba_tables where logging = 'NO' and duration not like 'SYS%' and owner in ('D5000','HISDB','OSP','STATICS','ALARM');

9.确认捕获端是否存在物化视图日志表,需加入至同步黑名单:

select * from dba_tables where table_name like 'MLOG$%' and owner='D5000';

10.查看数据库字符集(数据库的字符变量应与环境变量一致:AMERICAN_AMERICA.ZHS16GBK)

*若不一致,跳转至最后

select userenv('language') from dual;

11.源端数据库必须允许 DDL 触发器的触发动作,查看的命令:

show parameter "_system_trig_enabled";

6.启动dmhs服务

./dmhs_server dmhs_cpt.xml

另开一个连接启动控制台:

./dmhs_console
<DMHS> connect 127.0.0.1:5345
<DMHS> clear exec lsn
<DMHS> COPY 0 "SCH.NAME='NW_HS_TEST' AND TAB.NAME='TEST'" CREATE|INSERT|DICT
<DMHS>start cpt
<DMHS>state
<DMHS>cpt

这里需要注意,每次在全库重新装载之前,需要清空目的端的DMHS_TABLE_SEQID辅助表。如果不清空,可能会导致CONTINUE使用的正确性。

备注

ORACLE端的dmhs.hs

    <?xml version="1.0" encoding="GB2312" standalone="no"?>
    <dmhs>
        <base>
      	       <lang>ch</lang>
        <mgr_port>5345</mgr_port>
        <chk_interval>3</chk_interval>
        <ckpt_interval>60</ckpt_interval>
        <siteid>1</siteid>
      </base>
      <cpt>
        <db_type>ORACLE11g</db_type>
        <db_server>EMS_MDB1</db_server>
        <db_user>DMHS</db_user>
        <db_pwd>DMHS123456</db_pwd>
        <db_port>1521</db_port>
        <idle_time>10</idle_time>
        <ddl_mask>TABLE:VIEW:INDEX:OP</ddl_mask>
        <parse_thr>1</parse_thr>
        <arch>
         	 <clear_interval>600</clear_interval>
           	 <clear_flag>0</clear_flag>
        </arch>
        <send>
            <ip>192.168.187.131</ip>
            <mgr_port>5345</mgr_port>
            <data_port>5346</data_port>
            <net_pack_size>256</net_pack_size> #NET 模块投递消息时消息包的大小,取值范围在 1-512,单位 K,默认 256。
            <net_turns>0</net_turns> #禁用网闸模式,
            <trigger>1</trigger> #下一级数据入库时,禁用触发器
            <constraint>1</constraint> #一级数据入库时,禁用约束,不包括主键约束和唯一性约束,主要是包括外键约束
            <identity>1</identity> #示下一级数据入库时,忽略自增列
            <filter>
                <enable>
                    <item>D5000.*</item>
                </enable>
                <disable/>
            </filter>
            <map>
                <item></item>
            </map>
       	 </send>
</cpt>
      </dmhs>

问题:字符集不同

1.oracle数据库设置字符集:

SQL> conn /as sysdba;
SQL> shutdown immediate;
SQL> startup mount;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL> alter database open;
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
SQL> select * from v$nls_parameters;
SQL> shutdown immediate;
SQL> startup;
SQL> select userenv('language') from dual;

2.环境变量添加字符集:

export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"

更多资讯请上达梦技术社区了解:https://eco.dameng.com

最后修改时间:2021-09-18 16:04:54
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论