1.DMHS VERI对比工具配置
1.1环境介绍
源端:Oracle 192.168.0.13 1521
目的端:DM8 192.168.0.11 5236
1.2源端配置odbc
Vi /etc/odbcinst.ini
[Oracle ODBC DRIVER]
Description = ODBC DRIVER FOR Oracle
Driver = /u01/app/oracle/product/19c/db_1/lib/libsqora.so.19.1
Threadind = 0
[DM ODBC DRIVER]
Description = ODBC DRIVER FOR DM
Driver = /home/dmhs/db/bin/libdodbc.so
Threadind = 0
Vi /etc/odbc.ini
[wzp]
Driver = Oracle ODBC DRIVER
Description = ORACLE ODBC DSND
USERID = dmhs
PASSWORD = oracle
Servername = wzp
TCP_PORT = 1521
~
[dm8]
Driver = DM ODBC DRIVER
Description = DM ODBC DSND
SERVER=192.168.0.11
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
1.3源端配置agent.xml
Agent.xml在dmhs主目录bin下
Vi agent.xml
<
<max_session>50</max_session>
<max_buf_size>1024</max_buf_size>
<thr_num>5</thr_num>
<group_num>5</group_num>
<worker_thr>5</worker_thr>
<char_code>PG_GB18030</char_code>
1.4目的端配置agent.xml
Agent.xml在dmhs主目录bin下
Vi agent.xml
<
<max_session>50</max_session>
<max_buf_size>1024</max_buf_size>
<thr_num>5</thr_num>
<group_num>5</group_num>
<worker_thr>5</worker_thr>
<char_code>PG_GB18030</char_code>
1.5两端启动agent
Oracle端:./dmhs_veri_agent_ora
达梦端:./dmhs_veri_agent_dm8
1.6配置veri.xml
在任意一台服务器配置对比服务文件veri.xml,本次在源端配置,veri.xml文件在dmhs主目录bin下
Vi veri.xml (注意加粗部分)
<db_type>ORACLE19c</db_type>
<odbc_str>
<driver>Oracle ODBC DRIVER</driver>
<db_server>wzp</db_server>
<db_user>dmhs</db_user>
<db_pwd>oracle</db_pwd>
</odbc_str>
colnum:=0;
dbms_output.put_line(' <col_list>');
open curs for SQL_SELECT;
loop
fetch curs into columnname;
colnum := colnum + 1;
exit when curs%notfound;
dbms_output.put_line(' <col>'||columnname||'=='||columnname||'</col>');
end loop;
close curs;
if colnum = 0 then
dbms_output.put_line('no columns found');
end if;
dbms_output.put_line(' </col_list>');
dbms_output.put_line(' </table_info>');
end loop;
close emp_cur;
dbms_output.put_line(' </table_list>');
dbms_output.put_line('</job>');
end;
-------------------DM
set serveroutput on;
declare
cursor emp_cur is select sch.name, tab.name, tab.ID from sys.sysobjects tab, sys.sysobjects sch where sch.name in ('SC') and sch.type$='SCH' and sch.id=tab.schid and tab.SUBTYPE$='UTAB';
sql_select varchar(400);
schname varchar(300);
tabname varchar(300);
objid int;
columnname varchar(300);
cur_select cursor ;
colnum int;
begin
print('');
print('
print('
print(' <table_list>');
open emp_cur;
loop
FETCH emp_cur into schname, tabname, objid;
exit when emp_cur%NOTFOUND;
print(' <table_info>');
print(' <table_name>'||schname||'.'||tabname||'=='||schname||'.'||tabname||'</table_name>');
SQL_SELECT := 'SELECT name FROM SYS.SYSCOLUMNS where ID='||objid||' and TYPE$ NOT IN(''CLOB'',''BLOB'',''TEXT'')';
colnum:=0;
dbms_output.put_line(' <col_list>');
open cur_select for SQL_SELECT;
loop
fetch cur_select into columnname;
colnum := colnum + 1;
exit when cur_select%notfound;
print(' <col>'||columnname||'=='||columnname||'</col>');
end loop;
close cur_select;
if colnum = 0 then
print('no columns found');
end if;
print(' </col_list>');
print(' </table_info>');
end loop;
close emp_cur;
print(' </table_list>');
print('</job>');
end;
1.8比对
./dmhs_veri "TABLE=(SC.==SC.)" mode=normal
用job比对
./dmhs_veri jobfile=job.xml
全模式静态对比
./dmhs_veri jobfile=job.xml mode=normal
全模式FAST对比:
./dmhs_veri “table=(SC.==SC.)” mode=fast
单表对比
./dmhs_veri “table=(SC.test==SC.test)” mode=normal
1.9veri比对工具代价估算
Linux文件句柄数:
文件句柄个数≈(表行数/一百万)*2
磁盘空间
占用磁盘空间大小:
占用的磁盘空间大小≈(表行数/一百万)322M
注意:在dmhs_veri所在服务器,最好保证足够的磁盘空间,Linux系统注意使用ulimit -n xxx
内存估算公式
占用内存大小≈MAX_THR64 sort_thr_n + 0.5*N_TABS (MB)
其中,MAX_THR 为 veri.xml 中配置参数,N_TABS 为对比的表个数。如果总内存不足, 就需要减小 MAX_THR 值。
1.10快速比对两边表结构
create table test as select owner,table_name,column_name,'DM' SRC from dba_tab_columns where owner in ('SC','CD','DP');
insert into test select owner,table_name,column_name,'ORACLE' SRC from dba_tab_columns@PMSDB where owner in ('SC','CD','DP');
COMMIT;
SELECT OWNER,SRC,COUNT(*) FROM TEST GROUP BY OWNER,SRC;
文章
阅读量
获赞