云服务器内容精选

  • 静态shape模型转换 转换静态shape模型需要在模型转换阶段固定模型的输入shape,也就是说每个输入shape是唯一的。静态shape转换主要包括两种场景: 第一种是待转换onnx模型的输入本身已经是静态shape,此时不需要在转换时指定输入shape也能够正常转换为和onnx模型输入shape一致的mindir模型。 第二种是待转换onnx模型的输入是动态shape(导出onnx模型时指定了dynamic_axes参数),此时需要在转换时明确指定输入的shape。 转换时指定输入shape可以在命令行中指定,也可以通过配置文件的形式进行指定。 在命令行中指定输入shape。 命令行可以直接通过--inputShape参数指定输入的shape,格式为“input_name:input_shape”,如果有多个输入,需要使用“;”隔开,例如“input1_name:input1_shape;input2_name:input2_shape”。 converter_lite --modelFile=./text_encoder/model.onnx --fmk=ONNX --saveType=MINDIR --optimize=ascend_oriented --outputFile=./text_encoder --inputShape="input_ids:1,77" 在配置文件中指定输入shape。 配置文件中通过“[ascend_context]”配置项指定input_shape,格式与命令行一致,多个输入,需要使用“;”隔开。然后在命令行中通过--configFile指定对应的配置文件路径即可。 # text_encoder.ini [ascend_context] input_shape=input_ids:[1,77] 转换命令如下: converter_lite --modelFile=./text_encoder/model.onnx --fmk=ONNX --saveType=MINDIR --optimize=ascend_oriented --outputFile=./text_encoder --configFile=./text_encoder.ini 在使用converter_lite工具转换时,默认是将所有算子的精度转换为fp16。如果想要将固定shape的模型精度修改为fp32进行转换,需要在配置文件中指定算子的精度模式为precision_mode,配置文件的写法如下(更多精度模式请参考precision_mode): # text_encoder.ini [ascend_context] input_shape=input_ids:[1,77] precision_mode=enforce_fp32 对于本次AIGC迁移,为了方便对多个模型进行转换,可以通过批量模型转换脚本自动完成所有模型的转换。 执行以下命令,创建并进入static_shape_convert目录。 mkdir -p /home_host/work/static_shape_convert cd /home_host/work/static_shape_convert 在static_shape_convert目录下新建converter_onnx2mindir.sh文件并复制下面内容。其中,onnx_dir表示onnx模型的目录,mindir_dir指定要生成的mindir模型的保存目录。 # converter_onnx2mindir.sh # 设置onnx模型和mindir模型目录。 onnx_dir=/home_host/work/runwayml/onnx_models mindir_dir=./mindir_models # 指定配置文件路径。 config_dir=/home_host/work/modelarts-ascend/examples/AIGC/stable_diffusion/configs echo "================begin converter_lite=====================" sub_cmd='--fmk=ONNX --optimize=ascend_oriented --saveType=MINDIR' mkdir -p $mindir_dir # rm缓存,慎改。 atc_data_dir=/root/atc_data/ # 通用转换方法。 common_converter_model() { model_name=$1 echo "start to convert $model_name" rm -rf $atc_data_dir converter_lite --modelFile="$onnx_dir/$model_name/model.onnx" \ --outputFile="$mindir_dir/$model_name" \ --configFile="$config_dir/$model_name.ini" \ $sub_cmd printf "end converter_lite\n" } common_converter_model "text_encoder" common_converter_model "unet" common_converter_model "vae_encoder" common_converter_model "vae_decoder" common_converter_model "safety_checker" echo "================converter_lite over=====================" 转换结果如下,其中safety_checker模型转换成功,但中间有ERROR日志,该ERROR属于常量折叠失败,不影响结果。 图2 转换结果
  • 动态分档模型转换(可选) 如果迁移的模型有多个shape档位的需求,可以通过如下方式对模型进行分档转换。 动态分档是指将模型输入的某一维或者某几维设置为“动态”可变,但是需要提前设置可变维度的“档位”范围。即转换得到的模型能够在指定的动态轴上使用预设的几种shape(保证模型支持的shape),相比于静态shape更加灵活,且性能不会有劣化。 动态分档模型转换需要使用配置文件,指定输入格式为“ND”,并在config文件中配置ge.dynamicDims和input_shape使用,在input_shape中将输入shape的动态维度设为-1,并在ge.dynamicDims中指定动态维度的档位,更多配置项可以参考官方文档。 如果网络模型只有一个输入:每个档位的dim值与input_shape参数中的-1标识的参数依次对应,input_shape参数中有几个-1,则每档必须设置几个维度。 以text_encoder模型为例,修改配置文件text_encoder.ini如下所示: # text_encoder.ini [acl_build_options] input_format="ND" input_shape="input_ids:1,-1" ge.dynamicDims="77;33" 使用上述配置文件转换得到的模型,支持的输入shape为(1,77)和(1,33)。 然后使用converter lite执行模型转换,转换命令如下: converter_lite --modelFile=./onnx_models/text_encoder/model.onnx --fmk=ONNX --saveType=MINDIR --optimize=ascend_oriented --outputFile=./mindirs --configFile=./configs/text_encoder.ini 如果网络模型有多个输入:档位的dim值与网络模型输入参数中的-1标识的参数依次对应,网络模型输入参数中有几个-1,则每档必须设置几个维度。 以unet模型为例,该网络模型有三个输入,分别为“sample(1,4,64,64)”、“timestep(1)”、“encoder_hidden_states(1,77,768)”,修改unet.ini配置文件如下所示: # unet.ini [acl_build_options] input_format="ND" input_shape="sample:-1,4,64,64;timestep:1;encoder_hidden_states:-1,77,768" ge.dynamicDims="1,1;2,2;3,3" 转换得到的模型支持的输入dims组合档数分别为: 图3 组合档数 第0档:sample(1,4,64,64) + timestep(1) + encoder_hidden_states(1,77,768) 第1档:sample(2,4,64,64) + timestep(1) + encoder_hidden_states(2,77,768) 第2档:sample(3,4,64,64) + timestep(1) + encoder_hidden_states(3,77,768) 然后使用converter lite执行模型转换,转换命令如下: converter_lite --modelFile=./onnx_models/unet/model.onnx --fmk=ONNX --saveType=MINDIR --optimize=ascend_oriented --outputFile=./mindirs --configFile=./configs/unet.ini 最多支持100档配置,每一档通过英文逗号分隔。 如果用户设置的dim数值过大或档位过多,可能会导致模型编译失败,此时建议用户减少档位或调低档位数值。 如果用户设置了动态维度,实际推理时,使用的输入数据的shape需要与设置的档位相匹配。
  • PyTorch模型转换为Onnx模型(可选) 获取onnx模型有以下两种方式。下文介绍如何通过方式一进行操作。如果采用方式二,可以跳过此步骤。 方式一:使用官方提供的模型转换脚本将PyTorch模型转换为onnx模型。 方式二:对于提供了onnx模型的仓库,可以直接下载onnx模型。 通过git下载diffusers对应版本的源码。 git clone https://github.com/huggingface/diffusers.git -b v0.11.1 在diffusers的script/convert_stable_diffusion_checkpoint_to_onnx.py脚本中,可以通过执行以下命令生成onnx模型。其中,model_path指定PyTorch的模型根目录,output_path指定生成的onnx模型目录。 cd /home_host/work python diffusers/scripts/convert_stable_diffusion_checkpoint_to_onnx.py --model_path "./runwayml/pytorch_models" --output_path "./pytorch_to_onnx_models"
  • 获取模型shape 由于在后续模型转换时需要知道待转换模型的shape信息,此处指导如何通过训练好的stable diffusion PyTorch模型获取模型shape,主要有如下两种方式获取: 方式一:通过stable diffusion的PyTorch模型获取模型shape。 方式二:通过查看ModelArts-Ascend代码仓库,根据每个模型的configs文件获取已知的shape大小。 下文主要介绍如何通过方式一获取模型shape。 在pipeline应用准备章节,已经下载到sd的PyTorch模型(/home_host/work/runwayml/pytorch_models)。进入工作目录: cd /home_host/work 新建Python脚本文件“parse_models_shape.py”用于获取shape。其中,model_path是指上面下载的pytorch_models的路径。 # parse_models_shape.py import torch import numpy as np from diffusers import StableDiffusionPipeline model_path = '/home_host/work/runwayml/pytorch_models' pipeline = StableDiffusionPipeline.from_pretrained(model_path, torch_dtype=torch.float32) # TEXT ENCODER num_tokens = pipeline.text_encoder.config.max_position_embeddings text_hidden_size = pipeline.text_encoder.config.hidden_size text_input = pipeline.tokenizer( "A sample prompt", padding="max_length", max_length=pipeline.tokenizer.model_max_length, truncation=True, return_tensors="pt", ) print("# TEXT ENCODER") print(f"input_ids: {np.array(text_input.input_ids.shape).tolist()}") # UNET unet_in_channels = pipeline.unet.config.in_channels unet_sample_size = pipeline.unet.config.sample_size print("# UNET") print(f"sample: [{2}, {unet_in_channels} {unet_sample_size} {unet_sample_size}]") print(f"timestep: [{1}]") # 此处应该是1,否则和后续的推理脚本不一致。 print(f"encoder_hidden_states: [{2}, {num_tokens} {text_hidden_size}]") # VAE ENCODER vae_encoder = pipeline.vae vae_in_channels = vae_encoder.config.in_channels vae_sample_size = vae_encoder.config.sample_size print("# VAE ENCODER") print(f"sample: [{1}, {vae_in_channels}, {vae_sample_size}, {vae_sample_size}]") # VAE DECODER vae_decoder = pipeline.vae vae_latent_channels = vae_decoder.config.latent_channels vae_out_channels = vae_decoder.config.out_channels print("# VAE DECODER") print(f"latent_sample: [{1}, {vae_latent_channels}, {unet_sample_size}, {unet_sample_size}]") # SAFETY CHECKER safety_checker = pipeline.safety_checker clip_num_channels = safety_checker.config.vision_config.num_channels clip_image_size = safety_checker.config.vision_config.image_size print("# SAFETY CHECKER") print(f"clip_input: [{1}, {clip_num_channels}, {clip_image_size}, {clip_image_size}]") print(f"images: [{1}, {vae_sample_size}, {vae_sample_size}, {vae_out_channels}]") 执行以下命令获取shape信息。 python parse_models_shape.py 可以看到获取的shape信息如下图所示。 图1 shape信息
  • 场景描述 数据库和应用迁移 UGO(Database and Application Migration UGO,以下简称为UGO)支持将本地Oracle数据库的结构迁移至华为云云数据库 GaussDB 实例。通过UGO评估任务与迁移任务,帮助用户提前识别迁移适配点,提升迁移效率,最大化降低用户的数据库迁移成本。 本实践案例主要介绍了通过UGO将本地Oracle-11g数据库结构迁移至华为云云数据库 GaussDB 分布式版 V2.0-2.7 企业版的流程。当前仅支持使用公网网络进行连接。 图1 公网网络+SSL安全连接
  • 资源规划 类别 子类 规划 备注 VPC VPC名称 vpc-src-172 自定义,易理解可识别。 所属Region 测试Region 现网实际选择时建议选择和自己业务区最近的Region,减少网络时延。 可用区 可用区3 - 子网网段 172.16.0.0/16 子网选择时建议预留足够的网络资源。 子网名称 subnet-src-172 自定义,易理解可识别。 本地Oracle数据库 名称 orcl 自定义,易理解可识别。 规格 16vCPUs | 32GB - 数据库版本 11.2.0.1 - 数据库用户 ugo 可以自定义用户,但是迁移时最小权限为:CONNECT、SELECT_CATA LOG _ROLE、ANY DICTIONARY GaussDB 实例名 Auto-ugo-gaussdbv5-tar-1 自定义,易理解可识别。 数据库版本 GaussDB 分布式版 V2.0-2.7企业版 - 实例类型 分布式版,1CN,3DN,3副本 本示例中为分布式实例。 存储类型 超高IO - 可用区 可用区3 本示例中选择了单可用区,实际建议选择多可用区,以提高实例的高可用性。 规格 通用型 2 vCPUs | 16GB 本示例中为测试实例,选择较小的测试规格,实际选择规格以业务诉求为准。 目标库名称 ugo 自定义,易理解可识别,但是需要确保兼容模式为Oracle模式。 UGO迁移任务 数据库评估任务名 Oracle-GaussDB 自定义。 对象迁移 Oracle-GaussDB 自定义。 源数据库引擎 Oracle - 目标数据库引擎 GaussDB 分布式版 V2.0-2.7 企业版 - 网络类型 公网 本示例中采用公网网络。 父主题: Oracle结构迁移到GaussDB
  • 权限准备 创建评估项目,需要对源库进行预检查,Oracle为源库时预检查项如表1所示。 表1 预检查项 预检查权限 检查含义 是否必须通过 DBMS_METADATA权限 检查用户是否具有从Oracle数据库字典中检索元数据的权限,该权限用来获取Schema对象的DDL。 赋予DBA权限即可,赋权语句如下: 创建用户。 CREATE USER user IDENTIFIED BY password; 授予用户登录权限。 GRANT CONNECT TO user; 授予用户DBA权限。 GRANT DBA TO user; 必须 动态视图权限 检查用户对各种动态性能视图的访问权限,该权限用来获取数据库基础信息。 赋予DBA权限即可。 必须 schema对象数量检查 检查该用户是否有Schema对象需要评估。至少需要一个对象需要评估。 必须 DBA权限 检查用户是否有DBA(数据库管理员)的权限,才能进行后续操作。 非必须 若为“警告”,评估项目仍能创建成功,但可能由于权限不足导致部分对象无法采集。 目标数据库连接用户需要具有创建/删除/更改schema、表、程序、索引、用户、函数、视图等其他迁移对象的权限。 用户需拥有创建UGO评估项目的对应权限。具体权限,可参见权限管理进行设置。
  • 自建GaussDB内核版本号与UGO界面显示GaussDB版本号对应关系 登录自建 GaussDB数据库 ,执行以下命令,查询版本号。 select version (); 查询出的版本号,与UGO界面上显示的GaussDB版本号对应关系如表1所示。 表1 版本号对应关系 GaussDB内核版本号 UGO显示GaussDB版本号 V500R002C10 GaussDB V2.0-2.7 企业版 503.0.x GaussDB V2.0-3.1 企业版 503.1.x GaussDB V2.0-3.2 企业版 503.2.x GaussDB V2.0-3.3 企业版 505.0 GaussDB V2.0-8.0 企业版 505.1 GaussDB V2.0-8.100 企业版 505.2 GaussDB V2.0-8.200 企业版 506.0 GaussDB V2.0-9.0 企业版 父主题: 产品咨询
  • GaussDB(Oracle兼容模式)下GUC参数设置 当使用Oracle兼容模式,可以设置GUC参数提高GaussDB的兼容性,迁移涉及的GUC参数和影响范围可参见表1。 GaussDB数据库提供了许多运行参数,配置这些参数可以影响数据库系统的行为。在修改这些参数时请确保用户理解了这些参数对数据库的影响,否则可能会导致无法预料的结果。可参考云数据库GaussDB GUC参数使用说明。 表1 GaussDB(Oracle兼容模式)的GUC参数 兼容Oracle行为配置项 兼容性配置项 兼容性配置项名字 支持的数据库 是否建议打开 参数详情参考 behavior_compat_options display_leading_zero 浮点数显示配置项-小数点前0显示 集中式版/分布式版 是 集中式版:参数详情 分布式版:参数详情 end_month_calculate add_months函数计算逻辑配置项 集中式版/分布式版 是 bind_procedure_searchpath 未指定模式名的存储过程中的数据库对象的搜索路径配置项。 集中式版/分布式版 是 correct_to_number 控制to_number()结果兼容性的配置项 集中式版/分布式版 是 unbind_divide_bound 控制对整数除法的结果进行范围校验 集中式版/分布式版 是 convert_string_digit_to_numeric 字符串转换为numeric配置项 集中式版/分布式版 是 return_null_string 控制函数lpad()和rpad()结果为空字符串''的显示配置项。 集中式版/分布式版 是 merge_update_multi 控制在使用MERGE INTO ... WHEN MATCHED THEN UPDATE和INSERT ... ON DUPLICATE KEY UPDATE,当目标表中一条目标数据与多条源数据冲突时UPDATE行为。 集中式版/分布式版 是 plstmt_implicit_savepoint 控制存储过程中更新语句的执行是否拥有独立的子事务。 集中式版/分布式版 是 hide_tailing_zero numeric显示配置项。 集中式版/分布式版 是 rownum_type_compat 控制ROWNUM的类型。 集中式版 是 aformat_null_test 控制rowtype类型判空逻辑。 集中式版/分布式版 是 aformat_regexp_match 控制正则表达式函数的匹配行为。 集中式版/分布式版 是 compat_cursor 控制隐式游标状态兼容行为。 集中式版 是 proc_outparam_override 控制存储过程出参的重载行为。 集中式版/分布式版 是 proc_implicit_for_loop_variable 控制存储过程中FOR_LOOP查询语句行为。 集中式版 是 allow_procedure_compile_check 控制制存储过程中select语句和open cursor语句的编译检查。 集中式版 是 plsql_security_definer 创建存储过程时默认为定义者权限。 集中式版/分布式版 是 plpgsql_dependency 创建函数,存储过程,包支持未定义的对象,可以新建成功。 集中式版 是 plsql_compile_check_options plsql_expression_check 开启plsql_expression_check参数,需要同时开启plpgsql_dependency参数。 503.1集中式版 是 a_format_version 10c 数据库平台兼容性行为配置项 集中式版/分布式版 是 a_format_dev_version s1 数据库平台迭代小版本兼容性行为配置项。 503.0 集中式版/分布式版 是 s2 数据库平台迭代小版本兼容性行为配置项。 503.1 集中式版/分布式版 是 s3 数据库平台迭代小版本兼容性行为配置项。 503.2 集中式版/分布式版 是 s4 数据库平台迭代小版本兼容性行为配置项 505.0 集中式版/分布式版 是 s5 数据库平台迭代小版本兼容性行为配置项。 505.1 集中式版/分布式版 是 s6 数据库平台迭代小版本兼容性行为配置项。 505.2 集中式版/分布式版 是 sql_beta_feature a_style_coerce 影响decode函数 集中式版/分布式版 是 a_format_dev_version参数设置: GaussDB V2.0-3.1 企业版,设置为 s1。 GaussDB V2.0-3.2 企业版,设置为 s2。 GaussDB V2.0-3.3 企业版,设置为 s3。 GaussDB V2.0-8.0 企业版,设置为 s4。 GaussDB V2.0-8.100 企业版,设置为 s5。 GaussDB V2.0-8.200 企业版和 GaussDB V2.0-9.0 企业版,设置为 s6。 版本号对应参考自建GaussDB内核版本号与UGO界面显示GaussDB版本号对应关系。 父主题: GaussDB数据库设置GUC参数对迁移的影响
  • GUC参数检查 GaussDB 提供了许多运行参数,统称为 GUC 参数,配置这些参数可以影响数据库系统的行为。UGO 对于 SQL 语法的转换,是基于与源库兼容性最好的一组 GUC 参数配置进行的,请根据对象迁移预检查中的提示进行 GUC 参数设置,否则可能影响最终对象迁移的成功率和可用性。 目标库为GaussDB V2.0-3.1及以上版本,源库为 Oracle、Microsoft SQL Server、MySQL时,展示此检查项。检查用户是否设置了GUC参数配置,详细检查项参考表1。 针对 GUC 的校验是基于评估选定的目标数据库版本,而不是当前实际连接的目标数据库版本。 GaussDB 集中式版(M兼容)作为目标库时,暂不支持 GUC 参数检查。 GaussDB GUC 参数的设置方法请参考预检查页面中检查项的提示,或参考如何设置GaussDB GUC参数进行操作。 表1 目标库GUC参数检查项 源数据库类型 目标库版本 检查项 MySQL GaussDB集中式版 V2.0-3.1 企业版 - GaussDB集中式版 V2.0-3.2 企业版 b_format_behavior_compat_options GaussDB分布式版 V2.0-3.2 企业版 - GaussDB集中式版 V2.0-8.0 企业版 b_format_version, b_format_dev_version GaussDB分布式版 V2.0-8.0 企业版 b_format_version, b_format_dev_version GaussDB集中式版 V2.0-8.100 企业版 b_format_version, b_format_dev_version GaussDB分布式版 V2.0-8.100 企业版 b_format_version, b_format_dev_version GaussDB集中式版(M兼容) V2.0-8.100 企业版 m_format_behavior_compat_options, m_format_dev_version GaussDB集中式版(M兼容) V2.0-8.200 企业版 m_format_behavior_compat_options, m_format_dev_version GaussDB集中式版(M兼容) V2.0-9.0 企业版 m_format_behavior_compat_options, m_format_dev_version Oracle GaussDB集中式版 V2.0-3.1 企业版 behavior_compat_options, sql_beta_feature, a_format_version, a_format_dev_version GaussDB集中式版 V2.0-3.2 企业版 behavior_compat_options, plsql_compile_check_options, sql_beta_feature, a_format_version, a_format_dev_version GaussDB分布式版 V2.0-3.2 企业版 behavior_compat_options, sql_beta_feature, a_format_version, a_format_dev_version GaussDB集中式版 V2.0-3.3 企业版 behavior_compat_options, plsql_compile_check_options, sql_beta_feature, IntervalStyle, a_format_version, a_format_dev_version GaussDB分布式版 V2.0-3.3 企业版 behavior_compat_options, sql_beta_feature, IntervalStyle, a_format_version, a_format_dev_version GaussDB集中式版 V2.0-8.0 企业版 behavior_compat_options, plsql_compile_check_options, sql_beta_feature, IntervalStyle, a_format_version, a_format_dev_version GaussDB分布式版 V2.0-8.0 企业版 behavior_compat_options, sql_beta_feature, IntervalStyle, a_format_version, a_format_dev_version GaussDB集中式版 V2.0-8.100 企业版 behavior_compat_options, plsql_compile_check_options, sql_beta_feature, IntervalStyle, a_format_version, a_format_dev_version GaussDB分布式版 V2.0-8.100 企业版 behavior_compat_options, sql_beta_feature, IntervalStyle, a_format_version, a_format_dev_version GaussDB集中式版 V2.0-8.200 企业版 behavior_compat_options, plsql_compile_check_options, sql_beta_feature, IntervalStyle, a_format_version, a_format_dev_version, a_format_date_timestamp GaussDB分布式版 V2.0-8.200 企业版 behavior_compat_options, sql_beta_feature, IntervalStyle, a_format_version, a_format_dev_version, a_format_date_timestamp GaussDB集中式版 V2.0-9.0 企业版 behavior_compat_options, plsql_compile_check_options, sql_beta_feature, IntervalStyle, mapping_date_to_datea, a_format_version, a_format_dev_version, a_format_date_timestamp GaussDB分布式版 V2.0-9.0 企业版 behavior_compat_options, sql_beta_feature, IntervalStyle, mapping_date_to_datea, a_format_version, a_format_dev_version, a_format_date_timestamp Microsoft SQL Server GaussDB集中式版 V2.0-3.1 企业版 behavior_compat_options, sql_beta_feature, a_format_version, a_format_dev_version GaussDB集中式版 V2.0-3.2 企业版 behavior_compat_options, plsql_compile_check_options, sql_beta_feature, a_format_version, a_format_dev_version GaussDB分布式版 V2.0-3.2 企业版 behavior_compat_options, sql_beta_feature, a_format_version, a_format_dev_version GaussDB集中式版 V2.0-8.0 企业版 behavior_compat_options, plsql_compile_check_options, sql_beta_feature, a_format_version, a_format_dev_version GaussDB分布式版 V2.0-8.0 企业版 behavior_compat_options, sql_beta_feature, a_format_version, a_format_dev_version GaussDB集中式版 V2.0-8.100 企业版 behavior_compat_options, plsql_compile_check_options, sql_beta_feature, a_format_version, a_format_dev_version GaussDB分布式版 V2.0-8.100 企业版 behavior_compat_options, sql_beta_feature, a_format_version, a_format_dev_version GaussDB集中式版 V2.0-8.200 企业版 behavior_compat_options, plsql_compile_check_options, sql_beta_feature, a_format_version, a_format_dev_version GaussDB分布式版 V2.0-8.200 企业版 behavior_compat_options, sql_beta_feature, a_format_version, a_format_dev_version GaussDB集中式版 V2.0-9.0 企业版 behavior_compat_options, plsql_compile_check_options, sql_beta_feature, a_format_version, a_format_dev_version GaussDB分布式版 V2.0-9.0 企业版 behavior_compat_options, sql_beta_feature, a_format_version, a_format_dev_version GaussDB 集中式版的参数 plsql_compile_check_options,用于校验 FUNCTION、PROCEDURE 和 PACKAGE 中的全量语句。当语句中存在未定义对象时,将打印告警信息进行提示。由于该参数存在误报,因此仅推荐在测试环境使用以提高问题定位效率,在生产中建议关闭此参数。 父主题: 迁移预检查说明
  • 支持评估的源数据库类型和版本 表1说明了UGO支持的源数据库类型及版本。 表1 源数据库类型及版本 源数据库引擎 源数据库版本 Oracle 10g、11g、12c、18c、19c、21c MySQL 5.5、5.6、5.7、8.0 PostgreSQL 10、11、12、13、14、15 GoldenDB - Microsoft SQL Server 2012、2014、2016、2017、2019、2022 源数据库PostgreSQL、GoldenDB、Microsoft SQL Server,目前仅支持白名单用户使用。
  • 支持迁移的链路及目标库版本 表2说明了UGO支持的迁移链路,以及目标数据库的类型和版本。 表2 支持迁移的链路及目标库类型和版本 源数据库引擎 目标数据库类型和版本 Oracle RDS for MySQL 5.7版本 RDS for PostgreSQL 11、12、13、14 TaurusDB GaussDB集中式版 V2.0(A兼容) 2.7 企业版、3.1 企业版、3.2 企业版 、3.3 企业版、8.0 企业版、8.100 企业版、8.200 企业版、9.0 企业版 GaussDB分布式版 V2.0(ORA兼容) 2.7 企业版、3.2 企业版 、3.3企业版、8.0 企业版、8.100 企业版、8.200 企业版、9.0 企业版 MySQL GaussDB集中式版 V2.0(B兼容) 2.7 企业版、3.1 企业版、3.2 企业版 、8.0 企业版、 8.100 企业版 GaussDB集中式版 V2.0(M兼容) 8.100 企业版、8.200 企业版、9.0 企业版 GaussDB分布式版 V2.0(MYSQL兼容) 2.7 企业版、3.2 企业版 、8.0 企业版、 8.100 企业版 PostgreSQL GaussDB集中式版 V2.0(A兼容) 3.1 企业版、3.2 企业版、 8.0 企业版、8.100 企业版、8.200 企业版、9.0 企业版 GaussDB分布式版 V2.0(ORA兼容) 3.2 企业版、 8.0 企业版、8.100 企业版、8.200 企业版、9.0 企业版 GoldenDB GaussDB集中式版 V2.0(B兼容) 8.0 企业版、8.100 企业版 GaussDB集中式版 V2.0(M兼容) 8.200 企业版、9.0 企业版 GaussDB分布式版 V2.0(MYSQL兼容) 8.0 企业版、8.100 企业版 Microsoft SQL Server GaussDB集中式版 V2.0(A兼容) 3.1 企业版、3.2 企业版、 8.0 企业版、8.100 企业版、8.200 企业版、9.0 企业版 GaussDB分布式版 V2.0(ORA兼容) 3.2 企业版、 8.0 企业版、8.100 企业版、8.200 企业版、9.0 企业版 TaurusDB RDS for PostgreSQL 11、12、13、14、15 目标库 GaussDB V2.0-8.0 企业版、V2.0-8.100 企业版、V2.0-8.200 企业版和 V2.0-9.0 企业版,目前仅支持白名单用户使用。 在 UGO 中选择 GaussDB 作为目标库时,V2.0-2.7 以下的版本界面中不展示,所以无法选择。如果仍在使用 V2.0-2.1 企业版或 V2.0-2.2 企业版的实例,请在界面上选择 V2.0-2.7 企业版进行迁移。如果 GaussDB 实例为 V2.0-2.1 以前的版本,UGO 不支持迁移,请升级实例。
  • 规则约束 所有涉及update、delete的规则项,均不支持多表操作审核。 update、delete多表操作仅支持规则项:“不应用单条update、delete语句对多个表实现更新、删除操作”。 对于“在PL/pgSQL中,关键字建议大写,非关键字小写”、“sql语句中,关键字建议大写,非关键字小写”规则项,不要在以对象名作为非保留关键字的语句中使用,存在审核不准确情况,比如:SELECT ID FROM name,name是非保留关键字。 对于规则“对分区表执行交换分区、合并分区、分隔分区、清空分区、删除分区时,必须同步更新全局索引”,在用户修改数据库系统参数enable_gpi_auto_update后,该规则可能失效,请在数据库侧清理session,可登录到数据库中执行: CLEAN CONNECTION TO ALL FORCE FOR DATABASE db_name; “查询系统视图时,如果使用对象名作为筛选条件,对象名应使用小写”支持的系统视图参见表2。 “谨慎删除数据库对象及清理数据”,其中阈值中支持审核SQL语法见表表3 表2 视图审核 视图名 所属schema 表示对象名的列 adm_arguments pg_catalog、sys owner、object_name、package_name、argument_name adm_audit_object pg_catalog、sys username、owner、obj_name、action_name adm_audit_session pg_catalog、sys username、action_name adm_audit_statement pg_catalog、sys username、obj_name、action_name adm_col_comments pg_catalog、sys owner、table_name、column_name、schema adm_col_privs pg_catalog、sys grantor、owner、grantee、table_schema、table_name、column_name、privilege adm_coll_types pg_catalog、sys owner、type_name、elem_type_mod、elem_type_owner、elem_type_name adm_constraints pg_catalog、sys owner、constraint_name、table_name、index_owner、index_name adm_indexes pg_catalog、sys owner、index_name、table_name、table_owner、tablespace_name adm_ind_columns pg_catalog、sys index_owner、index_name、table_name、table_owner、column_name adm_objects pg_catalog、sys owner、object_name、subobject_name adm_procedures pg_catalog、sys owner、object_name、procedure_name、impltypeowner、impltypename adm_role_privs pg_catalog、sys grantee、granted_role adm_tab_col_statistics pg_catalog、sys owner、table_name、column_name、schema adm_roles pg_catalog、sys role adm_source pg_catalog、sys owner、name adm_sys_privs pg_catalog、sys grantee、privilege adm_tab_cols pg_catalog、sys owner、table_name、column_name、data_type_owner、schema、qualified_col_name adm_tab_privs pg_catalog、sys grantee、owner、table_name、grantor、privilege adm_tables pg_catalog、sys owner、table_name、tablespace_name adm_tab_columns pg_catalog、sys owner、table_name、column_name、data_type_owner、schema adm_tab_comments pg_catalog、sys owner、table_name、column_name、schema adm_tab_statistics pg_catalog、sys owner、table_name adm_triggers pg_catalog、sys owner、trigger_name、table_owner、table_name adm_type_attrs pg_catalog、sys type_name、attr_name、attr_type_name、character_set_name adm_types pg_catalog、sys owner、type_name adm_users pg_catalog、sys username、default_tablespace、temporary_tablespace、default_collation adm_views pg_catalog、sys owner、view_name db_all_tables pg_catalog、sys owner、table_name、tablespace_name db_arguments pg_catalog、sys owner、object_name、package_name、argument_name db_col_comments pg_catalog、sys owner、table_name、column_name、schema db_col_privs pg_catalog、sys grantor、owner、grantee、table_schema、table_name、column_name、privilege db_coll_types pg_catalog、sys owner、type_name、elem_type_mod、elem_type_owner、elem_type_name db_constraints pg_catalog、sys owner、constraint_name、table_name、index_owner、index_name db_indexes pg_catalog、sys owner、index_name、table_name、table_owner、tablespace_name db_ind_columns pg_catalog、sys index_owner、index_name、table_name、table_owner、column_name db_objects pg_catalog、sys owner、object_name、subobject_name db_procedures pg_catalog、sys owner、object_name db_tab_col_statistics pg_catalog、sys owner、table_name、column_name、schema db_source pg_catalog、sys owner、name db_tab_columns pg_catalog、sys owner、table_name、column_name、data_type_owner、schema db_tab_comments pg_catalog、sys owner、table_name、schema db_tables pg_catalog、sys owner、table_name、tablespace_name db_triggers pg_catalog、sys trigger_name、table_owner、table_name db_types pg_catalog、sys owner、type_name db_users pg_catalog、sys username db_views pg_catalog、sys owner、view_name dict pg_catalog、sys table_name dictionary pg_catalog、sys table_name my_col_comments pg_catalog、sys owner、table_name、column_name、schema my_col_privs pg_catalog、sys grantor、owner、grantee、table_schema、table_name、column_name、privilege my_coll_types pg_catalog、sys owner、type_name、elem_type_mod、elem_type_owner、elem_type_name my_constraints pg_catalog、sys owner、constraint_name、table_name、index_owner、index_name my_indexes pg_catalog、sys owner、index_name、table_name、table_owner、tablespace_name my_ind_columns pg_catalog、sys index_owner、index_name、table_name、table_owner、column_name my_objects pg_catalog、sys object_name、subobject_name my_procedures pg_catalog、sys owner、object_name、procedure_name、impltypeowner、impltypename my_role_privs pg_catalog、sys grantee、granted_role my_tab_col_statistics pg_catalog、sys table_name、column_name、schema my_source pg_catalog、sys owner、name my_tab_columns pg_catalog、sys owner、table_name、column_name、data_type_owner、schema my_tab_comments pg_catalog、sys owner、table_name、column_name、schema my_tab_statistics pg_catalog、sys table_name my_tables pg_catalog、sys owner、table_name、tablespace_name my_triggers pg_catalog、sys owner、trigger_name、table_owner、table_name my_type_attrs pg_catalog、sys type_name、attr_name、attr_type_name、character_set_name my_types pg_catalog、sys type_name my_views pg_catalog、sys owner、view_name pg_indexes pg_catalog、sys schemaname、tablename、indexname、tablespace pg_roles pg_catalog、sys rolename pg_tables pg_catalog、sys schemaname、tablename、tableowner、tablespace、tablecreator pg_user pg_catalog、sys username、nodegroup pg_views pg_catalog、sys schemaname、viewname、viewowner column_privileges information_schema、sys grantor、grantee、table_catalog、table_schema、table_name、column_name columns information_schema、sys table_catalog、table_schema、table_name、column_name constraint_column_usage information_schema、sys table_catalog、table_schema、table_name、column_name、constraint_catalog、constraint_schema、constraint_name constraint_table_usage information_schema、sys table_catalog、table_schema、table_name、constraint_catalog、constraint_schema、constraint_name enabled_roles information_schema、sys role_name schemata information_schema、sys catalog_name、schema_name、schema_owner、default_character_set_catalog、default_character_set_schema、default_character_set_name table_constraints information_schema、sys constraint_catalog、constraint_schema、constraint_name、table_catalog、table_schema、table_name table_privileges information_schema、sys grantor、grantee、table_catalog、table_schema、table_name tables information_schema、sys table_catalog、table_schema、table_name、self_referencing_column_name、user_defined_type_catalog、user_defined_type_schema、user_defined_type_name triggers information_schema、sys trigger_catalog、trigger_schema、trigger_name、event_object_catalog、event_object_schema、event_object_table、action_reference_old_table、action_reference_new_table usage_privileges information_schema、sys grantor、grantee、object_catalog、object_schema、object_name views information_schema、sys table_catalog、table_schema、table_name 表3 支持审核的SQL语法 DDL类型 SQL语法 DROP DROP TABLE, DROP TABLESPACE, DROP AGGREGATE, DROP AUDIT POLICY, DROP CAST, DROP DATABASE, DROP DATA SOURCE, DROP DIRECTORY, DROP EVENT, DROP FOREIGN TABLE, DROP GLOBAL CONFIGURATION, DROP GROUP, DROP MASKING POLICY, DROP MATERIALIZED VIEW, DROP MODEL, DROP OPERATOR, DROP OWNED, DROP PACKAGE, DROP PACKAGE BODY, DROP PROCEDURE, DROP RESOURCE LABEL, DROP RESOURCE POOL, DROP ROLE, DROP ROW LEVEL SECURITY POLICY, DROP RULE, DROP PUBLICATION, DROP SCHEMA, DROP SEQUENCE, DROP FUNCTION, DROP SERVER, DROP SUBSCRIPTION, DROP SYNONYM, DROP TEXT SEARCH CONFIGURATION, DROP TEXT SEARCH DICTIONARY, DROP TRIGGER, DROP TYPE, DROP USER, DROP USER MAPPING, DROP VIEW, DROP WEAK PASSWORD DICTIONARY ALTER ALTER DROP PARTITION, ALTER TRUNCATE PARTITION, ALTER DROP COLUMN, ALTER DROP CONSTRAINT, ALTER DROP FOREIGN TABLE, ALTER DROP AUDIT POLICY, ALTER DROP MASKING POLICY, ALTER DROP SERVER, ALTER DROP TEXT SEARCH CONFIGURATION, ALTER DROP USER MAPPING, ALTER DROP DATA SOURCE TRUNCATE TRUNCATE
  • 约束限制 规则的嵌套审核仅支持四种语法,详情可参见表1。 推荐索引功能仅支持GaussDB。 With as只支持SELECT语句。 别名不能和实体表重名,且别名之间不能重名。 不支持审核视图中的表审核。 不支持审核数据库系统表及系统视图审核。 不支持审核含有“#”的MySQL语句。 表1 支持的嵌套审核语句 序号 SQL语句 1 select id, (select 子查询) as name from table; 2 select id from table where id in (select 子查询); 3 select * from table1,(select 子查询); 4 with e as (select 子查询) select * from e;
  • 前提条件 用户需拥有创建UGO迁移项目的对应权限。具体权限,可参见权限管理进行设置。 创建迁移项目至少需要一个状态显示为“完成 创建迁移项目”的数据库评估项目。 待使用的目标数据库类型及版本信息要与评估项目确认的目标库类型及版本一致。 待连接的目标库正常,无欠费、停机等情况。 确保提供的目标数据库可正常访问,且连接用户需要具有对于Schema、表、程序、索引、用户、函数、视图等迁移对象的创建、删除和更改的权限。