環境准備
源端數據庫oracle11g,對應版本dmhs同步軟件,源端ip :192.168.118.121
目標端數據庫dm8,對應版本dmhs同步軟件, 目標端ip:192.168.118.122
Oracle源端配置
1 Oracle數據庫安裝,環境變量配置(見另外一篇linux安裝oracle11g),dmhs安裝略
2 開啟監聽:
[oracle@localhost ~]$ lsnrctl start
3 檢查是否開啟歸檔日志
sqlplus / as sysdba
SQL>archive log list; -- 檢查歸檔是否開啟
如果Automatic archival為Disabled則沒有開啟
那么執行以下語句開啟
SQL>alter database open;
SQL>alter system set db_recovery_file_dest=’’;
SQL>alter system set log_archive_dest=’’;--設置路徑
重啟數據庫,使歸檔路徑生效
SQL>Shutdown immediate
以mount方式啟動數據庫:
SQL> startup mount
SQL>alter database open;
SQL>archive log list;
4 檢查數據庫最小附加日志及全列日志
SQL> select SUPPLEMENTAL_LOG_DATA_MIN, SUPPLEMENTAL_LOG_DATA_ALL from v$database;
如果是為no,就執行以下語句
SQL>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
5 將Oracle的回收機制關閉
SQL>alter system set recyclebin=off deferred;
6 檢查字符集是否一致
先查詢oracle數據庫的字符集:
SQL> select userenv('language') from dual;
再查詢系統字符集
echo $NLS_LANG
如果該變量值為空或者與查詢結果不一致,請將該變量設置為查詢結果的值
修改~/.bash_profile文件,增加export NLS_LANG=“sql查詢結果值”
7 源端DDL支持
需要在源端數據庫以 sys 用戶,在 sys 模式下創建 DDL 觸發器及 DDL 記錄表,並在DMHS配置文件中配置ddl_mask參數選項以啟用該功能。在dmhs目錄下的scripts目錄下的ddl_sql_ora有參考代碼
8 創建數據庫用戶dmhs
Create user dmhs identified by 'dm123';
Grant dba to dmhs;--測試時直接賦予dba權限
現實環境如果沒有DBA權限,需要做如下賦權操作(例如用戶是DMHS):
grant all on dmhs_ddl_sql to dmhs;
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
9 Root用戶安裝odbc ,搭建DMHS最好要2.3.0以上的版本
---wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.0.tar.gz
查看是否安裝rpm -qa|grep unixODBC
tar -xvf unixODBC-2.3.0.tar.gz
cd unixODBC-2.3.0/ --如配置錯誤,看是否安裝gcc
./configure --prefix=/usr/local/unixODBC-2.3.0 --includedir=/usr/include --libdir=/usr/lib --bindir=/usr/bin --sysconfdir=/etc
make && make install
odbcinst -j
配置UNIXODBC
vim /usr/local/etc/odbc.ini
[ORACLE]
Description = ORACLE ODBC DSN
Driver = Oracle in OraDb11g_home1
SERVER = 127.0.0.1
UID = DMHS
PWD = dm123
Servername = ORCL
PORT = 1521
vim /usr/local/etc/odbcinst.ini
[Oracle in OraDb11g_home1]
Description = ODBC DRIVER FOR ORACLE
Driver = /ora/oracle/product/11.2.0/db_1/lib/libsqora.so.11.1
Threading = 0
配置完成之后,可使用 isql 命令測試配置是否正確。注意要用oralce安裝用戶測試,
isql -v ORACLE DMHS dm123
10 配置Oracle源端
dmhs安裝目錄bin下修改dmhs.hs文件
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<version>2.0</version>
<mgr_port>5345</mgr_port>
<chk_interval>3</chk_interval>
<ckpt_interval>60</ckpt_interval>
<siteid>1</siteid>
</base>
<cpt>
<enable>1</enable>
<db_type>ORACLE11g</db_type>
<db_server>orcl</db_server>
<db_port>1521</db_port>
<db_user>dmhs</db_user>
<db_pwd>dm123</db_pwd>
<ddl_mask>TABLE:OPERATION</ddl_mask>
<arch>
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag>
</arch>
<send>
<ip>192.168.118.122</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<filter>
<enable>
<item>DMHS.TEST</item>
<item>DMHS.*</item>
<item>DMHS.*</item>
<item>DMHS.DEPT</item>
<item>DMHS.EMP</item>
</enable>
<disable>
<item>DMHS.DMHS_DDL_SQL</item>
<item>DMHS.DMHS_DDL_SQL</item>
</disable>
</filter>
<map>
<item>DMHS.TEST==DMHS.TEST</item>
<item>DMHS.*==DMHS.*</item>
<item>DMHS.*==DMHS.*</item>
<item>DMHS.DEPT==DMHS.DEPT1</item>
<item>DMHS.EMP==DMHS.EMP</item>
</map>
</send>
</cpt>
</dmhs>
目標端數據庫dm8 配置。
1 數據庫和dmhs安裝略
2 數據庫配置dm.ini文件
ARCH_INI=1 開啟歸檔
RLOG_APPEND_LOGIC=1 開啟邏輯附加日志
rlog_append_systab_logic=1 (如果要執行DDL腳本,則此參數設置為0)
3 數據庫配置dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch #歸檔目錄
ARCH_FILE_SIZE = 128 #歸檔文件大小,單位 MB
ARCH_SPACE_LIMIT = 0 #空間大小限制,0 表示不限制
4 Dmhs捕獲端配置 ,dmhs安裝目錄bin下創建 dmhs.hs
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<version>2.0</version>
<mgr_port>5345</mgr_port>
<chk_interval>3</chk_interval>
<ckpt_interval>60</ckpt_interval>
<siteid>9</siteid>
</base>
<exec>
<recv>
<data_port>5346</data_port>
</recv>
<db_type>DM8</db_type>
<db_server>127.0.0.1</db_server>
<db_port>5236</db_port>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<recv_caches>8</recv_caches>
<trxid_tables>1</trxid_tables>
<case_sensitive>0</case_sensitive>
<enable_rowid>0</enable_rowid>
<toggle_case>0</toggle_case>
<exec_policy>1</exec_policy>
<commit_policy>1</commit_policy>
<enable_merge>1</enable_merge>
<affect_row>1</affect_row>
<ddl_mode>0</ddl_mode>
<is_kafka>0</is_kafka>
<enable_ckpt_range>0</enable_ckpt_range>
<update_duplicate>0</update_duplicate>
</exec>
</dmhs>
啟動 DMHS 進行數據同步流程路
1 執行端運行 DMHS 軟件工具 dmhs_server
[dmdba@localhost bin]$ ./dmhs_serverd start
2 執行端運行 DMHS 軟件工具 dmhs_console,連接執行端 DMHS 服務,啟動日志執行模塊,控制台管理工具中執行如下 DMHS 命令:
[dmdba@localhost bin]$ ./dmhs_console
DMHS> connect 127.0.0.1:5345
DMHS> start exec
3 源端運行 DMHS 軟件工具dmhs_server
[oracle@localhost bin]$ ./dmhs_serverd start
4 源端執行端運行 DMHS 軟件工具dmhs_console,連接源端 DMHS 服務,設置日志捕獲模塊起始 LSN,裝載源端字典信息及歷史數據。執行 start cpt
[oracle@localhost bin]$ ./dmhs_console
DMHS> connect 127.0.0.1:5345
DMHS> clear exec lsn
DMHS> LOAD 0 "SCH.NAME='DMHS'"CREATE|INSERT|DICT
DMHS> start cpt
在dmhs安裝目錄bin下面的log可以看到具體信息
登錄數據庫測試