eygle.com   eygle.com
eygle.com eygle
eygle.com  
 

August 14, 2021

Oracle Database 21c发布,22c不会发布,23c 将是长期版本

在经历了几次跳票之后,Oracle Database 21c 于8月13日发布,首先发布的是Linux版本。可以从官方网站下载。21c整合了原计划2020年发布的 20c 版本,原计划 2021年上半年发布,因为疫情等原因推迟了发布。而且据悉,22c 版本号可能取消,23c 将是下一个可见版本。

ES 20210814 at 10.00.14.png

发布版本是 21.3 ,Linux x86-64 是第一个私有发布版本。
image.png

此前关于 21c 新特性的总结:
Oracle 21c 十大新特性一览
Oracle 21c 十小新特性一览

官网下载地址:
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html

Oracle 的版本计划已经更新:
dbroadmapnew.png

Oracle 官网报道:
ES 20210814 at 09.57.42.png

体验 21c,可以开始了。

Posted by eygle at 10:26 PM | Permalink | Oracle12c/11g (174)

January 12, 2021

Oracle 21c 新特性:Object Activity Tracking System 对象活动跟踪系统

在 Oracle Database 21c 中,OATS 新特性引入进来,OATS 是 Object Activity Tracking System 的缩写,翻译过来就是:对象活动跟踪系统。

对象活动跟踪系统(OATS)跟踪各类数据库对象的使用情况。使用情况包括访问、数据操作或刷新等操作。自动跟踪数据库对象的使用情况,使客户能够更好地了解应用程序是如何查询和操作数据库及其对象的。Oracle数据库的内部功能(如Access Advisors或Automatic Materialized Views)也能利用OATS并从中受益。

DBMS_ACTIVITY 包作为工具,通过函数和程序,允许授权用户控制OATS捕获的活动信息。这个软件包由SYS拥有,所以非SYS用户需要有EXECUTE软件包的权限。具有DBA角色的用户被授予该软件包的EXECUTE权限。

SQL> desc DBMS_ACTIVITY

PROCEDURE CONFIGURE

Argument Name Type In/Out Default?

------------------------------ ----------------------- ------ --------

PARAMETER_NAME VARCHAR2 IN

PARAMETER_VALUE VARCHAR2 IN

CON_DBNAME VARCHAR2 IN DEFAULT

FUNCTION CREATE_SNAPSHOT RETURNS NUMBER

Argument Name Type In/Out Default?

------------------------------ ----------------------- ------ --------

ALL_INSTANCES BOOLEAN IN DEFAULT

CON_DBNAME VARCHAR2 IN DEFAULT

FUNCTION DELETE_SNAPSHOTS RETURNS BOOLEAN

Argument Name Type In/Out Default?

------------------------------ ----------------------- ------ --------

BEFORE_SNAP_ID NUMBER IN

CON_DBNAME VARCHAR2 IN DEFAULT

FUNCTION DELETE_SNAPSHOTS RETURNS BOOLEAN

Argument Name Type In/Out Default?

------------------------------ ----------------------- ------ --------

BEFORE_TIME TIMESTAMP IN

CON_DBNAME VARCHAR2 IN DEFAULT

对象活动跟踪系统(OATS)是一种基于RDBMS的通用跟踪服务,它提供与不同数据库对象相关的各种类型的活动信息。一个活动代表了用户或系统发起的动作,如扫描或加载表。大多数活动是以频率(即在固定的时间间隔内的计数)的形式进行跟踪的,如15分钟内扫描一个表的次数。

其活动被跟踪的数据库对象包括表、列、分区、索引、物化视图和区域图(部分功能尚未实现)。不同类型的活动包括行插入、删除和更新、列更新、表和分区扫描、加载和截断、索引范围扫描和键查找、只访问索引(不访问行)、索引更新(即删除/插入键)、索引重建、分区维护操作(创建、删除、移动、拆分、合并和交换)、物化视图重写和刷新以及区域地图修剪。

另一类重要的活动与辅助结构(如MV、索引和区域地图)的使用或不使用有关。

