#23.2.2

# 版本定位

YashanDB v23.2.2版本在v23.2.1的基础上丰富了新特性与持续进行性能优化,为可用于长期服务支持的版本。

# 版本说明

版本号:v23.2.2

发版日期:2024 年 5 月 9 日

# 新增功能

YashanDB v23.2.2版本继承自YashanDB v23.2.1版本全部发布的功能,同时新增以下关键能力特性:

# SQL引擎增强

  • 内置函数增强:

    • TO_CHAR函数支持使用format参数指定转换格式,该版本新增[yyyy-mm-dd]格式,提高了使用兼容性,丰富业务场景。

    • 新增ROWIDTOCHAR函数,将ROWID值转换为字符串数据类型,长度根据ROWID值而定,增加数据可读性,便于在应用程序中处理ROWID数据。

  • PL能力增强:

    • 新增UTL_ENCODE内置系统包,通过BASE64_ENCODE和BASE64_DECODE函数实现编码解码功能,提供将RAW数据编码为标准编码格式的功能,以便数据可以在主机之间传输。

    • 过程体和匿名块支持CTE语法功能,在v23.2.2版本之前,YashanDB的PLSQL中不支持CTE语法,该版本实现可以在静态和动态SQL中使用,简化复杂查询,便于测试和调试,提高代码复用性。

# 存储引擎增强

  • 导数任务内存配置优化:新增_SCOL_RGD_COUNT隐藏参数,通过配置单分区下LSC存储SCOL slice内的rgd数量,优化LSC表bulkload导入;同时新增V$BULKLOADSTAT视图,方便分析bulkload任务的执行信息。

  • 外键引用目标表字段信息支持可选:在v23.2.2版本之前,YashanDB创建外键引用时需要指定目标表的引用字段,不指定则报错。该版本兼容了Oracle语法,实现引用目标表字段可选,即不指定时为匹配目标表主键字段,如检查不匹配则报错,提高了Oracle兼容性和易用性。

  • 创建用户时支持指定TEMP表空间功能:CREATE USER语法支持TEMPORARY TABLESPACE子句指定用户的默认使用的TEMP表空间,也可以省略,则缺省为数据库创建时的TEMP表空间,提高用户管理表空间的灵活性。

  • PROFILE支持IDLE_TIME和SESSIONS_PER_USER功能项:PROFILE功能新增IDLE_TIME和SESSIONS_PER_USER配置项,实现对用户的允许空闲会话时间及对每个用户名所允许的并行会话数控制,可以有效提升数据库的安全性和资源利用效率。

# 共享集群能力

  • YFS文件性能优化提升:在v23.2.2版本之前,YFS文件扩展是按照extent为一个原子操作,在大批量业务压力的时候,会导致YFS文件扩展很慢,从而影响数据库性能。在该版本对YFS文件性能进行优化,根据业务压力,将合并多个(最大为3000个),extent为一个原子操作,减少原子操作IO开销和网络同步开销,从而大幅度提升性能。

  • 共享集群多节点脑裂场景下,提供IO保护能力:新主产生后需要等待原主在途IO写完才能正式升主来避免新主和老主写冲突,以此来避免脑裂处理过程中并发的YFS、DB将数据写坏。

  • YCS配置易用性提升:在v23.1版本中YCS配置参数变更,只能通过修改配置文件,对运维管理即为不便。在该版本支持动态参数修改,提供ycsctl set_ycr key value在线修改YCS相关参数,具体可以动态修改参数请参考共享集群配置

