评估前准备
用户权限
用户需拥有创建UGO评估项目的对应权限。具体权限,可参见权限管理进行设置。
网络准备
- 源数据库与UGO服务的网络是否打通,目前UGO连接源库仅支持公网连接。
- 源数据库的防火墙需要放通UGO服务的访问,使得UGO可以正常访问本地数据库。
- 源数据库的访问白名单限制是否对UGO服务放行,各类型数据库添加白名单的方法不同,具体方法请参考各数据库官方文档进行操作。
- 源数据库设置的最大连接数限制,各类型数据库最大连接数控制的参数和修改方法不同,具体方法请参考各数据库官方文档进行操作。
- 检查数据库连接信息是否正确,包括提供的IP地址、数据库服务名称、用户名、密码等信息。
源数据库权限
- Oracle为源,源数据库DBA权限授权方式。
- 创建用户,USER为数据库用户名。
CREATE USER user IDENTIFIED BY password;
- 授予用户登录权限。
GRANT CONNECT TO user;
- 授予用户DBA权限。
GRANT DBA TO user;
- 创建用户,USER为数据库用户名。
- Oracle为源,源数据非DBA权限授权方式。
- 创建用户,USER为数据库用户名。
CREATE USER user IDENTIFIED BY password;
- 授予用户登录权限。
GRANT CONNECT TO user;
- 授予用户SELECT_CATALOG_ROLE角色权限,允许用户从数据字典中获取对象的DDL语句,若没有此权限,权限检查将失败无法执行下一步。
GRANT SELECT_CATALOG_ROLE TO user; GRANT SELECT ANY DICTIONARY TO user;
Oracle为源库时,需要具有待迁移数据库的DBMS_METADATA、动态视图和Schema对象数量检查的权限。且为了使DBMS_METADATA.GET_DDL方法返回的对象DDL保持统一,UGO需要对采集的SQL进行格式化,因此需要非只读权限账号。UGO连接时会进行导出参数设置,该设置仅对采集的DDL有效,作用范围是会话级别,不会对源库产生变更及影响。UGO会进行三个参数设置,详细介绍如下:- 让表约束、索引将成为CREATE TABLE语句的一部分,不单独生成ALTER TABLE语句。
DBMS_METADATA.SET_TRANSFORM_PARAM(dbms_metadata.SESSION_TRANSFORM, 'CONSTRAINTS_AS_ALTER', false)
- 导出的DDL中不包含排序规则子句。
DBMS_METADATA.SET_TRANSFORM_PARAM(dbms_metadata.SESSION_TRANSFORM, 'COLLATION_CLAUSE', 'NEVER')
- 采集后的SQL语句添加分号;
DBMS_METADATA.SET_TRANSFORM_PARAM(dbms_metadata.SESSION_TRANSFORM, 'SQLTERMINATOR', true)
- 创建用户,USER为数据库用户名。
- MySQL为源数据库时,需要具有MySQL系统库的查询权限、PROCESS权限和待迁移数据库的所有权限。从MySQL-8.0版本开始,针对存储过程和存储函数,还需要SHOW_ROUTINE权限。源数据库授权方式如下:
- 创建用户,db-user为数据库用户名。
CREATE USER db-user IDENTIFIED BY passwd;
- 授予用户权限,UGO默认使用mysql数据库进行测试连接,并需要访问mysql数据库进行权限检查。
GRANT SELECT ON mysql.* TO db-user;
- process权限用于指定用户可以查看information_schema所有的表。
GRANT PROCESS ON *.* TO db-user;
- 采集对象需要授予如下权限。
GRANT SELECT ON schema-name.* TO db-user; GRANT SHOW VIEW ON schema-name.* TO db-user; GRANT TRIGGER ON schema-name.* TO db-user;
若需采集所有Schema,可将以上<schema-name>.*替换为*.*,直接授予全局对象采集权限。
- 从MySQL8.0.20版本开始,针对存储过程和存储函数,还需要授予如下权限:
GRANT SHOW_ROUTINE ON *.* TO db-user;
- 创建用户,db-user为数据库用户名。
- GoldenDB为源数据库时,需要具有GoldenDB系统库的查询权限、PROCESS权限和待迁移数据库的所有权限。针对存储过程和存储函数,还需要SHOW_ROUTINE权限。源数据库授权方式如下:
- 创建用户,db-user为数据库用户名。
CREATE USER db-user IDENTIFIED BY passwd;
- 授予用户权限,GoldenDB系统表mysql.user的权限,该权限用于采集USER、ROLE对象的信息。
GRANT SELECT ON mysql.user TO db-user;
- process权限用于指定用户可以查看information_schema所有的表。
GRANT PROCESS ON *.* TO db-user;
- 采集对象需要授予如下权限。
GRANT SELECT ON schema-name.* TO db-user; GRANT SHOW VIEW ON schema-name.* TO db-user; GRANT TRIGGER ON schema-name.* TO db-user;
若需采集所有Schema,可将以上<schema-name>.*替换为*.*,直接授予全局对象采集权限。
- 从MySQL8.0.20版本开始,针对存储过程和存储函数,还需要授予如下权限:
GRANT SHOW_ROUTINE ON *.* TO db-user
以MySQL和GoldenDB为源,如果给用户赋予了全局的SELECT权限,SHOW_ROUTINE权限也能通过,无需再单独授予。
- 创建用户,db-user为数据库用户名。
- Microsoft SQL Server为源数据库时,需要具有VIEW DEFINITION权限。源数据库授权方式如下:
- 创建登录用户login-user。
CREATE LOGIN login-user WITH PASSWORD=password,DEFAULT_DATABASE =database;
- 创建数据库用户db-user。
CREATE USER db-user FOR LOGIN login-user;
- 授予用户查询元数据的权限,该权限可以赋予用户查看所有表结构和元数据的能力。
GRANT VIEW DEFINITION ON DATABASE :: database TO db-user;
- 授予用户查询依赖的权限。
GRANT SELECT ON OBJECT :: sys.sql_expression_dependencies TO db-user;
- 创建登录用户login-user。