Oracle 19c 新特性概要
本文归纳出一些工做中可能会用到的Oracle 19c新特性,全部新增功能的说明请参考新特性官方文档《database-new-features-guide》html
根据官方文档分为如下几个部分算法
- 应用开发
- 可用性
- 大数据和数据仓库
- 总体数据库
- 性能
- RAC和网格
- 安全
- 其余
1、 Application Development
1. Generalsql
1) Easy Connect Syntax Improvements数据库
轻松链接语法改进json
应用程序用于链接Oracle数据库的Easy Connect语法已获得扩展。此功能经过消除对Oracle Net链接参数文件(例如tnsnames.ora和sqlnet.ora)的须要,而且无需设置TNS_ADMIN环境变量,简化了常见链接用例的Oracle数据库应用程序部署和配置。api
2) Oracle Network Log File Segmentation缓存
Oracle网络日志文件分段安全
能够为Oracle网络组件(如Oracle Net Listener,CMAN和GSM)配置文本日志文件的最大大小和数量。此功能可防止日志文件大小不断增长的问题。网络
2. JSON
1) JSON-Object Mapping
JSON对象映射
此功能支持将JSON数据映射到SQL对象类型和集合类型。使得使用SQL对象和集合的程序更容易与基于JSON的应用程序进行交互。
2) JSON Update Operations
JSON更新操做
可使用新的SQL函数json_mergepatch以声明方式更新JSON文档。可使用单个语句将一个或多个更改应用于多个文档。此功能提升了JSON更新操做的灵活性。
3) Materialized View Support for Queries containing JSON_TABLE
物化视图支持包含JSON_TABLE的查询
物化视图查询重写已获得加强,所以具备JSON_EXISTS,JSON_VALUE和其余函数的查询能够利用包含JSON_TABLE函数的查询上建立的物化视图。
当表中的JSON文档包含数组时,此功能特别有用
3. SQL
DISTINCT option for LISTAGG aggregate
LISTAGG聚合的DISTINCT选项
使用新的DISTINCT关键字,能够在链接成单个字符串以前从指定的表达式中删除重复的值。这消除了在使用聚合LISTAGG函数以前建立复杂查询处理以查找不一样值的须要。
2、 Availability
1. General
1) Dynamically change Fast-Start Failover (FSFO) target
动态更改快速启动故障转移(FSFO)目标
目前,DBA必须禁用Fast_Start故障转移才能更改FSFO目标备用数据库。随着Oracle Database 12.2.0.1中多个FSFO目标的到来,这变得更加剧要。此新命令将容许用户动态地将FSFO目标备用数据库更改成目标列表中的另外一个备用数据库,而无需禁用FSFO。
2) Simplified Database Parameter Management in a Broker Configuration
简化Broker配置中的数据库参数管理
用户如今可使用SQL * Plus ALTER SYSTEM命令管理全部与Data Guard相关的参数设置,或者使用新的EDIT DATABASE ... SET PARAMETER命令管理DGMGRL中的全部Data Guard相关参数设置。DGMGRL界面中的参数更改将当即在目标数据库上执行。此外,若是须要,此新功能将容许用户使用ALL限定符修改Data Guard配置中全部数据库的参数,从而无需到每一个数据库并执行ALTER SYSTEM命令或为每一个数据库设置Broker属性使用多个EDIT PROPERTY命令。SHOW命令也已更新,以显示目标数据库中参数的当前设置。
消除数据库的Data Guard参数设置与Data Guard Broker的属性设置之间的不一致,经过容许它们根据须要经过SQL * Plus接口进行全部参数管理,简化数据库管理员对数据库参数的管理。
3) Oracle Data Guard Multi-Instance Redo Apply works with the In-Memory Column Store
Oracle Data Guard多实例redo应用可与In-Memory列存储一块儿使用
在Oracle Data Guard环境中,备库的日志应用速度一直是一个重要挑战,若是备库不可以及时跟上主库的步调,则可能影响备库的使用。
自Oracle 12.2 版本开始,支持多实例并行应用,这极大加快了恢复进度,在 18c 中,开始支持 In-Memory 列式存储,在 19c 中,并行应用开始支持 In-Memory列式存储。
如今能够在Active Data Guard备用数据库上同时启用Oracle数据库In-Memory列存储和Data Guard多实例redo应用。多实例redo应用将使用Active Data Guard备用数据库In-Memory列存储中的信息来尽量提升应用速度。之前这两个功能互相排斥。
4) Propagate Restore Points from Primary to Standby site
支持从主库到备库传播还原点
此前咱们能够在主库上定义正常还原点或保证还原点,以便在出现任何逻辑损坏问题时实现快速时间点恢复。可是,此还原点存储在控制文件中,并不会传播到备库。若是发生故障转移,备库将成为主库,而且还原点信息将丢失。
此功能可确保还原点从主库传播到备库,所以即便在故障转移后,还原点也可用,简化了故障转移后还原和恢复过程的复杂性。
5) Flashback Standby database when Primary database is flashed back
备库随主库闪回
闪回数据库将整个数据库移动到较旧的时间点,并使用RESETLOGS打开数据库。此前,若是主库闪回,则备库再也不与主库同步,须要手动来闪回备库到与主库相同的时间。现在引入了一个新参数(哪一个???文档中目前只找到须要 the standby is open and flashback database is enabled),该参数使备库可以在主库上执行闪回数据库时自动闪回。
经过在主数据库闪回时自动闪回备用数据库,减小了时间,精力和人为错误,从而加快了同步速度并下降了RTO(但一般咱们闪回备库…)。
6) Active Data Guard DML Redirection
Data Guard 备库DML自动重定向
在使用 ADG 做为备库进行读写分离部署时,可能由于应用的缘由,会有偶然的DML操做发送到备库上,在19c 中,Oracle 支持自动重定向备库 DML,具体执行步骤为:
更新会自动重定向到主库;
主库执行更新、产生和发送Redo日志到备库;
在Redo备库应用后,ADG会话会透明的看到更新信息的落地实施;
这一特性能够经过在系统级或者会话级设置参数 ADG_REDIRECT_DML 参数启用,经过这种方式,ADG 会话的 ACID 一致性得以保持,同时透明的支持『多数读,偶尔更新』应用的天然读写分离配置。
7) Clear Flashback logs periodically for increased FRA size predictability
按期清除闪回日志以提升FRA大小的可预测性
从19c开始,简化了FRA中的空间管理。Oracle数据库监视FRA中的闪回日志,并自动删除超出保留期的闪回日志。当保留期时,将当即删除超出保留期的闪回日志。
经过自动确保闪回日志不会过分使用保留所需的空间,能够对数据库的存储管理和运行情况产生整体积极影响。
8) PDB Recovery catalog
PDB恢复目录
支持了在目标数据库是PDB时与恢复目录的链接。
支持PDB做为目标数据库,而且可使用虚拟专用目录(VPC)用户更精细地控制在PDB级别执行备份和还原操做的权限。元数据视图也是有限的,所以VPC用户只能查看用户已被授予权限的数据。
9) New Parameters for tuning automatic outage resolution with Data Guard
使用Data Guard调整自动中断解决方案的新参数
Oracle Data Guard在主数据库和备用数据库上有多个进程,用于处理重作传输和归档,这些进程经过网络相互通讯。在某些故障状况下,网络挂起和断开链接或磁盘I / O问题,这些进程可能会挂起,可能致使重作传输和间隙解决的延迟。Data Guard有一个内部机制来检测这些挂起的进程并终止它们,从而容许正常的中断解决方案发生。在19c中,DBA能够经过使用两个新参数DATA_GUARD_MAX_IO_TIME和DATA_GUARD_MAX_LONGIO_TIME来调整此检测周期的等待时间,从而容许根据用户网络和磁盘I / O行为针对特定Data Guard配置调整等待时间。用户如今能够调整Oracle Data Guard自动中断解决方案以知足其特定需求。
10) Finer granularity Supplemental Logging
更精细的粒度补充记录
为逻辑备用或完整数据库复制要求设计/实现了补充日志记录。这会在仅复制表的子集的环境中增长没必要要的开销。细粒度的补充日志记录将为部分数据库复制用户提供一种方法,以禁用不感兴趣的表的补充日志记录,这样即便在数据库或模式级别启用了补充日志记录,也不存在不感兴趣的表的补充日志记录开销。
在数据库中只有一些表须要补充日志记录的状况下,使用此功能能够显着减小资源使用和重作生成方面的开销。例如,GoldenGate部分复制配置。
2. Sharding
1) Propagation of Parameter Settings Across Shards
跨越Shards的参数设置的传播
在Oracle Database 19c以前,数据库管理员必须在分片数据库中的每一个分片上配置ALTER SYSTEM参数设置。此功能容许管理员集中管理参数设置并将参数设置从分片目录传播到全部数据库分片,从而提供易管理性。
2) Generation of Unique Sequence Numbers Across Shards
跨越碎片生成惟一序列号
在Oracle Database 19c以前,若是您须要跨分片的惟一编号,则必须本身管理它。在19c中,Oracle Sharding容许您为具备惟一约束的非主键列的分片生成全局惟一的序列号,或者使用Sequence对象的任何其余用法,该对象在逻辑上应该是全局生成的分片数据库的全部分片中的一个对象惟一值,它由分片数据库处理。
当customer_id是分片键时,客户一般须要为非主键列生成惟一ID,例如order_id。对于这种状况,此功能容许您跨分片生成惟一的序列号,而不须要您管理应用程序中给定非主键列的全局惟一性。
3) Multiple Table Family Support for System-Managed Sharding
Oracle Sharding 特性的多表家族支持
在Oracle Sharding特性中,被分片的表称为 Sharded table,这些sharded table的集合称为表家族(Table Family),表家族之中的表具有父-子关系,一个表家族中没有任何父表的表叫作根表(root table),每一个表家族中只能有一个根表。表家族中的全部Sharded table都按照相同的sharding key(主键)来分片。
在12.2,在一个SDB中只支持一个表家族,在19c 中,SDB 中容许存在多个表家族,每一个经过不一样的 Sharding Key进行分片,这是 Sharding 特性的一个重要加强,有了 Multiple Table Families 的支持,Sharding 才可能找到更多的应用场景
4) Support for Multiple PDB-Shards in the Same CDB
支持同一CDB中的多个PDB-Shards
18c支持CDB中的一个PDB分片。19c中,Oracle Sharding容许您在CDB中使用多个PDB用于分片或分片目录数据库,但有一些限制。
5) Support for Multi-Shard Query Coordinators on Shard Catalog Standbys
支持分片目录备用数据库上的多分片查询协调器
在19c以前,只有主分片目录数据库能够用做多分片查询协调器。在19c中,您还能够在分片目录数据库的Oracle Active Data Guard备用数据库上启用多分片查询协调器。提升了多分片查询工做负载的可伸缩性和可用性。
3、 Big Data and Data Warehousing
1. Automatic Indexing
自动化索引建立和实施
对于关系型数据库来讲,索引是使得查询加速的重要手段,而如何设计和建立有效的索引,长期以来是一项复杂的任务。
在 Oracle 19c 中,自动化索引建立和实施技术被引入进来,Oracle 经过模拟人工索引的思路,创建了内置的专家系统。数据库内置的算法将会经过捕获、识别、验证、决策、在线验证、监控的全流程管控索引自动化的过程。这一特性将会自动帮助用户建立有效的索引,并经过提早验证确保其性能和有效性,而且在实施以后进行监控,这一特效将极大缓解数据库索引维护工做。
自动化还将删除由新建立的索引(逻辑合并)废弃的索引,并删除自动建立但长时间未使用的索引。
2. Bitmap based count distinct SQL Function
基于位图的COUNT DISTINCT SQL函数
在 19c 中,SQL 功能得到了进一步的加强,这其中包括对于 COUNT DISTINCT的进一步优化,在12c中引入的近似 Distinct 操做已经能够为特定SQL带来极大性能提高,如今基于位图的COUNT DISTINCT 操做继续为查询加速
例如,以下案例,经过物化视图的自动改写,能够实现显著的性能提高。
3. High-Frequency Automatic Optimizer Statistics Collection
高频自动优化器统计收集
您能够配置轻量级,高频率的自动任务,按期收集过期对象的优化程序统计信息。在执行DBMS_STATS统计信息收集做业之间,统计信息可能会过期。经过更频繁地收集统计信息,优化程序能够生成更优化的计划。
4. Automatic Resolution of SQL Plan Regressions
自动化的SQL执行计划管理
在19c 中,数据库缺省的就会启用对于全部可重用SQL的执行计划捕获(固然SYS系统Schema的SQL除外),而后进行自动的执行计划评估,评估能够针对AWR中的TOP SQL、SGA、STS中的SQL进行。
若是被评估的执行计划优于当前执行计划(通常是要有效率 50%以上的提高),会被加入到执行计划基线库中,做为后续的执行选择,而不佳的执行计划则会被标记为不可接受。
5. Hybrid Partitioned Tables
Oracle的混合分区表支持
在 19c 中,Oracle 加强了分区特性,能够将外部对象存储上的文件,之外部表的方式连接到分区中,造成混合分区表,借助这个特性,Oracle 将数据库内外整合打通,冷数据能够剥离到外部存储,热数据在数据库中在线存储。
这个特性借助了外部表的特性实现,如下是一个示例:
CREATE TABLE orders ( order_idnumber,
order_dateDATE,…)
EXTERNAL PARTITION ATTRIBUTES
( TYPE oracle_loaderDEFAULTDIRECTORY data_dir
ACCESS PARAMETERS (..) REJECT LIMIT unlimited)
PARTITION BY RANGE(order_date)
( partition q1_2015 values less than(‘2014-10-01’)
EXTERNAL LOCATION (‘order_q1_2015.csv’),
partition q2_2015 values less than (‘2015-01-01’),
partition q3_2015 values less than (‘2015-04-01’),
partition q4_2015 values less than (‘2015-07-01’));
4、 Database Overall
1. Automated install, config, and patch
1) Create a duplicate of a non-CDB or an Oracle RAC database using DBCA in silent mode
使用DBCA以静默方式建立非CDB或Oracle RAC数据库的副本
您如今可使用DBCA 的createDuplicateDB命令以静默方式建立非CDB或Oracle RAC数据库的副本。此功能能够复制数据库,从而便于开发人员处理数据库的相同副本。
2) Relocate a PDB to another CDB using DBCA in silent mode
在静默模式下使用DBCA将PDB重定位到另外一个CDB
3) Create a PDB by cloning a remote PDB using DBCA in silent mode
在静默模式下使用DBCA克隆远程PDB来建立PDB
您如今能够经过使用DBCA 的createPluggableDatabase命令的createFromRemotePDB参数以静默方式克隆远程PDB来建立PDB
4) Simplified Image Based Oracle Database Client Installation
基于简化映像的Oracle数据库客户端安装
从Oracle Database 19c开始,经过基于映像的安装简化了Oracle Database Client软件的安装和配置。
要安装Oracle数据库客户端,请建立新的Oracle主目录,将映像文件解压缩到新建立的Oracle主目录中,而后运行安装向导以启动Oracle Database Client安装和配置。
与Oracle数据库和Oracle Grid Infrastructure映像文件安装同样,Oracle数据库客户端映像安装可简化Oracle数据库客户端安装并确保最佳实践部署。Oracle Database Client安装二进制文件继续以传统格式提供为非映像zip文件。
5) Root Scripts Automation Support for Oracle Database Installation
Root脚本自动化支持Oracle数据库安装
从Oracle Database 19c开始,数据库安装程序或设置向导提供了一些选项,用于设置在数据库安装期间根据须要自动运行根配置脚本的权限。您能够继续手动运行根配置脚本。
设置root配置脚本的权限以便在无需用户干预的状况下运行能够简化数据库安装并帮助避免意外的权限错误。
5、 Performance
1. Quarantine for SQL statements consuming excessive system resources
隔离消耗过多系统资源的SQL语句
资源管理器会终止及自动隔离过分消耗CPU和I / O资源而终止的SQL语句,被隔离的SQL语句再次执行时会被阻止。
2. Resource Manager Automatically Enabled for Database In-Memory
数据库In-Memory自动启用资源管理器
当INMEMORY_SIZE大于0时,将自动启用Oracle数据库资源管理器。
3. Automatic Database Diagnostic Monitor (ADDM) Support for Pluggable Databases (PDBs)
PDB中支持ADDM
您如今能够在多租户环境中对PDB使用ADDM分析。PDB级别的ADDM分析使您可以有效地调整PDB以得到更好的性能。
4. Real-Time SQL Monitoring for Developers
面向开发人员的实时SQL监控
没有SELECT_CATALOG_ROLE的数据库用户能够为本身的SQL语句生成和查看SQL Monitor报告,包括执行计划和性能指标。
数据库开发人员的主要职责是编写和调优SQL语句。访问SQL Monitor报告使开发人员无需数据库管理员权限便可执行这些任务。
5. Workload Capture and Replay in a PDB
PDB中的工做负载捕获和重放
Oracle Real Application Testing旨在捕获和重放根容器数据库(CDB)级别的多租户数据库。从19c开始,您能够从单个可插拔数据库PDB中捕获和重放工做负载。
6. Memoptimized Rowstore - Fast Ingest
内存优化行存储 – 快速抓取
此功能可让IoT等应用程序快速将数据插入19c,以最少的事务开销处理大量小事务。使用快速抓取功能的插入操做会临时将数据缓冲在大池中,而后以延迟的异步方式批量写入磁盘。
6、 RAC and Grid
1. Zero-Downtime Oracle Grid Infrastructure Patching
零停机Oracle Grid Infrastructure补丁
零停机Oracle Grid Infrastructure Patching能够在不中断数据库操做的状况下修补Oracle Grid Infrastructure。修补程序以非滚动方式应用,一次修补一个节点,同时节点上的数据库实例保持运行。零停机Oracle Grid Infrastructure Patching支持具备两个或更多节点的集群上的Oracle RAC数据库。
2. Fine-Grained Single-Instance PDB Patching
细粒度单实例PDB打补丁
您能够在Multitenant环境中修补单个PDB,从而使错误修复仅在特定PDB上,而不是在整个CDB上进行。
7、 Security
1. New ALTER SYSTEM clause FLUSH PASSWORDFILE_METADATA_CACHE
新的ALTER SYSTEM子句FLUSH PASSWORDFILE_METADATA_CACHE
ALTER SYSTEM的FLUSH PASSWORDFILE_METADATA_CACHE子句用于刷新拥有最新详细信息的数据库密码文件元数据高速缓存。能够经过查询V$PASSWORDFILE_INFO视图来检索数据库密码文件的最新详细信息。
更改数据库密码文件名或位置时,此功能很是有用
2. Support for Additional Algorithms for Offline Tablespace Encryption
离线表空间新增长密算法支持
在之前的版本中,离线表空间加密仅支持AES128加密算法。除了AES128以外,此版本还引入了对AES19二、AES25六、ARIA、GOST和3DES加密算法的支持。
3. PDB_GUID as Audit Record Field Name for SYSLOG and the Windows Event Viewer
PDB_GUID做为SYSLOG和Windows事件查看器的审计记录字段名称
SYSLOG和Windows事件查看器的审计记录字段如今有一个新字段PDB_GUID,用于标识与统一审计跟踪记录关联的可插入数据库。
8、 其余
1. 新增参数
- ADG_REDIRECT_DML
- DATA_GUARD_MAX_IO_TIME
- DATA_GUARD_MAX_LONGIO_TIME
- ENABLE_IMC_WITH_MIRA
- LOB_SIGNATURE_ENABLE
- MAX_DATAPUMP_PARALLEL_PER_JOB
2. 新增数据字典
- ALL_TRIGGERS_AE, DBA_TRIGGERS_AE, and USER_TRIGGERS_AE
- DBA_AUTO_INDEX_CONFIG
- DBA_AUTO_STAT_EXECUTIONS
- DBA_PDB_SNAPSHOTFILE
- DBA_RAT_CAPTURE_SCHEMA_INFO
- DBA_REGISTRY_BACKPORTS
- DBA_SQL_QUARANTINE
3. 新增动态性能视图
- GV$AQ_PARTITION_STATS and V$AQ_PARTITION_STATS
- GV$ASM_ACFSAUTORESIZE and V$ASM_ACFSAUTORESIZE
- GV$ASM_DBCLONE_INFO and V$ASM_DBCLONE_INFO
- GV$MEMOPTIMIZE_WRITE_AREA and V$MEMOPTIMIZE_WRITE_AREA
- GV$SQL_TESTCASES and V$SQL_TESTCASES
4. 过时特性(下个版本可能会不支持)
- CLUSTER_DATABASE_INSTANCES
5. 再也不支持的特性
- The MAX_CONNECTIONS attribute of the LOG_ARCHIVE_DEST_n initialization parameter, for Oracle Data Guard redo transport
- The EXAFUSION_ENABLED initialization parameter
- Oracle Streams is desupported. As a result, the following views are desupported:
l ALL_STREAMS_COLUMNS
l ALL_STREAMS_MESSAGE_RULES
l ALL_STREAMS_RULES
l ALL_STREAMS_UNSUPPORTED
l DBA_STREAMS_ADMINISTRATOR
l DBA_STREAMS_COLUMNS
l DBA_STREAMS_MESSAGE_RULES
l DBA_STREAMS_RULES
l DBA_STREAMS_SPLIT_MERGE
l DBA_STREAMS_SPLIT_MERGE_HIST
l DBA_STREAMS_STMTS
l DBA_STREAMS_STMT_HANDLERS
l DBA_STREAMS_TRANSFORMATIONS
l DBA_STREAMS_UNSUPPORTED
l V$STREAMS_CAPTURE
l V$STREAMS_MESSAGE_TRACKING
l V$STREAMS_TRANSACTION
参考
https://docs.oracle.com/en/database/oracle/oracle-database/19/newft/new-features.html
https://blog.csdn.net/u011277123/article/details/78179897
http://blog.itpub.net/35489/viewspace-1171932/
https://www.oracle.com/technetwork/cn/tutorials/smiley-fsfo-088047-zhs.html