#数据源管理

数据源管理功能用于管理YMP服务所涉及的全部数据库,包括:源端数据库、目标端数据库、评估数据库(若选择评估内置库则无需添加,若指定为外置库则需要添加到数据源供评估使用)。

# 添加数据源

点击右上角【+ 添加数据源】,填写基础信息之后点击【测试连接】,只有测试连接成功才可以成功添加数据源。

若测试连接失败会提示对应的失败消息,例如用户名或密码错误等。

在添加数据源时会同步获取数据源的版本和连接信息。

添加数据源

添加数据源字段说明:

  • 数据源名称:系统内唯一数据源名称。
  • 数据源类型:支持选择Oracle、MySQL、YashanDB、DM。
  • 主机IP:数据库所在IP地址。
  • 端口:数据库监听端口。
  • 数据库:可选项,Oracle必填、MySQL、DM、YashanDB选填。
  • 用户名:数据库连接用户(连接用户需要有迁移平台所需权限,详见:数据源权限配置)。
  • 密码:数据库连接用户密码。
  • 是否为普通用户:仅Oracle和DM数据源支持,默认为非普通用户,详见:普通用户权限配置

# 普通用户权限配置

普通用户适用于仅迁移该用户下的对象和数据的场景,普通用户仅需最小权限。但存在以下限制:

  • 迁移对象不能依赖于其他schema下的对象,如:迁移某个视图对象,该视图将查询其他schema下的表。
  • 不支持表空间初始化,详见:表空间初始化配置
  • 校验初始化中的高级配置,对其性能配置的检查失效,无法判断源端可用的连接数是否满足用户配置的连接数,详见:校验初始化

普通用户所需的权限为:

数据源 迁移平台所需角色/权限
Oracle GRANT CONNECT TO username;
GRANT RESOURCE TO username;
DM 新用户无需单独赋权

# 数据源权限配置

# 源端

源端的数据库连接用户,需要根据任务所要完成的步骤赋权,详情见:

# 单评估
数据源 迁移平台所需角色/权限
Oracle GRANT CREATE SESSION TO username;
GRANT SELECT_CATALOG_ROLE TO username;
MySQL GRANT SHOW DATABASES ON *.* TO 'yourUser'@'IP';
GRANT SELECT ON *.* TO 'yourUser'@'IP';
GRANT PROCESS ON *.* TO 'yourUser'@'IP';
GRANT SHOW VIEW ON *.* TO 'yourUser'@'IP';
GRANT TRIGGER ON *.* TO 'yourUser'@'IP';
GRANT EVENT ON *.* TO 'yourUser'@'IP';
MySQL8.0.*额外需赋权:
GRANT SHOW_ROUTINE ON *.* TO 'yourUser'@'IP';
DM8 GRANT SELECT ON DBA_OBJECTS TO username;
GRANT SELECT ON DBA_INDEXES TO username;
GRANT SELECT ON DBA_VIEWS TO username;
GRANT SELECT ON DBA_CONSTRAINTS TO username;
GRANT SELECT ON DBA_TAB_COLS TO username;
GRANT SELECT ON DBA_TAB_COMMENTS TO username;
GRANT SELECT ON DBA_COL_COMMENTS TO username;
GRANT SELECT ON DBA_IND_COLUMNS TO username;
GRANT SELECT ON DBA_SEGMENTS TO username;
GRANT SELECT ON DBA_TRIGGERS TO username;
GRANT SELECT ON DBA_TABLES TO username;
GRANT SELECT ON DBA_TAB_PARTITIONS TO username;
GRANT SELECT ON V$PARAMETER TO username;
YashanDB GRANT DBA TO username;

