1、DM8源数据库同步用户最小权限脚本示例
-- ## 基础权限
-- 插入、删除、更新数据时,需要数据操作权限
GRANT PUBLIC TO DMDRS;
-- 需要系统表、系统字典和动态视图的查询权限
GRANT SOI,VTI TO DMDRS;
-- 需要创建会话权限
GRANT CREATE SESSION TO DMDRS;
-- ## 装载相关权限
-- 需要非同步用户下待装载表/序列上的查询权限
GRANT SELECT ON <待装载表/序列的模式名>.<待装载表/序列的表名> TO DMDRS;
-- ## 同步相关权限
-- DM8触发器同步时,如果数据库用户不是SYSDBA用户,需要对SYSDBA.DRS_$DDL_LOG具有查询权限
GRANT SELECT ON SYSDBA.DRS_$DDL_LOG TO DMDRS;
-- ## DSC同步相关权限
-- DSC时,需要新增以下权限:
GRANT CREATE TABLE TO DMDRS;
GRANT CREATE PACKAGE TO DMDRS;
说明
- 对于旧版本DM8无SOI、VTI权限的情况,使用同等权限的对象查询权限即可。
GRANT SELECT ON SYS.VRLOG TO DMDRS; GRANT SELECT ON SYS.VDM_INI TO DMDRS;
GRANT SELECT ON SYS.VRLOGFILE TO DMDRS; GRANT SELECT ON SYS.VDM_ARCH_INI TO DMDRS;
GRANT SELECT ON SYS.VVERSION TO DMDRS; GRANT SELECT ON SYS.VARCH_FILE TO DMDRS;
GRANT SELECT ON SYS.VIFUN TO DMDRS; GRANT SELECT ON SYS.VDYNAMIC_TABLES TO DMDRS;
GRANT SELECT ON SYS.VDYNAMIC_TABLE_COLUMNS TO DMDRS; DSC还需包含以下权限: GRANT SELECT ON SYS.VDCR_GROUP TO DMDRS;
GRANT SELECT ON SYS.VDCR_EP TO DMDRS; GRANT SELECT ON SYS.VDM_MAL_INI TO DMDRS;- 对于旧版本DM8无CREATE SESSION权限的情况,删除该权限即可。
2、DM8目标数据库同步用户最小权限脚本示例
-- ## 基础权限
-- 插入、删除、更新数据时,需要数据操作权限
GRANT PUBLIC TO DMDRS;
-- 启动时需要在目标数据库中创建辅助表和辅助存储过程
GRANT RESOURCE TO DMDRS;
-- 需要查询数据库的相关参数信息、系统表字典信息
GRANT SOI,VTI TO DMDRS;
-- 需要创建会话权限
GRANT CREATE SESSION TO DMDRS;
-- ## 装载与同步相关权限
-- 需要非同步用户模式下已存在的待同步表/序列的操作权限
GRANT INSERT ON <目标表的模式名>.<目标表名> TO DMDRS;
GRANT UPDATE ON <目标表的模式名>.<目标表名> TO DMDRS;
GRANT DELETE ON <目标表的模式名>.<目标表名> TO DMDRS;
GRANT SELECT ON <目标序列的模式名>.<目标序列名> TO DMDRS;
-- 需要非同步用户模式下未存在的表/序列的数据的操作权限。也可以在目标同步表创建后,同上行所述单独为每张表赋予操作权限
GRANT INSERT ANY TABLE TO DMDRS;
GRANT UPDATE ANY TABLE TO DMDRS;
GRANT DELETE ANY TABLE TO DMDRS;
GRANT SELECT ANY TABLE TO DMDRS;
GRANT SELECT ANY SEQUENCE TO DMDRS;
-- 需要非同步用户模式下创建表注释的权限
GRANT COMMENT ANY TABLE TO DMDRS;
-- 需要非同步用户模式下对象的DDL权限
GRANT CREATE ANY <对象类型> TO DMDRS;
GRANT ALTER ANY <对象类型> TO DMDRS;
GRANT DROP ANY <对象类型> TO DMDRS;
-- 需要非模式对象(表空间、用户、角色和公共同义词)的DDL权限
GRANT CREATE <对象类型> TO DMDRS;
GRANT ALTER <对象类型> TO DMDRS;-- 角色和公共同义词不需要此权限
GRANT DROP <对象类型> TO DMDRS;
-- 需要赋予同步用户辅助存储过程的执行权限以及非同步用户下模式所属用户的存储过程的创建权限
GRANT EXECUTE ON PROCEDURE "DRS_$DDL_SQL_PROC" TO DMDRS;
GRANT CREATE PROCEDURE TO <非同步用户下模式所属的用户>;
说明
- 对于旧版本DM8无SOI、VTI权限的情况,使用同等权限的对象查询权限即可。
GRANT SELECT ON SYS.VDM_INI TO DMDRS; GRANT SELECT ON VIFUN TO DMDRS;
GRANT SELECT ON SYS.VLOCK TO DMDRS; GRANT SELECT ON SYS.VSESSIONS TO DMDRS;- 对于旧版本DM8无CREATE SESSION权限的情况,删除该权限即可。
3、Oracle目标数据库同步用户最小权限脚本示例
-- ## 基础权限
-- 启动时需要在目标数据库中创建辅助表和辅助存储过程
GRANT RESOURCE TO DMDRS;
-- 在连接数据库时需要创建会话
GRANT CONNECT TO DMDRS;
-- 启动时需要查询数据库的相关参数信息
GRANT SELECT ON V_$INSTANCE TO DMDRS;
GRANT SELECT ON V_$PARAMETER TO DMDRS;
GRANT SELECT ON V_$SESSION TO DMDRS;
GRANT SELECT ON V_$LOCK TO DMDRS;
GRANT SELECT ON DBA_TAB_PARTITIONS TO DMDRS;
-- ## 装载相关权限
-- 需要如下系统表、系统字典及动态视图的查询权限
GRANT SELECT ON SYS.OBJ$ TO DMDRS;
GRANT SELECT ON SYS.USER$ TO DMDRS;
GRANT SELECT ON SYS.COL$ TO DMDRS;
GRANT SELECT ON SYS.COLTYPE$ TO DMDRS;
GRANT SELECT ON SYS.CCOL$ TO DMDRS;
GRANT SELECT ON SYS.CDEF$ TO DMDRS;
GRANT SELECT ON SYS.ATTRCOL$ TO DMDRS;
GRANT SELECT ON DBA_IND_COLUMNS TO DMDRS;
GRANT SELECT ON DBA_INDEXES TO DMDRS;
-- ## 同步相关权限
-- 需要如下系统表、系统字典及动态视图的查询权限
GRANT SELECT ON SYS.IND$ TO DMDRS;
GRANT SELECT ON SYS.SEQ$ TO DMDRS;
GRANT SELECT ON DBA_TAB_SUBPARTITIONS TO DMDRS;
GRANT SELECT ON DBA_CONSTRAINTS TO DMDRS;
-- 目标DMDRS主备需要数据库实例的查询权限
GRANT SELECT ON GV_$INSTANCE TO DMDRS;
-- ## 装载与同步相关权限
-- 需要非同步用户模式下已存在的待同步表/序列的操作权限
GRANT INSERT ON <目标表的模式名>.<目标表名> TO DMDRS;
GRANT UPDATE ON <目标表的模式名>.<目标表名> TO DMDRS;
GRANT DELETE ON <目标表的模式名>.<目标表名> TO DMDRS;
GRANT SELECT ON <目标序列的模式名>.<目标序列名> TO DMDRS;
-- 需要非同步用户模式下未存在的表/序列的数据的操作权限。也可以在目标同步表创建后,同上行所述单独为每张表赋予操作权限
GRANT INSERT ANY TABLE TO DMDRS;
GRANT UPDATE ANY TABLE TO DMDRS;
GRANT DELETE ANY TABLE TO DMDRS;
GRANT SELECT ANY TABLE TO DMDRS;
GRANT SELECT ANY SEQUENCE TO DMDRS;
-- 需要非同步用户模式下对象的DDL权限
GRANT CREATE ANY <对象类型> TO DMDRS;
GRANT ALTER ANY <对象类型> TO DMDRS;
GRANT DROP ANY <对象类型> TO DMDRS;
4、MySQL目标数据库同步用户最小权限脚本示例
-- ## 基础权限
-- 启动时需要在dbname参数指定的目标库下创建辅助表和辅助存储过程
GRANT CREATE ON <目标库名>.* TO 'DMDRS'@'localhost';
GRANT DROP ON <目标库名>.* TO 'DMDRS'@'localhost';
GRANT CREATE ROUTINE ON <目标库名>.* TO 'DMDRS'@'localhost';
GRANT INSERT ON <目标库名>.* TO 'DMDRS'@'localhost';
GRANT UPDATE ON <目标库名>.* TO 'DMDRS'@'localhost';
GRANT DELETE ON <目标库名>.* TO 'DMDRS'@'localhost';
-- 连接数据库时需要创建会话(用户创建时默认授予)
GRANT USAGE TO 'DMDRS'@'localhost';
-- ## 装载与同步相关权限
-- 需要目标数据库中已存在的待同步表的操作和查询权限
GRANT INSERT ON <目标表的模式名>.<目标表名> TO 'DMDRS'@'localhost';
GRANT UPDATE ON <目标表的模式名>.<目标表名> TO 'DMDRS'@'localhost';
GRANT DELETE ON <目标表的模式名>.<目标表名> TO 'DMDRS'@'localhost';
GRANT SELECT ON <目标表的模式名>.<目标表名> TO 'DMDRS'@'localhost';
-- 需要目标数据库中未存在的待同步表的操作和查询权限。也可以在目标同步表创建后,同上行所述单独为每张表赋予操作和查询权限
GRANT INSERT ON <目标表的模式名>.* TO 'DMDRS'@'localhost';
GRANT UPDATE ON <目标表的模式名>.* TO 'DMDRS'@'localhost';
GRANT DELETE ON <目标表的模式名>.* TO 'DMDRS'@'localhost';
GRANT SELECT ON <目标表的模式名>.* TO 'DMDRS'@'localhost';
-- 需要目标数据库中待同步对象的DDL权限
-- 表
GRANT CREATE ON <目标对象的模式名>.* TO 'DMDRS'@'localhost';
GRANT ALTER ON <目标对象的模式名>.* TO 'DMDRS'@'localhost';
GRANT DROP ON <目标对象的模式名>.* TO 'DMDRS'@'localhost';
-- 索引
GRANT INDEX ON <目标对象的模式名>.* TO 'DMDRS'@'localhost';
-- 存储过程、函数
GRANT CREATE ROUTINE ON <目标对象的模式名>.* TO 'DMDRS'@'localhost';
GRANT ALTER ROUTINE ON <目标对象的模式名>.* TO 'DMDRS'@'localhost';
-- 外键
GRANT REFERENCES ON <目标对象的模式名>.* TO 'DMDRS'@'localhost';
5、SQL Server目标数据库同步用户最小权限脚本示例
-- ## 基础权限
-- 启动时需要在目标数据库中创建辅助表和辅助存储过程
EXEC sp_addrolemember 'db_ddladmin', 'DMDRS';
GRANT ALTER ON SCHEMA::<目标模式> TO DMDRS;
-- 连接数据库时需要创建会话权限(用户创建时默认授予)
GRANT CONNECT TO DMDRS;
-- ## 装载与同步相关权限
-- 需要非同步用户模式下已存在的待同步表/序列的操作权限
GRANT INSERT ON <目标表的模式名>.<目标表名> TO DMDRS;
GRANT UPDATE ON <目标表的模式名>.<目标表名> TO DMDRS;
GRANT DELETE ON <目标表的模式名>.<目标表名> TO DMDRS;
GRANT SELECT ON <目标序列的模式名>.<目标序列名> TO DMDRS;
-- 需要非同步用户模式下未存在的表/序列的数据的操作权限。也可以在目标同步表创建后,同上行所述单独为每张表赋予操作权限
GRANT INSERT ON SCHEMA::<目标模式名> TO DMDRS;
GRANT UPDATE ON SCHEMA::<目标模式名> TO DMDRS;
GRANT DELETE ON SCHEMA::<目标模式名> TO DMDRS;
GRANT SELECT ON SCHEMA::<目标模式名> TO DMDRS;
-- 需要非同步用户模式下对象的DDL权限
EXEC sp_addrolemember 'db_ddladmin', 'DMDRS';
GRANT ALTER ON SCHEMA::<目标模式> TO DMDRS;
6、PostgreSQL目标数据库同步用户最小权限脚本示例
-- ## 基础权限
-- 启动时需要在dbname参数指定的目标库下创建辅助表和辅助存储过程
GRANT CREATE ON DATABASE <目标库名> TO "DMDRS";
-- 连接数据库时需要创建会话(用户创建时默认授予)
GRANT CONNECT ON DATABASE <目标库名> TO "DMDRS";
-- ## 装载与同步相关权限
-- 需要public模式下辅助表的操作权限
GRANT USAGE ON SCHEMA public TO "DMDRS"; (优先)
GRANT INSERT ON ALL TABLES IN SCHEMA public TO "DMDRS";
GRANT UPDATE ON ALL TABLES IN SCHEMA public TO "DMDRS";
GRANT DELETE ON ALL TABLES IN SCHEMA public TO "DMDRS";
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "DMDRS";
-- 需要目标数据库中已存在的待同步表上的操作和查询权限
GRANT USAGE ON SCHEMA <目标表的模式名> TO "DMDRS"; (优先)
GRANT INSERT ON <目标表的模式名>.<目标表名> TO "DMDRS";
GRANT UPDATE ON <目标表的模式名>.<目标表名> TO "DMDRS";
GRANT DELETE ON <目标表的模式名>.<目标表名> TO "DMDRS";
GRANT SELECT ON <目标表的模式名>.<目标表名> TO "DMDRS";
-- 需要目标数据库中未存在的待同步表上的操作和查询权限。也可以在目标同步表创建后,同上行所述单独为每张表赋予操作和查询权限
GRANT USAGE ON SCHEMA <目标表的模式名> TO "DMDRS"; (优先)
GRANT INSERT ON ALL TABLES IN SCHEMA <目标表的模式名> TO "DMDRS";
GRANT UPDATE ON ALL TABLES IN SCHEMA <目标表的模式名> TO "DMDRS";
GRANT DELETE ON ALL TABLES IN SCHEMA <目标表的模式名> TO "DMDRS";
GRANT SELECT ON ALL TABLES IN SCHEMA <目标表的模式名> TO "DMDRS";
-- 需要非同步用户模式下未存在的表/序列的数据的操作权限。也可以在目标同步表创建后,同上行所述单独为每张表赋予操作权限
GRANT USAGE ON SCHEMA <目标表的模式名> TO "DMDRS"; (优先)
GRANT INSERT ON ALL TABLES IN SCHEMA <目标表的模式名> TO "DMDRS";
GRANT UPDATE ON ALL TABLES IN SCHEMA <目标表的模式名> TO "DMDRS";
GRANT DELETE ON ALL TABLES IN SCHEMA <目标表的模式名> TO "DMDRS";
GRANT SELECT ON ALL TABLES IN SCHEMA <目标表的模式名> TO "DMDRS";
-- 需要目标数据库中待同步对象的DDL权限
GRANT CREATE ON SCHEMA <目标模式名> TO "DMDRS";