在.bash_profile配置文件末尾增加OCI驱动路径。
export LD_LIBRARY_PATH=<OCI驱动路径>:$LD_LIBRARY_PATH(根据自己的ORACLEE路径更改)
YES
SQL>
SQL> alter system set recyclebin=off deferred;
System altered.
SQL>
[dmdba@node178 service_template]$ cp TemplateService /data/yuyu/drs/bin/DrsService
[dmdba@node178 service_template]$ cd …
[dmdba@node178 bin]$ vi DrsService
INSTALL_HOME=/data/yuyu/drs
#REPLACE program dir
PROG_DIR=/data/yuyu/drs/bin
#REPLACE program config path
CONF_PATH=/data/yuyu/drs/bin/exec.xml
#REPLACE need library path, LD_LIBRARY_PATH/LIBPATH
NEED_LIB_PATH=_REPLACE_SELF_NEED_LIB_PATH
#REPLACE program name, drsvr/dssvr/dvsvr
EXEC_PROG_NAME=drsvr
#REPLACE service type, drs server/dss server/dvs server
SERVICE_TYPE_NAME=“drs server”
[dmdba@localhost bin2]$ cat exec.xml
<?xml version=“1.0” encoding=“GB18030”?>
<drs>
<base>
<mgr_port>5345</mgr_port>
<siteid>2</siteid>
</base>
<exec>
<name>exec_dm8</name>
<login>
<dbtype>dm8</dbtype>
<server>10.15.1.16</server>
<user>DMDRS</user>
<pwd>DMDRS123456</pwd>
<port>8009</port>
</login>
<group>
<item>
<id>35</id>
<exec_policy>0</exec_policy>
<desc>
<table>.</table>
</desc>
</item>
</group>
</exec>
</drs>
[oracle@node178 bin]$ cp TemplateService /home/dmdba/yuyu/drs/bin/DrsService
[oracle@node178 bin]$ vi DrsService
#REPLACE INSTALL_HOME path
INSTALL_HOME=/home/dmdba/yuyu/drs
#REPLACE program dir
PROG_DIR=/home/dmdba/yuyu/drs/bin
#REPLACE program config path
CONF_PATH=/home/dmdba/yuyu/drs/bin/cpt.xml
#REPLACE need library path, LD_LIBRARY_PATH/LIBPATH
NEED_LIB_PATH=_REPLACE_SELF_NEED_LIB_PATH
#REPLACE program name, drsvr/dssvr/dvsvr
EXEC_PROG_NAME=drsvr
#REPLACE service type, drs server/dss server/dvs server
SERVICE_TYPE_NAME=“drs server”
源DMDRS服务的配置文件目录,打开并修改cpt.xml配置文件,修改后配置文件如下所示。
[oracle@node178 bin]$ cat cpt.xml
<?xml version=“1.0” encoding=“GB18030”?>
<drs>
<base>
<mgr_port>5345</mgr_port>
<siteid>1</siteid>
</base>
<cpt>
<name>cpt_oracle</name>
<ddl_mask>OBJ:OP</ddl_mask>
<login>
<dbtype>Oracle</dbtype>
<server>orcl</server>
<user>DMDRS</user>
<pwd>DMDRS123456</pwd>
</login>
<send>
<ip>10.15.1.178</ip>
<port>5345</port>
<target_name>exec_oracle</target_name>
<map>
<item>TEST1*.==TEST1.</item>
</map>
</send>
</cpt>
</drs>
GRANT CONNECT TO DMDRS;
– ## 装载权限
– 需要非同步用户下待装载表/序列上的查询权限
GRANT SELECT ON <待装载表/序列的模式名>.<待装载表/序列的表名>TO DMDRS;
– 需要系统表、系统字典和动态视图的查询权限
GRANT SELECT ON SYS.OBJ$ TO DMDRS;
GRANT SELECT ON SYS.TAB$ TO DMDRS;
GRANT SELECT ON SYS.USER$ TO DMDRS;
GRANT SELECT ON SYS.NTAB$ TO DMDRS;
GRANT SELECT ON SYS.SEG$ TO DMDRS;
GRANT SELECT ON SYS.EXTERNAL_TAB$ TO DMDRS;
GRANT SELECT ON DBA_CONS_COLUMNS TO DMDRS;
GRANT SELECT ON DBA_CONSTRAINTS TO DMDRS;
GRANT SELECT ON SYS.COLTYPE$ TO DMDRS;
GRANT SELECT ON SYS.TYPE$ TO DMDRS;
GRANT SELECT ON SYS.ATTRIBUTE$ TO DMDRS;
GRANT SELECT ON SYS.COLLECTION$ TO DMDRS;
GRANT SELECT ON SYS.PARTOBJ$ TO DMDRS;
GRANT SELECT ON SYS.COM$ TO DMDRS;
GRANT SELECT ON V_DATABASETODMDRS;GRANTSELECTONSYS.CON TO DMDRS;
GRANT SELECT ON SYS.IND$ TO DMDRS;
GRANT SELECT ON SYS.COL$ TO DMDRS;
GRANT SELECT ON SYS.CCOL$ TO DMDRS;
GRANT SELECT ON SYS.TS$ TO DMDRS;
GRANT SELECT ON SYS.DEFERRED_STG$ TO DMDRS;
GRANT SELECT ON SYS.SUBPARTCOL$ TO DMDRS;
GRANT SELECT ON SYS.SEQ$ TO DMDRS;
GRANT SELECT ON DBA_INDEXES TO DMDRS;
GRANT SELECT ON DBA_IND_COLUMNS TO DMDRS;
GRANT SELECT ON SYS.PARTCOL$ TO DMDRS;
GRANT SELECT ON SYS.DEFSUBPART$ TO DMDRS;
GRANT SELECT ON SYS.SOURCE$ TO DMDRS;
GRANT SELECT ON SYS.TYPED_VIEW$ TO DMDRS;
GRANT SELECT ON SYS.VIEW$ TO DMDRS;
GRANT SELECT ON SYS.SYN$ TO DMDRS;
GRANT SELECT ON “SYS”."ALL_SYNONYMS_TREE" TO DMDRS;
GRANT SELECT ON DBA_EXTENTS TO DMDRS;
GRANT SELECT ON SYS.SNAP$ TO DMDRS;
GRANT SELECT ON VPARAMETERTODMDRS;GRANTSELECTONSYS.TRIGGER TO DMDRS;
GRANT SELECT ON SYS.V_THREAD TO DMDRS;
GRANT SELECT ON V_DATABASE_INCARNATION TO DMDRS;
GRANT SELECT ON V_TRANSACTION to DMDRS;
GRANT SELECT ON V_LOCKED_OBJECT to DMDRS;
GRANT SELECT ON DBA_PART_INDEXES to DMDRS;
– Oracle 12c及以上版本且带有容器的数据库需要容器视图的查询权限
GRANT SELECT ON V_CONTAINERS TO DMDRS;
-- 需要锁表权限
GRANT LOCK ANY TABLE TO DMDRS;
-- 装载使用FLASHBACK掩码,需要闪回权限
GRANT FLASHBACK ANY TABLE to DMDRS;
-- ## 同步权限
-- 需要获取系统SCN权限
GRANT EXECUTE ON DBMS_FLASHBACK TO DMDRS;
-- 需要系统表、系统字典和动态视图的查询权限
GRANT SELECT ON SYS.COL TO DMDRS;
GRANT SELECT ON SYS.LOB$ TO DMDRS;
GRANT SELECT ON SYS.TABPART$ TO DMDRS;
GRANT SELECT ON SYS.TABCOMPART$ TO DMDRS;
GRANT SELECT ON SYS.LOBFRAG$ TO DMDRS;
GRANT SELECT ON V_LOGFILE TO DMDRS;
GRANT SELECT ON V_LOG TO DMDRS;
GRANT SELECT ON V_ARCHIVEDLOGTODMDRS;GRANTSELECTONSYS.CDEF TO DMDRS;
GRANT SELECT ON SYS.TABSUBPART$ TO DMDRS;
GRANT SELECT ON SYS.CCOL$ TO DMDRS;
GRANT SELECT ON SYS.TS$ TO DMDRS;
GRANT SELECT ON SYS.TYPE$ TO DMDRS;
GRANT SELECT ON SYS.ATTRIBUTE$ TO DMDRS;
GRANT SELECT ON SYS.COLLECTION$ TO DMDRS;
GRANT SELECT ON V_SESSION TO DMDRS;
GRANT SELECT ON V_SESSTAT TO DMDRS;
GRANT SELECT ON V_STATNAME TO DMDRS;
-- 源DMDRS主备需要数据库实例的查询权限
GRANT SELECT ON V_INSTANCE TO DMDRS;
GRANT SELECT ON GV_INSTANCE TO DMDRS;
-- 若需要同步XMLTYPE类型的数据,需要将XDB模式下XDBTTSET、表名开头为XNM和XQN的表的查询权限赋予用户。若使用可插拔数据库,管理员用户需先切换到可插拔数据库再授权
GRANT SELECT ON XDB.XDBTTSET TO DMDRS;
GRANT SELECT ON XDB.<以XNM开头的表名> TO DMDRS;
GRANT SELECT ON XDB.<以X$QN开头的表名> TO DMDRS;
SQL> create USER DMDRS identified by DMDRS123456;
User created.
SQL> @/home/dmdba/yuyu/oradrs/bin/scripts/ddl_sql_ora.sql
Table created.
Trigger created.
System altered.
[dmdba@localhost bin2]$ ./drsvr exec.xml
MGR[INFO]: DRS start up, current version: V5.0.4-Build(2024.02.05-151491_trunc)_D64 (The beta)(Enterprise Edition)
MGR[WARN]: License 即将过期 expire on 2024-05-05
MGR[INFO]: DEBUG版本
MGR[INFO]: 模块被加载 module: exec_oracle
MGR[INFO]: 正在初始化缓存模块 path: ./exec_oracle/CACHE_exec_oracle, cache size: 512 MB
MGR[INFO]: SITEID: 2 NAME: localhost.localdomain MEMCHECK: 0 PORT: 5345 GROUP: 0 VERSION: 1 PATH: exec.xml
MGR[INFO]: 模块正在启动 module: exec_oracle
MGR[INFO]: 模块已经处于运行状态 module: exec_oracle
[oracle@node178 bin]$ ./drsvr cpt.xml
MGR[INFO]: DRS start up, current version: V5.0.4-Build(2024.02.05-151491_trunc)_64 (The beta)(Enterprise Edition)
MGR[WARN]: License 即将过期 expire on 2024-05-05
MGR[INFO]: 模块被加载 module: cpt_oracle
MGR[INFO]: 正在初始化缓存模块 path: ./cpt_oracle/CACHE_cpt_oracle, buffers size: 256(MB)
MGR[INFO]: SITEID: 1 NAME: node178 MEMCHECK: 0 PORT: 5345 GROUP: 0 VERSION: 1 PATH: cpt.xml
CMD>cpt_oracle[INFO]: CPT: dbtype: ORACLE11g, server: orcl, user: DMDRS, port: 51521
MGR[INFO]: 获取到装载掩码组合 mask: |CREATE|NOLOCK
MGR[INFO]: CPT模块装载命令执行成功 cpt name: cpt_oracle
注释:注意配置文件中得名字 <name>cpt_oracle</name>
注意源端与目标端要匹配。
[oracle@node178 bin]$ ./drcsl cpt.xml
CSL[INFO]: CONSOLE TOOL DRS5: V5.0.4-Build(2024.02.05-151491_trunc)_64
CSL[WARN]: License 即将过期 expire on 2024-05-05
CSL> connect
CSL[INFO]: [INPUT CMD: connect]
CSL> cp cpt_oracle “sch.name=‘TEST1’” CREATE|OBJ
CSL[INFO]: [INPUT CMD: cp cpt_oracle “sch.name=‘TEST1’” CREATE|OBJ]
MGR[INFO]: 获取到装载掩码组合 mask: |CREATE|NOLOCK
MGR[INFO]: CPT模块装载命令执行成功 cpt name: cpt_oracle
命令执行成功
CSL> cp cpt_oracle “sch.name=‘TEST1’” CREATE|OBJ
CSL[INFO]: [INPUT CMD: cp cpt_oracle “sch.name=‘TEST1’” CREATE|OBJ]
MGR[INFO]: 获取到装载掩码组合 mask: |CREATE|NOLOCK
MGR[INFO]: CPT模块装载命令执行成功 cpt name: cpt_oracle
命令执行成功
CSL> start
CSL[INFO]: [INPUT CMD: start]
MGR[INFO]: 模块正在启动 module: cpt_oracle
MGR[INFO]: 得到起始SCN start scn: 20210184
MGR[INFO]: 模块已经处于运行状态 module: cpt_oracle
命令执行成功
CSL> alter cpt_oracle add table “sch.name=‘TEST1’”
CSL[INFO]: [INPUT CMD: alter cpt_oracle add table “sch.name=‘TEST1’”]
MGR[INFO]: 获取到装载掩码组合 mask: |CREATE|INSERT|INDEX|TABLE|CHECK|GROUP
命令执行成功
CSL>
CSL> start
CSL[INFO]: [INPUT CMD: start]
MGR[INFO]: 模块正在启动 module: cpt_oracle
MGR[INFO]: 得到起始SCN start scn: 20210184
MGR[INFO]: 模块已经处于运行状态 module: cpt_oracle
命令执行成功
CREATE TABLE test1111 (
id NUMBER PRIMARY KEY,
name VARCHAR2(100),
age NUMBER,
email VARCHAR2(100)
);
INSERT INTO test1111 (id, name, age, email) VALUES (1, ‘Alice’, 30, ‘alice@example.com’);
NSERT INTO test1111 (id, name, age, email) VALUES (2, ‘Bob’, 25, ‘bob@example.com’);
INSERT INTO test1111 (id, name, age, email) VALUES (3, ‘Charlie’, 35, ‘charlie@example.com’);
commit;
SQL> select * from test1111;
目标端日志
达梦端查询
SQL> create view TEST1.v_emp1 as select * from v$version;
View created.
SQL>
目的端查询
TEST1目标端需要得权限:(同步前需要给同步用户创建数据对象权限,如果权限不给足,在装载过程中会报错权限问题)
grant “PUBLIC”,“SOI” to “TEST1”;
grant CREATE VIEW,CREATE PROCEDURE,CREATE SEQUENCE,CREATE TRIGGER,CREATE INDEX,CREATE CONTEXT INDEX,CREATE REPLICATE,CREATE PACKAGE,CREATE SYNONYM,CREATE PUBLIC SYNONYM,CREATE SESSION to “TEST1”;
grant EXECUTE on “TEST1”."DRS_DDL_SQL_PROC" to "TEST1";
grant create MATERIALIZED VIEW TO TEST1;
否则报错如下:
EXE[ERROR]: DRS-9010 直接执行SQL语句失败 sql: -- drs ddl, siteid list[1]
call "TEST1".DRS_DDL_SQL_PROC(?), DB-5518 没有创建函数权限
EXE[ERROR]: DRS-6171 DDL语句执行失败 siteid: 1-1, lsn: 4, trxid: 2, err: DB-5518 没有创建函数权限, sql: – drs ddl, siteid list[1]
call “TEST1”.DRS_$DDL_SQL_PROC(?)
create or replace function fun_hello1 return varchar2 is
begin
return ‘浣犲ソ!’;
end;
文章
阅读量
获赞