# 单迁移
数据源 迁移平台所需角色/权限
Oracle GRANT CREATE SESSION TO username;
GRANT SELECT ON DBA_OBJECTS TO username;
GRANT SELECT ON DBA_SEGMENTS TO username;
GRANT SELECT ON DBA_LOBS TO username;
GRANT SELECT ANY TABLE TO username;(建议权限,不强制要求,可被迁移表的SELECT ON权限替换)
GRANT SELECT ANY SEQUENCE TO username;(建议权限,不强制要求,可被迁移序列的SELECT ON权限替换)
GRANT SELECT ON DBA_TAB_COLS TO username; (建议权限,不强制要求,预检查不检查表风险类型可不要)
GRANT SELECT ON DBA_SCHEDULER_JOBS TO username; (建议权限,不强制要求,预检查不检查活跃定时任务可不要)
GRANT SELECT ON DBA_MVIEWS TO username; (建议权限,不强制要求,预检查不检查物化视图可不要)
MySQL GRANT SHOW DATABASES ON *.* TO 'yourUser'@'IP';
GRANT SELECT ON *.* TO 'yourUser'@'IP';
GRANT PROCESS ON *.* TO 'yourUser'@'IP';
GRANT EVENT ON *.* TO 'yourUser'@'IP';
DM8 GRANT SELECT ON DBA_OBJECTS TO username;
GRANT SELECT ON DBA_SEGMENTS TO username;
GRANT SELECT ON DBA_DATA_FILES TO username;
GRANT SELECT ON DBA_TAB_COLS TO username; (建议权限,不强制要求,预检查不检查表风险类型可不要)
GRANT SELECT ANY TABLE TO username;(建议权限,不强制要求,可被迁移表的SELECT ON权限替换)
GRANT SELECT ANY SEQUENCE TO username;(建议权限,不强制要求,可被迁移序列的SELECT ON权限替换)
YashanDB GRANT DBA TO username;

# 单校验
数据源 迁移平台所需角色/权限
Oracle GRANT CREATE SESSION TO username;
GRANT SELECT ON DBA_OBJECTS TO username;
GRANT SELECT ON V_$PARAMETER TO username;
GRANT SELECT ON V_$SESSION TO username;
GRANT SELECT ON DBA_SEGMENTS TO username;
GRANT SELECT ON DBA_TABLES TO username;
GRANT SELECT ON DBA_TAB_COLUMNS TO username;
GRANT SELECT ON DBA_CONS_COLUMNS TO username;
GRANT SELECT ON DBA_CONSTRAINTS TO username;
GRANT SELECT ANY TABLE TO username;
MySQL GRANT SHOW DATABASES ON *.* TO 'yourUser'@'IP';
GRANT SELECT ON *.* TO 'yourUser'@'IP';
GRANT PROCESS ON *.* TO 'yourUser'@'IP';(建议权限,不强制要求,若需使用MySQL全量校验终止功能则为必要权限)
DM8 GRANT SELECT ON DBA_OBJECTS TO username;
GRANT SELECT ON V$SESSIONS TO username;
GRANT SELECT ON DBA_SEGMENTS TO username;
GRANT SELECT ON DBA_TABLES TO username;
GRANT SELECT ON DBA_TAB_COLUMNS TO username;
GRANT SELECT ON DBA_CONS_COLUMNS TO username;
GRANT SELECT ON DBA_CONSTRAINTS TO username;
GRANT SELECT ANY TABLE TO username;
YashanDB GRANT CREATE SESSION TO username;
GRANT SELECT ON V_$PARAMETER TO username;
GRANT SELECT ON V_$SESSION TO username;
GRANT SELECT ON V_$INSTANCE TO username;
GRANT SELECT ON DBA_USERS TO username;
GRANT SELECT ON DBA_SEGMENTS TO username;
GRANT SELECT ON DBA_TABLES TO username;
GRANT SELECT ON DBA_TAB_COLUMNS TO username;
GRANT SELECT ON DBA_CONS_COLUMNS TO username;
GRANT SELECT ON DBA_CONSTRAINTS TO username;
GRANT SELECT ANY TABLE TO username;
# 评估+迁移
数据源 迁移平台所需角色/权限
Oracle 单评估权限+:
GRANT SELECT ANY TABLE TO username;(建议权限,不强制要求,可被迁移表的SELECT ON权限替换)
GRANT SELECT ANY SEQUENCE TO username;(建议权限,不强制要求,可被迁移序列的SELECT ON权限替换)
MySQL 单评估权限+单迁移权限
DM8 单评估权限+单迁移权限
YashanDB 单评估权限
# 迁移+校验
数据源 迁移平台所需角色/权限
Oracle 单迁移权限+:
GRANT SELECT ON V_$PARAMETER TO username;
GRANT SELECT ON V_$SESSION TO username;
GRANT SELECT ON DBA_TABLES TO username;
GRANT SELECT ON DBA_TAB_COLUMNS TO username;
GRANT SELECT ON DBA_CONS_COLUMNS TO username;
GRANT SELECT ON DBA_CONSTRAINTS TO username;
MySQL 单迁移权限+单校验权限
DM8 单迁移权限+:
GRANT SELECT ON V$SESSIONS TO username;
GRANT SELECT ON DBA_TABLES TO username;
GRANT SELECT ON DBA_TAB_COLUMNS TO username;
GRANT SELECT ON DBA_CONS_COLUMNS TO username;
GRANT SELECT ON DBA_CONSTRAINTS TO username;
YashanDB 单评估权限
# 评估+迁移+校验
数据源 迁移平台所需角色/权限
Oracle 单评估权限+:
GRANT SELECT ANY TABLE TO username;(建议权限,不强制要求,可被迁移表的SELECT ON权限替换)
GRANT SELECT ANY SEQUENCE TO username;(建议权限,不强制要求,可被迁移序列的SELECT ON权限替换)
MySQL 单评估权限+单迁移权限+单校验权限
DM8 单评估权限+单迁移权限+:
GRANT SELECT ON V$SESSIONS TO username;
GRANT SELECT ON DBA_TAB_COLUMNS TO username;
GRANT SELECT ON DBA_CONS_COLUMNS TO username;
YashanDB 单评估权限