根据活动的类型,跟踪技术可以是精确的、近似的或概率的。大多数活动主要是出于效率的原因而进行近似跟踪。

根据活动的类型和不同客户的使用情况,某种跟踪技术比其他技术更适合。例如,计数器对于跟踪索引和物化视图的使用情况很有用。计数器在固定的时间间隔内进行维护,以便捕获对象随时间的使用模式。同样的技术可以用来跟踪表列的更新活动,为每个表列维护更新计数器。在位向量中设置位是另一种形式的跟踪技术,它适用于记录某一活动在一个时间间隔内的发生情况,而不说该活动发生了多少次。

参考:

https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/DBMS_ACTIVITY.html

Posted by eygle at 10:08 AM | Permalink | Oracle12c/11g (174)

December 11, 2020

Oracle Database 21c 十小新特性一览 - New Features

Oracle Database 21c 已经在云上提供,线下版本将于2021年上半年提供,这标志着 Oracle 进入了下一个版本周期的创新发布。

关于 Oracle 21c 其实就相当于 Oracle 20c,因为 20c从未进入公众可用的版本发布。在官方的版本计划中,20c 已经被移出,并做出如下声明:

Oracle考虑到2020年我们的客户将面临前所未有的经济和业务中断。我们决定不将Database 20c Preview版本升级为General Availability。 相反,我们将所有20c功能都合并到21c版本中,并使21c在我们的"自制数据库免费层"中可用,以便所有人都可以免费试用驱动新功能和增强功能。

image.png

Oracle Database 21c 十大新特性一览 - New Features 一文中,我列举了自 20c 开始的十大新特性,在本文中,我将再次遴选10个小特性,与读者分享,相应的,我将本文命名为:Oracle Database 21c 十小新特性一览。

1. In-Memory 基础级支持

Oracle In-Memory 通过列式存储,将行列融于RDBMS一体,从而加速 OLTP 和 OLAP 混合负载,自 Oracle 21c ,Oracle 推出了 In-Memory 特性的基础级功能,通过参数 INMEMORY_SIZE 设置,对 16GB以下的使用免费。从而降低了用户接触这一个性的门槛。
PIC 18.jpg

下表展示了这一新特性的设置和使用范例:
PIC 25.jpg

2. Sharding 的增强

在21c中,Oracle的 Sharding 选件进一步增强,可以通过 GDS 执行全局的备份和恢复,还可以通过 Advisor 建议助手,进行现有模式的分析,并提出 Sharding 的分片建议。
PIC 23.jpg

3. 原生的 JavaScript 支持

在原生的 JSON 数据类型支持之后,21c 还支持了数据库内部的 Javascript 代码执行,通过 DBMS_MLE 的自动引擎转换,将 javascript 的判断直接在数据库内部完成,减少了向前端传输和页面计算的过程,大大提升了性能,简化了开发。
PIC 19.jpg

4. 备库的结果集缓存支持

在21c中,主库的结果集缓存,可以在备库获得同样的支持,Result Cache 在合适的场景下,能够极大的提升复杂计算的性能,现在 Data Gaurd 也具备了这一能力:
PIC 17.jpg

5. 强制只读的 Oracle Home

在 21c 中,Oracle Home 变得强制只读,所有动态可以变化的文件,都独立在 ORACLE_HOME 之外,通过这一改进,更容易实现对于 Oracle Home 的管理、复制等工作:
PIC 15.jpg

6. 诊断控制的增强

众所周知,在 Oracle 数据库中可以设置很多诊断事件,对数据库的工作原理做出干预,而这些设置又极有可能带来数据库管理的不安定因素,所以 DIAGNOSTICS_CONTROL 参数被引入进来,从而对这些设置做出 IGNORE 或者其他判定。
PIC 16.jpg

7. 表达式参数

在 Oracle 21c 中可以指定一个表达式作为初始化参数的值。初始化参数的最佳值可能取决于环境特性,如系统配置、运行时决策及其他参数值

