GaussDB(Oracle兼容模式)下GUC参数设置
当使用Oracle兼容模式,可以设置GUC参数提高GaussDB的兼容性,迁移涉及的GUC参数和影响范围可参见表1。

GaussDB数据库提供了许多运行参数,配置这些参数可以影响数据库系统的行为。在修改这些参数时请确保用户理解了这些参数对数据库的影响,否则可能会导致无法预料的结果。
兼容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 |
创建函数,存储过程,包支持未定义的对象,可以新建成功。 |
集中式版 |
是 |
|
sys_function_without_brackets |
开启该参数后,对于A兼容模式下无入参系统函数,可以不带括号进行调用。 |
GaussDB V2.0-8.200 集中式/分布式开始的版本 |
是 |
|
array_count_compat |
用于决定变长数组类型的变量为NULL时,调用array_count函数的返回值为NULL值还是0值。 |
GaussDB V2.0-8.200 集中式/分布式开始的版本 |
是 |
|
forbid_skip_tableof_empty_str_elem |
用于控制无索引的集合类型对于'{1,,3}'格式字符串的输入行 为。 |
GaussDB V2.0-8.200 集中式/分布式开始的版本 |
是 |
|
enable_use_ora_timestamptz |
开启后TIMESTAMP AT TIME ZONE语法得到的日期时间跟A数据库保持一致。 |
GaussDB V2.0-8.200 集中式/分布式开始的版本 |
是 |
|
forbid_package_function_with_prefix |
创建package内的函数时,如果函数有前缀,则会报错。 |
GaussDB V2.0-8.200 集中式/分布式开始的版本 |
是 |
|
show_full_error_lineno |
用于显示包含存储过程头部信息的行号,创建存储过程打印编译报错信息时,显示从CREATE语句开始的行号。 |
GaussDB V2.0-8.200 集中式/分布式开始的版本 |
是 |
|
plsql_rollback_keep_user |
控制在PL/SQL中rollback和rollback to savepoint是否修改当前用户。 |
GaussDB V2.0-8.200 集中式/分布式开始的版本 |
是 |
|
current_sysdate |
执行sysdate时,会获取当前操作系统时间。 |
GaussDB V2.0-8.200 集中式/分布式开始的版本 |
是 |
|
select_into_return_null |
存储过程语句SELECT select_expressions INTO[STRICT] target FROM ... 允许在不指定STRICT并且查询结果为空时给变量赋NULL值。 |
GaussDB V2.0-8.200 集中式/分布式开始的版本 |
是 |
|
time_constexpr_compact |
执行时间表达式场景,会根据常量是否携带时区,自动返回with timezone类型或without timezone类型。 |
GaussDB V2.0-8.200 集中式/分布式开始的版本 |
是 |
|
plsql_compile_check_options |
plsql_expression_check |
开启plsql_expression_check参数,需要同时开启plpgsql_dependency参数。 |
GaussDB V2.0-3.2集中式版 |
是 |
a_format_version |
10c |
数据库平台兼容性行为配置项 |
集中式版/分布式版 |
是 |
a_format_dev_version |
s1 |
数据库平台迭代小版本兼容性行为配置项。 |
GaussDB V2.0-3.1集中式版/分布式版 |
是 |
s2 |
数据库平台迭代小版本兼容性行为配置项。 |
GaussDB V2.0-3.2 集中式版/分布式版 |
是 |
|
s3 |
数据库平台迭代小版本兼容性行为配置项。 |
GaussDB V2.0-3.3集中式版/分布式版 |
是 |
|
s4 |
数据库平台迭代小版本兼容性行为配置项 |
GaussDB V2.0-8.0 集中式版/分布式版 |
是 |
|
s5 |
数据库平台迭代小版本兼容性行为配置项。 |
GaussDB V2.0-8.100 集中式版/分布式版 |
是 |
|
s6 |
数据库平台迭代小版本兼容性行为配置项。 |
GaussDB V2.0-8.200 集中式版/分布式版 |
是 |
|
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。