Note:

Oracle 11.2.0.1版本 如果提示查询用户信息失败,则需要用sys给数据源用户赋权,执行:exec dbms_metadata_util.load_stylesheets

MySQL授权的yourUser和yourIp为创建用户时指定的用户信息,参考 CREATE USER 'newUser'@'IP' IDENTIFIED BY 'password',此时yourUser=newUser,IP=%或者xx.xx.xx.xx。

# 目标端

数据源 迁移平台所需权限
YashanDB GRANT DBA TO username;
YashanDB(三权分立模式) GRANT DBA TO username WITH ADMIN OPTION;
GRANT CREATE USER TO username WITH ADMIN OPTION;
GRANT CREATE ANY TABLE TO username WITH ADMIN OPTION;
GRANT DROP ANY TABLE TO username WITH ADMIN OPTION;
GRANT ALTER ANY TABLE TO username WITH ADMIN OPTION;
GRANT COMMENT ANY TABLE TO username WITH ADMIN OPTION;
GRANT INSERT ANY TABLE TO username WITH ADMIN OPTION;
GRANT DELETE ANY TABLE TO username WITH ADMIN OPTION;
GRANT UPDATE ANY TABLE TO username WITH ADMIN OPTION;
GRANT SELECT ANY TABLE TO username WITH ADMIN OPTION;
GRANT CREATE ANY SEQUENCE TO username WITH ADMIN OPTION;
GRANT DROP ANY SEQUENCE TO username WITH ADMIN OPTION;
GRANT SELECT ANY SEQUENCE TO username WITH ADMIN OPTION;
GRANT CREATE ANY INDEX TO username WITH ADMIN OPTION;
GRANT ALTER ANY INDEX TO username WITH ADMIN OPTION;
GRANT DROP ANY INDEX TO username WITH ADMIN OPTION;
GRANT CREATE ANY SYNONYM TO username WITH ADMIN OPTION;
GRANT CREATE PUBLIC SYNONYM TO username WITH ADMIN OPTION;
GRANT DROP ANY SYNONYM TO username WITH ADMIN OPTION;
GRANT DROP PUBLIC SYNONYM TO username WITH ADMIN OPTION;
GRANT CREATE ANY VIEW TO username WITH ADMIN OPTION;
GRANT DROP ANY VIEW TO username WITH ADMIN OPTION;
GRANT CREATE ANY MATERIALIZED VIEW TO username WITH ADMIN OPTION;
GRANT DROP ANY MATERIALIZED VIEW TO username WITH ADMIN OPTION;
GRANT CREATE ANY TYPE TO username WITH ADMIN OPTION;
GRANT DROP ANY TYPE TO username WITH ADMIN OPTION;
GRANT CREATE ANY TRIGGER TO username WITH ADMIN OPTION;
GRANT DROP ANY TRIGGER TO username WITH ADMIN OPTION;
GRANT ALTER ANY TRIGGER TO username WITH ADMIN OPTION;
GRANT CREATE ANY PROCEDURE TO username WITH ADMIN OPTION;
GRANT DROP ANY PROCEDURE TO username WITH ADMIN OPTION;

# 修改数据源

点击【修改】,填写修改信息之后点击【测试连接】,只有测试连接成功才可以成功修改数据源信息。

修改数据源时会检查该数据源是否与迁移和评估的任务关联:

  • 若未关联,允许修改IP、端口号、数据库名称、数据库用户名和数据库密码。
  • 若有关联,只允许修改数据库密码。

修改数据源

数据源不可修改

# 删除数据源

点击【删除数据源】时会校验该数据源是否与迁移和评估的任务关联,如果关联则不允许删除。

删除数据源

数据源不可删除