在以前的版本中,在设置初始化参数时需要指定一个绝对值,这意味着维持其最佳值需要手动监督和调整,从Oracle数据库21c开始,可以指定一个表达式作为某些初始化参数的值,这使得数据库能够根据环境变化自动调整参数值。这在 Oracle Autonomous Database 环境中特别有用

在 Oracle Real Application Cluster (Oracle RAC) 环境中,为参数值指定表达式也很有用。可以在所有 Oracle RAC 实例中为参数值指定相同的表达式,但该表达式将在每个实例的基础上利用当前实例的环境特征进行评估。这允许数据库对每个 Oracle RAC 实例的参数值进行微调。

PIC 20.jpg

8. ANSI SQL表达式的 EXCEPT 支持

不同版本中,对于 ANSI 标注的支持,Oracle 也是不断增强,在21中,集合操作关键字的 EXCEPT 被支持。
PIC 22.jpg

9. 关注日志 - Attention Log

在告警日志之外,21c 引入了新的日志成员 -关注日志(Attention Log),在这个日志中明确列出需要特别注意、关注的重要数据库事件,通过这个日志,用户可以及时的获得经过过滤的重要信息:
PIC 24.jpg

这类日志的示范信息如下:

{
  "WARNING"      : "Parameter PGA_AGGREGATE_LIMIT specified is high",
  "URGENCY"      : "IMMEDIATE",
  "INFO"         : "WARNING: pga_aggregate_limit value is too high for the amount of physical memory on the system PGA_AGGREGATE_LIMIT is 2048 MB PGA_AGGREGATE_TARGET is 29 MB.
 physical memory size is 7042 MB limit based on physical memory and SGA usage is 1218 MB SGA_MAX_SIZE is 5120 MB ",
  "CAUSE"        : "Memory parameter specified for this instance is high",
  "ACTION"       : "Check alert log or trace file for more information relating to instance configuration, reconfigure the parameter and restart the instance",
  "CLASS"        : "CDB Instance / CDB ADMINISTRATOR / AL-2000",
  "TIME"         : "2020-06-24T04:25:35.334-07:00"
}

10. SQL*Net 诊断增强

从Oracle Database 21c开始,每个网络连接都可以通过连接标识符进行标识。连接标识符唯一地标识了不同网络元素的跟踪和日志中的连接,并有助于关联来自这些元素的诊断数据。

当SQL * Net连接具有多个跃点时,例如从客户端到Oracle Connection Manager(CMAN),再到服务器,则很难将现有日志和跟踪中的诊断信息关联起来。但是,有了连接标识符,您现在可以轻松地关联诊断,跟踪网络数据流量并解决连接错误。

连接标识符由两个部分组成,即CONNECTION_ID和CONNECTION_ID_PREFIX。 CONNECTION_ID参数包含一个唯一值,该值在连接始于客户端时生成。 CONNECTION_ID_PREFIX是添加到连接标识符的特定于应用程序的前缀参数。
PIC 26.jpg

总结

一如既往,Oracle 21c 在细节上进行了很多增强,很多时候,于细微处方见差异,唯有细致入微才能够成就品质,这也蕴含了四十年时光、2000万行代码的触角延伸,管中窥豹与读者分享。

Posted by eygle at 1:50 PM | Permalink | Oracle12c/11g (174)

December 9, 2020

Oracle Database 21c 十大新特性一览 - New Features

Oracle 已经在官网上线了关于 Oracle Database 21c 的在线文档,这让所有关于 Oracle 数据库的用户心中一惊,转眼 2020年已经接近尾声,Oracle 数据库又将进入下一个版本周期。

然而我们必须和大家进一步梳理一下,Oracle的版本变化,并且明确:Oracle 21c 其实就相当于 Oracle 20c,因为 20c从未进入公众可用的版本发布。

在官方的版本计划中,20c 已经被移出,并做出如下声明:

Oracle考虑到2020年我们的客户将面临前所未有的经济和业务中断。我们决定不将Database 20c Preview版本升级为General Availability。 相反,我们将所有20c功能都合并到21c版本中,并使21c在我们的"自制数据库免费层"中可用,以便所有人都可以免费试用驱动新功能和增强功能。

