Oracle兼容性配置参数

最近更新时间: 2026-03-13 09:03:00

本节主要介绍TDSQL PG 数据库的 Oracle 模式中需要配置参数。
TDSQL PG的参数配置主要有以下几种参数级别, session级server级internal级

  • session级:

    • 普通用户配置:用户在当前会话设置,只在当前会话生效,不会影响其他session。使用方法: set parameter = value
    • session级(superuser) 配置:session级的特殊情况,相关参数只能由superuser设置,普通用户设置时会报错。
  • server级:

    • 方法1:superuser通过 alter system 关键字命令设置,使用方法:alter system set parameter = value ,修改后需要重新启动数据库服务器才能够生效。

      说明

      alter system 修改后只是将该参数写到 postgresql.auto.conf 文件里,故需要重启才可以生效。

    • 方法2:手动配置到 postgresql.conf 里,修改后重启数据库生效。

      说明

      由于postgresql.auto.conf 文件里的内容,在执行 alter system reset all; 会全部清除,故若需要手动配置,最好不要在 postgresql.auto.conf中修改。

  • internal级:内部级别,不允许用户手动进行设置。
    TDSQL PG 数据库的 Oracle 模式中可配置参数参考下表:

序号 参数名称 参数类型 参数级别 取值范围 参数说明
1 allow_limit_ident 布尔 session级 on/off 是否允许 limit 做标识符,默认off
2 allow_unmatched_block_comments 布尔 session级 on/off 是否允许c风格注释 /* */ 不配对出现,默认off
3 case_as_alias 布尔 session级 on/off 是否允许用case做别名,默认off
4 convert_sysview_to_sysclass 布尔 session级 on/off 在oracle 模式下是否支持regclass 函数把PG_CLASS 这种系统视图转化为pg_class 系统表,默认on
5 dblink_types 枚举 session级 oracle_x86
oracle_arm
postgresql
tdsql_pg
DBLink连接的是oracle还是postgresql,需要在 CREATE DATABASE LINK之前设置,默认oracle_x86
6 default_sql_mode 枚举 session级 oracle/postgresql CREATE DATABASE 不指定mode和template时的默认模式,默认postgresql
7 default_with_rowid 布尔 session级 on/off 创建的表是否带有ROWID列,默认值off
8 different_func_argret 布尔 session级 on/off 函数的out参数行为是否兼容oracle,默认off
9 disable_empty_to_null 布尔 session级 on/off 是否禁止空串('')转换为null,默认off
10 do_as_alias 布尔 session级 on/off 是否允许用do做别名,默认off
11 enable_create_package_rec_typ 布尔 session级 on/off 在包头中 用户定义 record类型是否允许定义到 pg_type 中,这样包外也可以使用该record 类型,默认off
12 enable_distinct_order_by 布尔 session级 on/off 检查order by的列与distinct的列是否匹配,默认off
13 enable_function_overload 布尔 session级 on/off 是否允许函数重载,默认on
14 enable_inline_target_function 布尔 session级(superuser) on/off 是否允许将targetlist中对应的sql function转化为子连接,默认值off
15 enable_nestedtable_check 布尔 session级 on/off SQL中引用包函数,而该函数包含嵌套类型,将导致CachePlan失败,在循环中执行将比较耗时,通过该配置规避cacheplan问题,默认on
16 enable_oracle_column_name 布尔 session级 on/off 查询返回的列名是否完全兼容oracle,默认off
17 enable_oracle_dist_udaf 布尔 session级 on/off 是否允许在分布式环境创建oracle自定义聚合函数,默认off
18 enable_oracle_implicit_coercion 布尔 session级 on/off 是否使用oracle隐式转换,默认on
19 enable_oracle_pkg_nested_table 布尔 session级 on/off 包中嵌套表类型是否在pg_type中记录一条类型信息,默认off
20 enable_plsql_analysis 布尔 session级 on/off 是否在创建函数或者存储过程时支持PLSQL 静态检查,默认off
21 enable_secfunc_xact 布尔 session级(superuser) on/off 是否允许在security definer函数中使用commit/rollback,默认on
22 enable_type_priority_in_ora_mode 布尔 session级 on/off 是否在oracle 模式下支持类型优先级判断,默认on
23 enable_typobj_func_verify 布尔 session级 on/off 检查type object的spec和body的函数是否匹配,默认on
24 function_xact_control 布尔 session级 on/off 函数内是否支持COMMIT/ROLLBACK,默认on
25 keywords_as_ident 布尔 session级 on/off 是否允许关键字做标识符,默认on
26 max_autonomous_transactions 整型 server级 0 ~ 536870911 支持的自治事务最大数,默认100
27 nls_date_format 字符串 session级 - date的输入输出格式,默认YYYY-MM-DD HH24:MI:SS
28 nls_sort_locale 字符串 session级 SCHINESE_PINYIN_M
SCHINESE_STROKE_M
SCHINESE_RADICAL_M
nlssort函数使用的排序规则,默认空
29 nls_timestamp_format 字符串 session级 - timestamp的输入输出格式,默认YYYY-MM-DD HH24:MI:SS.US
30 nls_timestamp_tz_format 字符串 session级 - timestamptz的输入输出格式,默认YYYY-MM-DD HH24:MI:SS.US TZ
31 only_rename_typobj_metainfo 布尔 session级 on/off alter type object rename的时候,是否只改名字,不改其它信息。调试使用,正常情况下不要使用该参数, 默认off
32 plpgsql_hold_cursor 布尔 session级 on/off 事务提交的时候是否保持游标,默认on
33 plsql_emptystring_to_blank 布尔 session级 on/off PLSQL中空串仍然是空串,不会转换成null,默认on
34 profile_password_limit 布尔 session级(superuser) on/off 是否启用密码限制,默认off
35 profile_resource_limit 布尔 session级(superuser) on/off 是否启用资源限制,默认off
36 skip_check_same_relname 布尔 session级 on/off 是否跳过检测sql中存在相同的别名表,默认on
37 sql_mode 枚举 internal级 oracle/postgresql 该参数仅用于显示当前连接的数据库的模式,不允许修改,无默认值,依赖于连接的数据库类型
38 nls_date_language 字符串 session级 - 该参数用于指定日期和时间以哪种形式输出月份和星期几,默认是 American