GaussDB PG兼容模式
兼容模式设置
- 源库为PostgreSQL时,支持往GaussDB的PG兼容模式迁移。
- 创建PG兼容模式的数据库。
- 使用具有创建数据库权限的用户登录GaussDB数据库。
- 执行以下命令,创建PG兼容模式的GaussDB数据库。
create database databasename dbcompatibility = 'PG';
- 执行以下命令,若datcompatibility兼容性一列为PG,则创建成功。
select * from pg_database where datname = 'databasename';
GUC参数设置
当使用PG兼容模式时,可以设置GUC参数提高GaussDB的兼容性,迁移涉及的GUC参数和影响范围可参见表1。
GaussDB数据库提供了许多运行参数,配置这些参数可以影响数据库系统的行为。在修改这些参数时请确保用户理解了这些参数对数据库的影响,否则可能会导致无法预料的结果。
| 兼容PG行为配置项 | 兼容性配置项 | 兼容性配置项名字 | 支持的数据库 | 是否建议打开 |
|---|---|---|---|---|
| behavior_compat_options | display_leading_zero | 浮点数显示配置项-小数点前0显示。 | 集中式版/分布式版 | 是 |
| bind_procedure_searchpath | 未指定模式名的存储过程中的数据库对象的搜索路径配置项。 | 集中式版/分布式版 | 是 | |
| correct_to_number | 控制to_number()结果兼容性的配置项。 | 集中式版/分布式版 | 是 | |
| return_null_string | 控制函数lpad()和rpad()结果为空字符串''的显示配置项。 | 集中式版/分布式版 | 是 | |
| allow_procedure_compile_check | 控制存储过程中select语句和open cursor语句的编译检查。 | 集中式版/分布式版 | 是 | |
| plsql_compile_check_options | plsql_expression_check | GaussDB的PL/SQL编译检查开关,设置为plsql_expression_check后,创建函数/存储过程/包时会检查能否正常编译。 | 集中式版 | 是 |
操作步骤
集中式版
- 连接GaussDB数据库,切换至GaussDB的安装用户。
su - omm
"omm"为示例用户,切换时以实际安装用户为准。
- 执行以下命令,设置参数。
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "behavior_compat_options='display_leading_zero,bind_procedure_searchpath,correct_to_number,return_null_string,allow_procedure_compile_check'";
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "plsql_compile_check_options='plsql_expression_check'";
- 以上GUC参数设置均以 PostgreSQL 为源、GaussDB 集中式版 V2.0 - 8.200 企业版为目标库,其他链路的 GUC 参数,请参考预检查功能中提示的参数名称和参数值,分别替换掉上述命令中等号前后的内容。
- GUC 参数 plsql_compile_check_options 的值 plsql_expression_check 结构迁移全部完成后,需要设置为空。
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "plsql_compile_check_options=''";
分布式版
- 连接GaussDB数据库,切换至GaussDB的安装用户。
su - omm
"omm"为示例用户,切换时以实际安装用户为准。
- 执行以下命令设置参数。
gs_guc reload -Z coordinator -Z datanode -N all -I all -c "behavior_compat_options='display_leading_zero,bind_procedure_searchpath,correct_to_number,return_null_string,allow_procedure_compile_check'";
以上GUC参数设置均以 PostgreSQL 为源、GaussDB 分布式版 V2.0 - 8.200 企业版为目标库,其他链路的 GUC 参数,请参考预检查功能中提示的参数名称和参数值,分别替换掉上述命令中等号前后的内容。