23ai:变化,不支持的功能与参数
数据库管理-第373期 23ai:变化、不支持和不建议的内容(20251011)
作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database
PostgreSQL ACE10年数据库行业经验
拥有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。
对于Oracle Database 21c的升级,如果数据库中存在MDSYS schema,但Oracle Spatial(SDO)不存在,则将Oracle Locator(LCTR)安装到数据库注册表中。 在升级到Oracle数据库23ai期间,Oracle Multimedia(ORDIM)将被删除。如果LCTR存在于数据库注册表中,它也会被删除。如果MDSYS模式中的Locator对象存在于数据库中,而SDO不存在,则安装SDO。 如果从Oracle Database 23ai降级,则ORDIM不会作为降级的一部分进行恢复。 如果从23ai降级到21c,则会重新安装LCTR。 如果您在数据库注册表中将较低版本的non-CDB或存在ORDIM或LCTR或者二者均有的的PDB或插入到未安装SDO的目标23ai数据库CDB中,请在插件之前在23ai数据库的CDB$ROOT中安装SDO。
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后,在以下情况下会阻止数据库降级:
在存在XML搜索索引的情况下 在存在XML或JSON搜索索引的情况下,使用路径子集
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_BASE_HOME ORACLE_BASE_CONFIG
在创建数据库或侦听器之前,请确保启用只读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 不再支持的功能
ODP.NET的OracleConfiguration.DirectoryType Property和.NET的Configuration File DIRECTORY_TYPE配置不再被支持 exp不再被支持 用于Oracle的MySQL客户端库驱动不再被支持 acfsutil repl reverse命令不再被支持
由repl failover或repl switchover替代Domain Services Clusters (DSC)不再被支持 用于自适应阈值的DBSNMP包不再被支持 Policy-Managed数据库部署不再被支持 企业级用户安全(Enterprise User Security,EUS)中的用户迁移(User Migration Utility,UMU)部分不再被支持 EM Express不再被支持 Oracle Wallet Manager (OWM) 不再被支持 The Real Application Security GUI administration tool (RASADM) 不再被支持 Oracle Label Security参数和函数不再被支持 带有Oracle Label Security (OLS)的Oracle Internet Directory(OID)集成不再被支持 向RADIUS赋予管理权限不再被支持 透明数据加密的public key infrastructure (PKI)不再被支持 GOST和SEED算法的透明数据加密(TDE)加密库不再被支持支持并删除。GOST和SEED解密库已弃用 Oracle 10g密码验证不再被支持 Transport Layer Security版本1.0和1.1不再被支持 Unix Crypt (MD5crypt) 密码验证不再被支持 FIPS Strength 80加密不再被支持 Diffie-Hellman Anonymous Ciphers不再被支持 用于.NET的Oracle数据库扩展不再被支持 Oracle服务质量管理(QoSM, or QoS Management)不再被支持 传统审计不再被支持 config.sh不再被支持 OLS表的LABELS列不再被支持 32位Oracle客户端不再被支持 OGG的Oracle全球分布式数据库高可用不再被支持 Grid Infrastructure Management Repository (GIMR)不再被支持 Data Recovery Advisor (DRA)不再被支持 DBUA和手动升级方式不再被支持 真实应用测试(Oracle Real Application Testing)的数据屏蔽和子集不再被支持 Shared Grid Naming Service的地址选项不再被支持 DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL存储过程不再被支持 AUDIT_TRAIL_PROPERTY参数的AUDIT_TRAIL_WRITE模式不再被支持 集群时间同步服务不再被支持 Oracle Connection Manager Parameter (CMAN) 密码访问不再被支持 Enterprise User Security (EUS) DBLINK不再被支持 oracle.jdbc.rowset包不再被支持 IBM AIX系统上的ACFS不再被支持 RECOVER…SNAPSHOT TIME不再被支持 Oracle ASM Filter Driver (ASMFD)不再被支持
3 不再支持的参数
SYS_CONTEXT USERENV中的EXTERNAL_NAME参数不再被支持 服务(service)属性值SESSION_STATE_CONSTRESTENCY=STATIC不再被支持 ENCRYPTION_WALLET_LOCATION参数不再被支持 ADD_SSLV3_TO_DEFAULT SQLNET.ORA 参数(和SSLv3)不再被支持 OPTIMIZER_SECURE_VIEW_MERGING参数不再被支持
总结
本期对Oracle 23ai中的变化,不支持的功能与参数进行了总结。
23ai的官方文档中有一个让人比较惊喜的地方是,当官方文档增加新内容后,会单独标注一个日期,方便大家对比学习。
老规矩,知道写了些啥。