Oracle 兼容语法参数配置

最近更新时间:2025-03-17 15:32:02

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