# 易用性

  • 参数过时后支持报错和告警:从v23.2.2版本开始,在数据库、YCS等组件启动时,当发现还有使用过时参数,则会把过时信息打印到运行日志或屏幕输出告警,让用户及时知道并进行整改,提高易用性。

  • 视图中字段支持COMMENT功能:通过COLUMN ON TABLE和COLUMN ON COLUMN语法新增支持视图范围,实现对视图的整体和字段进行注释,提高视图的可读性。

  • 错误码信息长度返回优化:为了更准确定位问题和加强运维能力,YashanDB对错误码抛出长度进行优化,在执行SQL和PL返回错误场景中,错误码长度放大至8K,使数据库尽快提供准备和完整的报错原因和位置,可以提供开发人员和数据库管理员重要的诊断信息,可以帮助找到问题的根源并进行修复。

  • yasrman查看备份信息输出支持格式化:通过优化LIST BACKUP等命令输出备份集信息,格式化输出备份时间、ASN、SCN等信息,易读性增强,也方便第三方工具解析备份集信息。

  • yasrman在PITR时支持使用最近备份集或归档:在v23.2.2版本之前,基于时间点恢复需要指定用于恢复的备份集和归档日志,该版本新增特性发起基于时间点恢复后支持自动搜索备份集,自动找最近的备份集和需要的归档进行PITR恢复,提高灵活性。

# 驱动

  • OCI接口增强:

    • OCI外部数据类型:新增SQLT_RSET类型,用于处理嵌套表和结果集,提供更好的性能和灵活性。

    • OCIAttrGet:OCIAttrGet接口新增OCI_ATTR_IS_NULL属性,用于检查或设置列值是否为NULL。如果列不允许为空值,则返回0。提供灵活的NULL处理机制。

    • OCIParamGet:OCIParamGet接口新增OCI_HTYPE_ERROR参数,用于错误处理的句柄类型,包含存储错误信息,获取错误详情,管理错误状态等能力,便于调试和错误追踪。

    • OCIEnvInit:新增OCIEnvInit接口,用于分配并初始化环境句柄,是较早的环境初始化方法,现在推荐使用OCIEnvCreate。

    • OCIBreak:新增OCIBreak接口,用于中断当前操作的接口。可以强制终止正在执行的OCI操作,通常用于取消长时间运行的查询或操作。

    • OCIReset:新增OCIReset接口,用于重置中断的异步操作和协议的接口。可以重置OCI环境中的状态,清除所有待处理的操作。

    • OCILobOpen:新增OCILobOpen接口,用于打开LOB对象的接口,允许对LOB进行读写操作。打开LOB可以提供更好的并发控制。

    • OCILobGetLength2:新增OCILobGetLength2接口,用于获取LOB对象长度的接口。与OCILobGetLength相比,支持更大的LOB大小(超过4GB)。

    • OCILobClose:新增OCILobClose接口,用于关闭LOB的接口。用于关闭通过OCILobOpen打开的LOB对象。

    • OCIInitialize:新增OCIInitialize接口,用于初始化OCI环境和OCI库。

  • geoserver适配支持崖山方言包:适配GeoServer 2.21.0版本连接YashanDB,通过提供gt-jdbc-yashandb-xxx方言包和YashanDB JDBC驱动,在GeoServer进行配置后,选择YashanDB为数据库源,可进行访问读取矢量数据、发布图层等操作,具体操作请参考GeoServer工具对接示例(gt-jdbc)

  • ODBC接口增强:

    • SQLFetchScroll:新增SQLFetchScroll函数,用于在结果集中按指定方向获取数据行,支持多种滚动方式。

    • SQLPutData:新增SQLPutData函数,用于向数据库发送参数的部分或全部数据值。

    • SQLParamData:新增SQLParamData函数,用于处理参数数据的关键接口,特别是在处理大数据和数据分块传输时使用。

    • SQLBindParameter:参数StrLen_or_IndPtr新增SQL_LEN_DATA_AT_EXEC值,参数的数据将使用SQLPutData发送,用于处理数据延迟传输的场景。

    • SQLColumns:新增SQLcolumns函数,用于获取表列信息的接口。它返回指定表的列信息,包括列名、数据类型、大小等。

    • SQL_C_WCHAR类型:新增SQL_C_WCHAR类型,用于处理宽字符(Unicode)数据的C数据类型标识符。