数据库管理-第373期 23ai:变化、不支持和不建议的内容(20251011)
作者:胖头鱼的鱼缸(尹海文) Oracle ACE Pro: Database PostgreSQL ACE 10年数据库行业经验 拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证 墨天轮MVP,ITPUB认证专家 圈内拥有“总监”称号,非著 名社恐(社交恐怖分子) 公众号:胖头鱼的鱼缸 CSDN:胖头鱼的鱼缸(尹海文) 墨天轮:胖头鱼的鱼缸 ITPUB:yhw1809 IFClub:胖头鱼的鱼缸 除授权转载并标明出处外,均为“非法”抄袭
话说都2025年第四季度了,Oracle Database 23ai还是只能在云上和Exadata/ODA上部署,除了内测版,线下部署版本仍然没有发布,着实让人心急啊。本期解读官方文档,Oracle 23ai中变化、不支持的一些内容,提前为Oracle 23ai到来做一些准备。
https://docs.oracle.com/en/database/oracle/oracle-database/23/upgrd/oracle-database-changes-deprecations-desupports.html
1 Oracle Database 23ai升级规划中的行为变更
1.1 Oracle数据库版本号的变更
数据库中VERSION、VERSION_LEGACY和VERSION_FULL版本号值提供的数据已更新。
1.1.1 基本版本
VERSION以主版本0.0.0.0的形式指定。主要发布版本基于Oracle数据库版本首 次发布年份的最后两位数字。例如,2023年首 次发布的Oracle数据库版本的主要发布版本为23,因此其版本发布为23.0.0.0.0。此基本版本发布号在发布过程中不会更新。您可以通过登录SQL*Plus并输入SELECT BANNER FROM V$VERSION来识别基本版本,以查看显示的版本。这是与COMPATIBLE初始化参数关联的值。
下面是19c和23ai的对比:

1.1.2 完整版本
VERSION_FULL版本由五个以句点分隔的数字段进行分类,这些数字段指定了基础数据库版本、版本更新、版本更新的刷新、发布月份和发布年份。此值在跟踪文件中可见。您可以在以下示例中看到差异,比较Oracle Database 23ai和19c之间的相同SQL命令输出。在Oracle数据库23ai的输出中,VERSION_FULL值提供了基本版本(23)、版本更新(8)、版本刷新更新(0)和年月(25.07),而Oracle数据库19c的VERSION_FUL输出仅表示基本版本和版本更新(19.3)。
下面是19c和23ai的对比:

