oracle 19c New Features (oracle 19c新特性)
文章来自oracle官方文档:https://docs.oracle.com/en/database/oracle/oracle-database/19/newft/new-features.html#GUID-3B8EF89B-0E24-4CA5-B6F5-7242699CCAC2
1.应用开发
这个里面是对java,jsion的功能加强了
Java的应用程序连续性:声明式请求划分
在自动模式下配置Java的Application Continuity时(即服务FAILOVER_TYPE = AUTO),Java数据库连接(JDBC)驱动程序在创建带有重播数据源的JDBC连接后,会在运行时注入beginRequest调用。
此功能确保Java应用程序和第三方连接池的停机时间为零,而无需进行代码更改。
Java的应用程序连续性:新状态管理
此功能引入了新的会话状态,包括AL8KW_ERR_OVLAP,AL8KW_EDITION,AL8KW_SQL_TXLP和AL8KW_ROW_ARCHIVAL。这些会话状态正常活动期间保存和恢复在故障转移时FAILOVER_RESTORE设置和故障转移等于AUTO。
此功能增强了Java应用程序连续性的透明度。
物化视图支持包含JSON_TABLE的查询
现在,具有JSON_EXISTS,JSON_VALUE和其他功能的查询可以利用在使用JSON_TABLE函数的查询上创建的实例化视图。
当列中的JavaScript对象符号(JSON)文档包含数组时,此功能特别有用。这种类型的实例化视图为访问这些JSON数组中的数据提供了快速的性能。
JSON更新操作
现在,您可以使用新的SQL函数JSON_MERGEPATCH更新JavaScript对象符号(JSON)文档,并通过一个语句将一个或多个更改应用于多个文档。
此功能提高了JSON更新操作的灵活性。
SQL / JSON语法简化
现在,您可以对字段投影,SQL / JSON路径表达式和SQL / JSON生成函数JSON_OBJECT使用更简单的语法。
用于JavaScript对象表示法(JSON)处理的SQL接口更易于用于某些操作。
JSON对象映射
现在,您可以将JavaScript对象表示法(JSON)数据与SQL对象类型和集合类型之间进行映射。
此功能使使用SQL对象和集合的程序更易于与基于JSON的应用程序进行交互。
新的SQL / JSON函数JSON_SERIALIZE和JSON数据指南对GeoJSON数据的支持
您可以使用新的SQL / JSON函数JSON_SERIALIZE将JavaScript对象表示法(JSON)数据序列化为文本。聚合函数JSON_DATAGUIDE现在可以检测GeoJSON地理数据。
您可以使用JSON_SERIALIZE将JSON值提取为文本以进行打印或显示。您可以使用SQL函数JSON_DATAGUIDE创建一个视图,以对诸如SDO_GEOMETRY数据之类的数据进行投影。
LISTAGG汇总的DISTINCT选项
现在,LISTAGG聚合函数通过使用新的DISTINCT关键字来支持重复消除。
所述LISTAGG根据聚合函数订单的每个组中的行的查询ORDER BY表达式,然后串接的值成一个字符串。您可以使用新的DISTINCT关键字从指定的表达式中删除重复的值,然后再将其串联为单个字符串。这消除了使用聚合的LISTAGG函数之前创建复杂查询处理以查找不同值的需要。使用DISTINCT选项删除LISTAGG函数中的重复值。
结果是更简单,更快,更有效的SQL。
值得注意的是,oracle11g 开发支持wm_concat,但是12c之后,要用wm_concat,需要换成listagg,在升级的时候,需要让业务测试,以免出现不必要的业务问题。
2.可用性
动态更改Oracle Data Guard Broker快速启动故障转移目标
快速启动故障转移目标备用数据库可以动态更改为目标列表中的另一个备用数据库,而无需禁用快速启动故障转移。
在早期版本的Oracle数据库中,必须禁用快速启动故障转移才能移至新的目标备用数据库。这使代理配置处于完全无法使用自动故障转移的时期。您可以使用SET FAST_START FAILOVER TARGET命令来动态更改快速启动故障转移目标备用数据库。
Format
SET FAST_START FAILOVER TARGET TO database-name [NOWAIT];
DGMGRL> SET FAST_START FAILOVER TARGET TO Boston;
Changing fast-start failover target to ‘Boston’…
Succeeded.
DGMGRL> SHOW FAST_START FAILOVER;
Oracle Data Guard Broker中的简化数据库参数管理
通过允许通过SQL * Plus进行所有参数管理,简化了Oracle Data Guard代理配置中的数据库参数管理。消除了数据库的Data Guard参数设置和Data Guard Broker的属性设置之间的不一致。
现在,您可以使用SQL * Plus ALTER SYSTEM
命令或通过新EDIT DATABASE ... SET PARAMETER
命令在Data Guard Broker命令行界面(DGMGRL)中管理所有与Oracle Data Guard相关的参数设置。在DGMGRL中进行的参数更改将立即在目标数据库上执行。
Oracle Data Guard Broker的快速启动故障转移的仅观察模式
“仅观察”模式使您可以测试自动快速启动故障转移,而不会影响Oracle Data Guard代理配置中的生产数据库。
配置快速启动故障转移时,可以使用仅观察模式创建测试模式,该模式检查正常生产过程中何时发生故障转移或其他交互。您可以使用此测试中的信息来更精确地调整快速启动故障转移属性。您还可以发现环境中的哪些情况会导致自动故障转移。
将还原点从主站点传播到备用站点
在主数据库上创建的还原点将传播到备用站点,以便即使在执行故障转移操作之后也可以使用它们。
在主站点上定义了正常还原点或保证的还原点,以在发生逻辑损坏时实现快速的时间点恢复。这些还原点存储在控制文件中。发生故障转移时,备用数据库将成为主数据库。但是,还原点信息会丢失。将还原点从主数据库传播到备用数据库可简化故障转移后的还原和恢复过程,因为备用数据库是使用在主数据库上创建的还原点进行更新的。
闪回主数据库时闪回备用数据库
在主数据库上执行闪回操作时,可以自动闪回Oracle Data Guard设置中的备用数据库。
在主数据库上执行闪回操作时,备用数据库不再与主数据库同步。在早期版本中,您需要执行某些步骤以将备用数据库与主数据库同步。此功能引入了一个新参数,当对主数据库执行闪回操作时,该参数可使备用数据库自动闪回。这样可以减少时间,精力和人为错误,从而加快同步速度并减少恢复时间目标(RTO)。
Oracle Data Guard多实例重做应用程序可与内存中列存储一起使用
现在可以在活动Data Guard备用数据库上同时启用“内存中列存储”和“ Data Guard多实例重做应用”。以前,这两个功能是互斥的。
现在,您可以在同一Active Data Guard备用数据库上使用最快的重做应用技术(Data Guard多实例重做应用)和最快的分析查询技术(内存列存储),以充分利用这两个功能。多实例重做应用使用Active Data Guard备用数据库上的内存列存储中的信息,以尽可能提高应用速度。
活动Data Guard DML重定向
偶然数据处理语言(DML)操作可以在Active Data Guard备用数据库上运行。当需要进行某些写操作时,这将使更多应用程序受益于使用Active Data Guard备用数据库。
DML重定向有助于在主数据库和备用数据库之间实现负载平衡。在Active Data Guard备用数据库上发布偶然DML时,更新将传递到执行该更新的主数据库。事务的结果重做将更新备用数据库,然后将控制权返回给应用程序。
PDB恢复目录
当目标数据库是可插拔数据库(PDB)时,支持与恢复目录的连接。
Oracle Database 19c版为多租户容器数据库(CDB)和PDB级别的备份和还原提供了完整的备份和恢复灵活性,包括恢复目录支持。您可以使用虚拟专用目录(VPC)用户来精细控制权限,以在PDB级别执行备份和还原操作。元数据视图也受到限制,因此VPC用户只能查看已被授予用户权限的数据。
定期清除闪回日志,以提高快速恢复区域大小的可预测性
通过自动删除超出保留期限的闪回日志,可以改善快速恢复区域的管理和数据库的运行状况。
快速恢复区域对于数据库至关重要,因为它存储备份,联机重做日志,归档的重做日志和闪回日志。因为许多数据库都可以使用快速恢复区域,所以当快速恢复区域变满时,多个数据库会受到影响。从存储管理的角度来看,此功能使闪回空间的使用变得可预测,因为闪回所使用的空间不超过保留所需的空间。它还允许您通过调整回闪保持力来控制累积的空间压力。
利用Oracle Data Guard调整自动中断解决方案的新参数
可以调整Oracle Data Guard自动中断解决方案以满足您的特定需求。
Oracle Data Guard在主数据库和备用数据库上有多个进程,它们通过网络相互通信以管理重做传输和归档。在某些故障情况下,网络挂起,断开连接和磁盘I / O问题,这些过程可能挂起,从而可能导致重做传输和间隙解决方面的延迟。Oracle Data Guard具有内部机制来检测这些挂起的进程并终止它们,从而允许进行正常的停机解决方案。现在,您可以使用两个新参数DATA_GUARD_MAX_IO_TIME和DATA_GUARD_MAX_LONGIO_TIME,根据用户网络和磁盘I / O行为来调整特定Oracle Data Guard配置的等待时间。
细粒度补充测井
细粒度的补充日志记录为部分数据库复制用户提供了一种对不感兴趣的表禁用补充日志记录的方式,因此,即使在数据库或架构级别启用了补充日志记录,对于不感兴趣的表也没有补充日志记录开销。
当仅数据库中的某些表需要补充日志记录时(例如在Oracle GoldenGate部分复制配置中),使用此功能可以大大减少资源使用和重做生成方面的开销。补充日志记录是为逻辑备用数据库或完整的数据库复制要求而设计和实现的。在仅复制表子集的环境中,这会增加不必要的开销。
Oracle Sharding “分片”
多表家族对系统管理的分片的支持
在19c中,可以在分片数据库中创建多个表族,每个表族都可以使用不同的分片键进行分片。
现在可以将访问不同表系列的不同应用程序托管在一个分片数据库中。此功能仅适用于系统管理的分片数据库。
三.大数据与数据仓库
自动索引
自动索引功能可根据应用程序工作负载的变化自动执行索引管理任务,例如在Oracle数据库中创建,重建和删除索引。
此功能通过在Oracle数据库中自动管理索引来提高数据库性能。
SQL诊断和修复增强功能
SQL诊断和修复工具(例如SQL测试用例生成器和SQL修复顾问)已得到增强,以提供更好的诊断和修复功能来管理有问题的SQL语句。
这些增强功能可以更有效地诊断和修复有问题的SQL语句。
基于位图的计数不同的SQL函数
使用新的位向量SQL运算符可加快SQL查询中的COUNT DISTINCT操作。要为数字表达式计算COUNT(DISTINCT),可以创建表达式的位向量表示形式,并在最终位计数之前对其进行汇总。可以在实例化视图中实例化生成的位向量。
您可以通过进一步分组比目标查询更大的GROUP BY键来构造位向量,以便可以使用一个物化视图通过使用ROLLUP来重写带有COUNT(DISTINCT)表达式的多个GROUP BY查询。
在大多数情况下,将位向量SQL函数与实例化视图结合使用,可以显着提高具有COUNT(DISTINCT)操作的查询的性能,这在数据仓库环境中很常见。自然会并行评估新的运算符,并利用硬件优化的位图操作。通过在较低级别的聚合级别使用位向量创建实例化视图,可以使用ROLLUP重用相同的实例化视图以在较高级别的聚合级别重写查询。
相关话题
内存中外部表的大数据和性能增强
内存中外部表增加了对ORACLE_HIVE和ORACLE_BIGDATA驱动程序,并行查询,Oracle Real Application Clusters,Oracle Active Data Guard和按需填充的支持。
通过使用新的大数据驱动程序,可以避免在将数据填充到内存中列存储(IM列存储)中之前实现数据的成本和复杂性。您可以使用Oracle数据库和数据库内存中的SQL分析功能来分析内部和外部数据。支持并行查询和完全扫描填充,这意味着应用程序在访问驻留在数据库外部的数据时具有较少的限制。
相关话题
自动SQL计划管理
自动SQL计划管理无需用户干预即可解决计划回归问题。例如,如果高负载的语句执行不理想,则SQL计划管理演进顾问可以自动定位这些语句,然后测试并接受最佳计划。
SQL计划管理在自动工作量存储库(AWR)中搜索SQL语句。通过按最高负载进行优先级排序,它会在所有可用资源中寻找替代计划,从而将性能更好的计划添加到SQL计划基准中。Oracle数据库还提供了计划比较工具和改进的提示报告。
使用自动化可以大大减少SQL语句性能下降的影响。
实时统计
Oracle Database在常规数据操作语言(DML)操作期间自动收集在线统计信息。
在执行DBMS_STATS统计信息收集作业之间,统计信息可能会过时。通过在DML操作期间自动收集一些统计信息,数据库可以扩展DBMS_STATS收集的统计信息。最新的统计信息使优化器可以生成更优化的计划。
高频自动优化器统计信息收集
您可以配置轻量级的高频自动任务,该任务定期收集过时对象的优化程序统计信息。
在执行DBMS_STATS作业之间,统计数据可能过时。通过更频繁地收集统计信息,优化器可以生成更优化的计划。
混合分区表
混合分区表功能通过使分区既可以驻留在Oracle数据库段中也可以驻留在外部文件和源中来扩展Oracle分区。此功能显着增强了大数据SQL分区的功能,其中表的大部分可以驻留在外部分区中。
混合分区表使您可以将内部分区和外部分区集成到单个分区表中。使用此功能,您还可以将非活动分区移动到外部文件(例如Oracle Data Pump文件),以获得更便宜的存储解决方案。
不过我感觉大多数这种业务场景用起来的少。
四.数据库整体
能够在静默模式下使用DBCA创建Oracle数据库的副本
现在,您可以在静默模式下使用数据库配置助手(DBCA)的createDuplicateDB命令来创建Oracle数据库的副本。
此功能使开发人员可以处理Oracle数据库的相同副本。
能够在静默模式下使用DBCA将PDB重定位到另一个CDB
现在,您可以在静默模式下使用数据库配置助手(DBCA)的relocatePDB命令将可插拔数据库(PDB)移至另一个多租户容器数据库(CDB)。
通过此功能,可以在静默模式下使用DBCA自动执行重新定位PDB的PDB生命周期操作。
通过以静默模式使用DBCA克隆远程PDB来创建PDB的能力
现在,您可以通过以静默方式使用数据库配置助手(DBCA)的createPluggableDatabase命令的createFromRemotePDB参数克隆远程PDB来创建可插拔数据库(PDB)。
通过此功能,可以在静默模式下使用DBCA自动执行克隆PDB的PDB生命周期操作。
简化的基于映像的Oracle数据库客户端安装
从Oracle Database 19c开始,Oracle数据库客户端软件可以作为映像文件下载和安装。您必须将映像软件解压缩到想要Oracle主目录所在的目录中,然后运行runInstaller脚本以开始Oracle数据库客户端安装。Oracle数据库客户端安装二进制文件继续以传统格式作为非映像zip文件提供。
与Oracle数据库和Oracle Grid Infrastructure映像文件安装一样,Oracle Database客户端映像安装可简化Oracle Database客户端安装并确保最佳实践部署。
根脚本自动化对Oracle数据库安装的支持
从Oracle Database 19c开始,数据库安装程序或设置向导提供了一些选项,用于设置权限以在数据库安装期间根据需要自动运行根配置脚本。您仍然可以选择手动运行根配置脚本。
设置无需用户干预即可运行的根配置脚本的权限,可以简化数据库的安装,并有助于避免意外的权限错误。
支持Oracle Clusterware升级的空运行验证
从Oracle Grid Infrastructure 19c开始,Oracle Grid Infrastructure安装向导(gridSetup.sh)使您能够执行空运行模式升级,以检查系统的升级准备情况。
在空运行升级模式下,安装向导将执行在实际升级中将执行的所有系统就绪检查,并使您能够在开始升级之前验证系统是否已准备好进行升级。此模式不执行实际升级。它有助于预测系统设置程序中的潜在问题并避免升级失败。
自动升级和数据库实用程序
适用于Oracle数据库的自动升级
AutoUpgrade使您可以使用一个命令和一个配置文件在命令行上升级一个或多个Oracle数据库实例。
AutoUpgrade运行升级前的任务,在需要时执行自动修复,处理数据库升级,并通过完成升级后的任务来完成升级。它包括自动重试和回退,可以为将来的时间点安排升级的选项,以及根据需要设置,更改或删除初始化参数的功能。
AutoUpgrade大大减少了与数据库升级相关的手动工作。它使您可以同时升级多个数据库。它甚至可以为没有熟练的数据库管理员主动管理的数据库进行例行升级。通过减少升级所需的精力,并在升级过程中自动实施推荐的做法,AutoUpgrade使数据库升级过程更容易完成,并降低了风险。
Oracle数据泵在导入时排除ENCRYPTION子句的能力
有一个新的转换参数OMIT_ENCRYPTION_CLAUSE,它使数据泵抑制使用加密列与对象关联的任何加密子句。
对于具有加密列的非云数据库,现在可以进行更好的Oracle Cloud迁移。
Oracle Data Pump允许表空间在TTS导入期间保持只读状态
现在,只要将文件空间设置为只读,就可以导入装载在两个不同数据库上的表空间文件。
一个新选项允许您还原12.2之前的默认行为,以便在可移植表空间导入过程中表空间数据文件是只读的。好处是,这允许将表空间数据文件安装在两个数据库上,只要它保持只读状态即可。但是,使用此选项要求源数据库和目标数据库具有完全相同的夏令时(DST)版本,因为导入时不调整TIMESTAMP WITH TIMEZONE数据。另外,如果指定此参数,则数据库不会自动重建表空间位图以在导入期间回收空间。这可以使导入过程更快,但要以重新获得表空间数据文件中的可用空间为代价。
Oracle Data Pump支持资源使用限制
Oracle数据泵参数MAX_DATAPUMP_JOBS_PER_PDB已更新,并且有一个新参数MAX_DATAPUMP_PARALLEL_PER_JOB。
MAX_DATAPUMP_JOBS_PER_JOB提供了对可在多租户容器数据库环境中启动的作业数量的更多控制:默认值:100,范围:0至250或自动:SESSIONS的50%。该MAX_DATAPUMP_PARALLEL_PER_JOB参数使您能够获得超过并行的工人数量更多的控制,你可以使用一个单独的数据泵作业。
当有多个用户在数据库环境中执行数据泵作业时,这些参数为您提供了对资源利用的更多控制。
适用于可移动表空间的Oracle数据泵测试模式
您可以更轻松地确定导出所需的时间,并发现关闭检查未报告的不可预见的问题。
可传输表空间(TTS)的测试模式使用TTS或完全可传输的导出或导入执行仅元数据导出测试。它还消除了将源数据库表空间设置为只读模式的要求。
Oracle数据泵可防止无意中使用受保护的角色
Oracle Data Pump使用新的命令行参数ENABLE_SECURE_ROLES防止在导出和导入过程中无意中使用受保护的角色。
某些Oracle角色需要授权。如果需要在Oracle Data Pump导出和导入中使用这些角色,则必须显式启用它们。新的ENABLE_SECURE_ROLES参数可用于EXPDP和IMPDP客户端以及Oracle Data Pump PL / SQL API。从Oracle Database 19c开始,默认值为NO。
Oracle Data Pump加载分区表数据一项操作
Oracle Data Pump可以将表的所有分区中的表数据作为一项操作导入,而不是将每个分区的单独操作导入。
GROUP_PARTITION_TABLE_DATA是Import DATA_OPTIONS命令行参数的新值,它通过将表的所有分区中的表数据作为一项操作导入来更改Oracle Data Pump的默认行为。当您不希望将每个表分区作为单独的操作导入的默认“导入”行为时,此参数很有用。导入选择默认值。例如,当表可能在加载表的过程中移动到另一个分区时,可以使用此参数。当表不是由导入操作创建的时,也会使用默认值。
Oracle Data Pump允许在对象存储中的转储文件中使用通配符
Oracle Data Pump通过允许使用通配符表示基于URL的转储文件名,简化了将多个转储文件导入Oracle自治数据库的过程。
当您需要从对象存储服务中导入多个转储文件时,基于URL的转储文件名中的通配符可以简化Oracle自主数据库的import命令。它可以减少键入,并减少转储文件名拼写错误的可能性。不要在存储桶名称组件中使用通配符。
Oracle Data Pump导入支持更多对象存储凭证
Oracle Data Pump导入使用针对Oracle自治数据库的新CREDENTIAL参数,支持DEFAULT_CREDENTIAL以外的对象存储凭证。
Oracle数据泵导入不再局限于在Oracle自治数据库中使用DEFAULT_CREDENTIAL。从Oracle Database 19c(并回移植到Oracle Database 18c版本18.3)开始,新的IMPDP客户端CLI CREDENTIAL参数接受在Oracle自治数据库中创建的任何Oracle Cloud Infrastructure(OCI)对象存储凭证。数据泵验证证书是否存在以及用户是否有权读取证书。任何错误都将返回给IMPDP客户端。
在线维护操作增强
在不同版本中,Oracle 持续增强在线维护操作,例如在 12.2 开始支持的Online Move、在线修改普通表为分区表等特性。
在19c 中,持续增强了智能的、细粒度的游标失效控制,将DDL操作对于游标失效的影响降至最低,例如,在 19c 中,comment on table的操作,将不会引起游标的失效。
针对分区维护的操作,例如Truncate分区等,Oracle 将进行细粒度的控制,和DDL操作无关的SQL将不受DDL失效影响。