本节主要介绍 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 | 该参数仅用于显示当前连接的数据库的模式,不允许修改,无默认值,依赖于连接的数据库类型。 |