image.png

Oracle 21c 在 Oracle CLoud上,在2020年12月8日可用,在企业级公众版本将于 2021年上半年发布。现在的年度版本被称为『创新版本』,仅作有限的支持,有别于长期支持版本。

结合 Oracle 20c 和 21c 的革新,我们再次整理这两个版本中,引人瞩目的十大新特性,与客户和读者朋友分享。

1. 原生的区块链支持 - Native Blockchain Tables

随着区块链技术的不断成熟和发展,Oracle 在其多模的数据库支持中,引入了原生的区块链表支持。在 21c 中数据库中可以通过 blockchain 关键字来创建区块链表:

CREATE Blockchain TABLE <blockchain_table_name>;

很多客户希望在不涉及多个组织的情况下,利用区块链的防篡改和不可否认属性,区块链表使客户可以在需要高度防篡改的数据管理,而又无需在多个组织中分布分类帐或依靠分散的信任模型时使用Oracle数据库。

为了遵循区块链的可信和安全机制,区块链表只能INSERT 记录,记录之间通过 Hash 算法进行链接,不能修改,同时链可以被多方参与者验证。区块链表,可以和其他常规表进行关联,进行事务处理或者查询。
PIC 2.jpg

区块链表,在创建时可以指定保护的周期属性,例如3年内不可删除等,以建立数据生命周期管理。

2. 持久化内存存储支持 - Persistent Memory Store

自 Oracle 19c 开始,Oracle就已经开始修改程序以更好的配合持久化内存,提升数据库性能。

在21c中,Oracle 明确支持了持久化内存 - Persistent Memory,虽然目前发布的信息是在Exadata中支持,但是软件的提升是通过的,在各类一体机中,或者是传统架构中使用持久化内存是毫无障碍的。

PIC 3.jpg

持久化内存的引入,让 Oracle 的存储多达 6 级:SATA、SAS、SSD、Flash、PMEM、RAM,冷热数据分离,分层存储,可以进行更加精细化的架构设计。整体架构提供小于 19个微秒的IO延时。

在Oracle新发布的 Exadata X8M 一体机中,100Gb的以太网和RoCE获得支持,这是第一次在Oracle一体机中引入了基于RoCE的架构;

存储服务器上,通过PMEM在Flash之前进行加速,RoCE和PMEM提供了极速性能;

3. SQL的宏支持 - SQL Macro

宏的作用在于让SQL获得进一步的概括和抽象能力,允许开发者将复杂的处理逻辑通过宏进行定义,然后在后续程序处理中可以反复引用这一定义。

在 21c 中引入的 SQL Macro 支持两种宏类型,Scalar 和 Table 类型。

  1. SCALR 表达式可以用于 SELECT 列表、WHERE/HAVING、GROUP BY/ORDER BY子句;

  2. TABLE 表达式可以用于 FROM 语句。

PIC 14.jpg

4. 原生的 JSON 数据类型支持

12.1.0.2 引入JSON支持,允许将JSON存储在varchar2或LOB(CLOB或BLOB)中,可以利用 Schemaless 设计模型所提供的灵活性来构建应用程序,但又能从Oracle数据库的功能中受益。

可以使用标准SQL查询JSON文档,利用高级分析功能,对单个属性或整个文档进行索引,并行处理数十亿个JSON文档。还可以通过使用Java、Node.js、Python、C语言和REST的SODA API来访问Oracle数据库,将其视为NoSQL数据库。

在21c中,Native 数据类型 "JSON "改进了对JSON的支持。在读取或更新操作时不必对JSON进行解析,而只在插入时才进行解析,JSON以内部二进制格式保存,这使得访问速度更快。读取和更新速度提高了45倍,对非常大的JSON文档的更新速度提高了2030倍。
新的函数JSON_TRANSFORM,使得在一次操作中更新和删除文档中的多个属性变得更加简单。

PIC 13.jpg

5. SQL新特性和函数扩展 - Extensions

在 Oracle 21c中,关于SQL的函数扩展很多,包括对于 ANSI 2011 标准的部分支持,进一步的提升了 SQL 的处理能力。