1.2 Oracle空间对象和过时对象
如果以前对媒体对象使用过Oracle Multimedia或Oracle Locator,那么如果数据库中存在MDSYS拥有的Locator对象,则在升级到Oracle Database 23ai期间会安装Oracle Spatial。
如果不需要Oracle Spatial,那么为了避免在升级过程中触发Spatial安装,请在开始升级之前删除定位器对象。要删除Oracle Spatial,请在早期版本的Oracle主页中运行$ORACLE_HOME/md/admin/densisdo.sql。
如果需要Oracle Spatial,那么为了减少停机时间,请在开始升级之前手动安装Oracle Spatial。要安装Oracle Spatial,请在早期版本的Oracle主页中运行$Oracle_HOME/md/admin/mdinst.sql。
1.3 用于AutoUpgrade的REST APIs
为了便于安全可靠地远程使用AutoUpgrade实用程序进行Oracle数据库升级,AutoUpgrade现在提供REST API(ORDS和OCI)。
Oracle REST Data Services(ORDS)数据库API是嵌入到Oracle REST Data Service中的数据库管理和监视REST API。通过将REST适配器连接配置为使用OCI签名版本1(OCI Signature Version 1)安全策略,可以启用Oracle云基础设施(OCI)REST API。现在,您可以使用这些功能通过SSH远程运行自动升级升级。AutoUpgrade 22及更高版本支持使用AutoUpgrade REST API。
1.4 XML JSON搜索索引增强
从Oracle Database 23ai开始,JSON搜索的增强可能是您升级计划的一个因素。
完成升级测试后,为了利用Oracle Database 23ai中引入的XML搜索索引增强功能,您可能需要计划在将COMPATIBLE参数更新为23.0.0.0后重新创建Oracle文本索引和JSON搜索索引。但是,现有的XQuery全文索引没有功能更改。即使更新了COMPATIBLE设置,这些索引仍将可用。
更新COMPATIBLE参数设置后,现有的JSON搜索索引将被视为包括所有可用路径。未重新创建的现有JSON搜索索引将保持可用。Oracle数据库21c中引入了路径感知JSON搜索索引,因此对JSON搜索索引的升级更改以启用路径感知已经作为Oracle数据库21c升级的一部分进行了处理。Oracle Database 23ai引入的XML搜索索引和INCLUDE路径子句功能将要求将数据库兼容设置设置为23.0.0.0.0。
您在以前版本中使用的索引语法仍然可用。然而,即使不更改兼容性设置,Oracle Database 23ai为现有索引功能引入的语法也将可用。但是,对于JSON搜索索引,只有在JSON类型列上创建索引后,VALUE模式和路径子集功能才可用。
将COMPATIBLE升级到23.0.0.0.0后,在以下情况下会阻止数据库降级:
1.5 具有JSON布尔值的SQL/JSON函数JSON_VALUE
从Oracle Database 23ai开始,数据类型BOOLEAN被添加到Oracle SQL中。此功能扩展了SQL/JSON运算符,允许返回BOOLEAN值或接受一个值作为输入。
将COMPATIBLE参数更新为23.0.0.0后,SQL/JSON路径表达式项方法boolean()和booleanOnly()现在返回一个SQL boolean值。这意味着,在具有json_value语义的查询中,默认情况下,item方法生成的值的类型为BOOLEAN:该值的处理方式就像它由BOOLEAN类型的json_value RETURNING子句控制一样。
在早期版本中,这些方法返回VARCHAR2(20)值“true”或“false”。如果需要获取VARCHAR2值(例如出于兼容性原因),则可以用SQL函数to_char包装该值。
1.6 升级前从FIPS中的非AES算法迁移
如果使用透明数据加密(TDE),则必须在开始升级到Oracle database 23ai之前将源数据库迁移到AES加密。
在Oracle Database 23ai中,当您使用为联邦信息处理标准(the Federal Information Processing Standard,FIPS)配置的透明数据加密(TDE)时,只允许使用高级加密标准(AES)密码AES-128、AES-192和AES-256。如果您的源Oracle数据库配置为FIPS模式,并且它正在使用任何其他算法来加密列或表空间,那么在升级之前,必须使用AES对列和表空间进行重新加密。
如果您升级了源数据库,并且它使用了不支持的加密算法,那么升级后的数据库将无法启动,或者加密的表空间将不可用,因为数据库无法解密表空间密钥。在这种情况下,Oracle建议您降级数据库,将加密密钥升级到支持的AES密码,然后重新启动升级。
1.7 Oracle OLAP弃用扩展
分析工作区(Analytic workspaces)、OLAP DML编程语言、财务报告和OLAP Java API在23ai中继续不建议使用。
请注意,在当前版本(Oracle Database 23ai)的首要支持期限之后,OLAP将不受支持。Oracle强烈建议您不要使用OLAP启动新项目,现在就开始将使用OLAP的应用程序迁移到替代方案。如果您的应用程序需要数据库内维度模型,那么可以考虑使用Oracle分析视图。分析视图使用Oracle数据库中的数据提供维度语义模型、计算和查询语义。当与列式表一起使用时,分析视图提供的查询性能类似于OLAP选项。如果您的应用程序需要支持高级维度分析、假设分析或预测,那么可以考虑Oracle Essbase。Oracle Essbase是一个多维数据库管理系统,支持复杂的多维业务分析。
1.8 只读家目录
默认情况下Oracle家目录(Home)以读/写模式可用。但是,在执行纯软件Oracle数据库安装后,您可以选择以只读模式配置Oracle家目录。只读Oracle家目录并不意味着文件系统和Oracle家目录处于只读模式。文件系统和挂载点应始终处于读/写模式。只读Oracle家目录通过实现安装和配置的分离简化了资源调配。在只读Oracle家目录中,配置数据和日志文件位于只读Oracle家目录之外。 除了传统的ORACLE_BASE和ORACLE_HOME目录外,以下目录还包含以前在ORACLE_HOMEs中的文件:
在创建数据库或侦听器之前,请确保启用只读Oracle家目录。当您运行roohctl脚本以启用只读Oracle家目录文件时,Oracle家目录文件系统将继续是读/写文件系统。
1.9 SYSDATE和SYSTIMESTAMP显示PDB时区
从23ai开始,SYSDATE和SYSTIMESTAMP可以根据单独的数据库时区设置,为每个数据库单独管理。
为了提高多租户的适用性和透明度,以进一步整合独立数据库,现在可以CD中的数据库单独管理PDB。所有用户可见的操作和内部功能(例如,Oracle Scheduler或Oracle Flashback技术)都遵循此设置。
在以前的版本中,SYSDATE和SYSTIMESTAMP设置是按照数据库主机的操作系统级别集中管理的。通过此更新,Oracle多租户使Oracle数据库能够将多个可插拔数据库整合为自包含的数据库,从而提高资源利用率和数据库管理。如果升级后不更改初始化参数,则默认值保持不变,所有可插拔数据库都会从操作系统继承系统时间。
1.10 基于4-band Raster块的Oracle Spatial GeoRaster JPEG压缩
略
1.11 二元性视图的文档标识符字段名称要求
23ai开始,发布更新23.4,当您使用二元视图时,文档标识符字段名称必须是_id。 name _id是可用于二元性视图的必需(也是唯一)文档标识符。无法创建不使用_id标识符字段二元性视图。此限制适用于Oracle数据库23ai(23.4)和更高版本的更新。
1.12 SYSTEM、SYSAUX和USERS默认大文件表空间
1.13 Stored Outlines的终结版本
23ai是Stored Outlines的终结版本。将所有Stored Outlines的终结迁移到SQL计划基线。 Oracle Database 11g中已弃用Stored Outlines。Oracle正准备停止对Stored Outlines的进一步支持。使用SQL计划管理基线提供了替代功能,该基线提供了许多增强功能。
2 不再支持的功能
3 不再支持的参数
总结
本期对Oracle 23ai中的变化,不支持的功能与参数进行了总结。 23ai的官方文档中有一个让人比较惊喜的地方是,当官方文档增加新内容后,会单独标注一个日期,方便大学对比学习。 老规矩,知道写了些啥。
