本节主要介绍TDSQL PG 数据库的 Oracle 模式中需要配置参数。
TDSQL PG的参数配置主要有以下几种参数级别, session级,server级,internal级:
session级:
- 普通用户配置:用户在当前会话设置,只在当前会话生效,不会影响其他session。使用方法:
set parameter = value。 - session级(superuser) 配置:session级的特殊情况,相关参数只能由superuser设置,普通用户设置时会报错。
- 普通用户配置:用户在当前会话设置,只在当前会话生效,不会影响其他session。使用方法:
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 |