在分析计算中,21c 提供了两种新的分布聚类算法,偏态 - SKEWNESS、峰度 - KURTOSIS,通过这两个算法,可以对给定数据进行更丰富的分布计算,新特性支持物化视图,遵循和方差(VARIANCE)相同的语义。

PIC 5.jpg

在21c中,Oracle 还增加了 CHECKSUM 函数,用于检测数据的完整性,这个函数可以用于替代 DBMS_SQLHASH.GETHASH 函数,DBA不必再为此进行单独授权。

新的位运算符也被引入,21c 中支持的新的位运算包括:BIT_AND_AGG、BIT_OR_AGG、BIT_XOR_AGG 。

对于分析函数,Oracle 21c 扩展了窗口边界,通过 GROUPS 关键字可以进行特定分组数据的计数。

关键字GROUPS强调与分组查询的关系,使用GROUPS关键字,我们可以回答诸如,每个交易帐号执行"购买"的最后五个交易日中,花费的金额和 以及 购买的不同股票代码的数量等。

6. 自动化的In-Memory 管理 - Self-Managing In-Memory

In-Memory 技术引入之后,为Oracle数据库带来了基于内存的列式存储能力,支持 OLTP 和 OLAP 混合的计算。

在 21c 中,Oracle 支持了自主的In-Memory 管理,通过一个简单的初始化参数 inmemory_automatic_level 设置,DBA将不再需要人工指定将哪些数据表放置在内存中,数据库将自动判断需要将哪些对象加入或驱逐出In-Memory的列式存储中。

PIC 6.jpg

内存对象的管理,是通过数据库内置的机器学习算法自动实现的,并且数据库可以进一步的自动压缩较少访问的内存列数据。

inmemory_automatic_level = HIGH 设置,可以用于指定高度的自动的内存管理级别。

7. 广泛的机器学习算法和AutoML支持

在Oracle 21c中,更多的机器学习算法被加入进来,实现了更广泛的机器学习算法支持。

极限梯度助推树 - eXtreme Gradient Boosting Trees(XGBoost) 的数据库实现,以及各种算法,如分类(Classification)、回归(regression)、排行(ranking)、生存分析(survial analysitic)等;

MSET-SPRT 支持传感器、物联网数据源的异常检测等,非线性、非参数异常检测ML技术;
PIC 7.jpg

此外,Oracle机器学习算法支持各种语言,例如 OML4SQL、OML4Py、OML4R,其中AutoML 针对 Python 提供了全面支持。

8. 多租户细粒度资源模型 - New Resource Modeling Scheme

在21c之前,多租户的数据库管理是服务驱动的,通过服务来决定PDB的资源放置,PDB的开启也是通过服务来进行隐式驱动的。

在集群环境中,这就存在一个问题,PDB 可能被放置在某个资源紧张的服务器上,服务驱动的模型并不完善。

在 21c 中,Oracle 引入了细粒度的资源模型,将负载和 PDB 的重要性等引入管理视角。例如,用户可以通过Cardinality 和 Rank 定义,改变 PDB 的优先级,在数据库启动时,优先打开优先级别高的PDB。

PIC 8.jpg

除此之外,在 PDB 打开之前,数据库会检查主机运行负载、可用性、CPU数量和CPU速度等信息,以科学判定应该在什么节点以什么顺序启动PDB。

关于多租户的另外一个改变是:在 21c 中,Non-CDB 模式将不再被支持(可以使用非多租户环境,但是没有官方支持),这将强制推动用户使用多租户特性。
PIC 12.jpg

在 Oracle 19c 的授权文件中,有这样的描述:你可以使用 3 个PDB的多租户环境而不需要License,超过 3个 PDB则需要额外的授权。

"For all offerings, if you are not licensed for Oracle Multitenant, then you may have up to 3 PDBs in a given container database at any time."

9. 零影响的计划停机维护 - Zero Downtime for Planned Outages

在 Oracle 不同版本的不断演进中,一直在加强数据库的可用性能力。在 21c 中,对于计划停机维护或者滚动升级等,Oracle 通过 Smart DRM 等特性以实现对应用的零影响。

对于维护操作,数据库可以在实例关闭前进行动态的资源重分配,这一特性被称为 Smart DRM,通过GRD的动态资源重组织,重新选出的Master节点不需要进行任何的恢复和维护,对于应用做到了完全无感知、无影响。

PIC 10.jpg

10. In-Memory 的 Spatial 和 Text 支持

针对 Oracle 数据库内置的多模特性,地理信息 -Spatial 和 全文检索 - Text 组件,在 21c 中,通过 In-Memory 的内存特性,获得了进一步的支持。

对于空间数据,Oracle 在内存中为空间列增加空间摘要信息(仅限于内存中,无需外部存储),通过 SIMD 矢量快速过滤、替换 R-Tree 索引等手段,以加速空间数据查询检索,可以将查询速度提升10倍。

image.png

针对全文检索(Text),在内存中将倒排索引添加到每个文本列,同时通过将单词映射到包含单词的文档,以内存替换原来的磁盘索引,从而加速全文检索的性能。通过结合关系数据和文本的混合查询,全文检索可以获得 3倍以上的性能提升。

Oracle 数据库仍然在持续创新,沿着 多模、软硬结合、智能化 等方向深入演化,在 2021年发布的年度创新版本 Oracle Database 21c 相信还会引发大家的广泛关注。

Posted by eygle at 11:34 AM | Permalink | Oracle12c/11g (174)

October 22, 2020

解决Mac下远程cannot change locale (UTF-8) No such file or directory

果然所有问题都是有答案的,Mac 上 ssh 这个问题好长时间,早有人提供方法分析。收录:

问题描述

  • Mac下设置第一语言为English
  • 在Terminal或者iTerm2上登录远端Linux时,Linux的prompt提示 setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
  • 登录Linux后无法正常显示中文

原因

  1. Mac下设置为英文后,locale字符集默认是"C",Terminal或者iTerm2中有选项会自动设置LC_CTYPE或者LC_LANG为UTF-8
  2. Mac下ssh客户端的配置文件/etc/ssh/ssh_config中,会尝试设置本地的LANG到远端服务器中。
  3. 远端Linux服务器,没有UTF-8的字符集,就导致了setlocale的警报

解决办法

为了登录而来,修改每个服务器的字符集,操作上是不可行的。最简单的办法就是修改Mac本地的ssh客户端配置,不要将LANG设置发送到服务器端。
打开ssh配置文件,sudo vim /etc/ssh/ssh_config, 注释掉如下几行

1
2
Host *
SendEnv LANG LC_*

重新ssh到服务器,就不会再有setlocale的告警了。

Posted by eygle at 11:48 AM | Permalink | FAQ (269)

近期发表

  • 2020 :国产数据库名录和产品信息一览-墨天轮 - July 28, 2020
  • Oracle FAQ:关于 TDE 透明数据加密 11g 的常见问题-墨天轮 - July 27, 2020
  • CRM 王者之战:四十年的茅台和二十年的 Salesforce-墨天轮 - July 22, 2020
  • 循序渐进 openGauss : 构建一个基本的函数 Loop 测试Update循环-墨天轮 - July 22, 2020
  • Oracle发布7月份安全公告,360安全大脑测绘云再获Oracle官方致谢-墨天轮 - July 22, 2020
  • Oracle 数据库后台进程列表大全(更新到 19c)-墨天轮 - July 21, 2020
  • Oracle创新版本计划:仅提供两年高级支持 21c 排上发布日程-墨天轮 - July 21, 2020
  • 【2020数据技术嘉年华】问卷:签名图书,限量T恤,等你来拿! - July 17, 2020
  • 中国移动国产OLTP数据库中标公告:南大金仓阿里,万里开源中兴分获大单 - July 17, 2020
  • 循序渐进 openGauss : pg_relation_filepath 获取表文件的具体位置-墨天轮 - July 17, 2020


  • CopyRight © 2004 ~ 2012 eygle.com, All rights reserved.