暂无图片
暂无图片
15
暂无图片
暂无图片
暂无图片

Oracle Database 23c 十小新特性速览:从Schema权限到4096列支持

原创 盖国强 2022-09-27
4868

在最近刚刚举行的 DOAG 2022 会议上,Oracle 的产品经理 Gerald Venzl 披露了 Oracle Database 23c 的一系列新特性。以下我将遴选10个有意思的特性,凑成一组速览和大家分享。

1. 不带FROM子句的SELECT 查询

我们知道,在 MogDB 数据库中,SELECT 是可以不跟 FROM 子句实现一系列的查询功能,例如:

MogDB=#select 2^10;
 ?column? 
----------
     1024
(1 row)

MogDB=#select 9*9;
 ?column? 
----------
       81
(1 row)

在 Oracle 23c 中,第一次实现了不带From子句的查询,因而原来大量依赖 Dual 表的查询,可以松下了一口气:
image.png

来 2022 数据技术嘉年华大会 https://www.modb.pro/dtc2022 ,了解数据库的新鲜事!
image.png

2. 单表支持4096列

我们知道 MogDB 单表最大支持 1600 列,Oracle 此前版本单表支持 1000列。

在23c中,单表支持列数量扩展到 4096 列。启用这一个特性需要将兼容性参数设置为23.0.0,同时将 Max_columns设置为 Extended:

alter system set MAX_COLUMNS=EXTENDED;

image.png

3. SCHEMA 级别的权限

在23c之前的版本,如果针对 Schema 对其他用户进行授权,需要通过系统权限 或 对象权限 分别显示的授予,这对数据库带来了额外的安全风险 或 复杂性。

在 Oracle 23 中,可以对 Schema 进行授权,简化了之前的全线操作:

grant select any table on SCHEMA PROD to HR;

image.png

4. Boolean 数据类型

最终,在 Oracle Database 23c 中,布尔数据类型被支持:
image.png

现在可以在建表时指定:

CREATE TABLE Customers (ID NUMBER(10), Name VARCHAR2(100), ACTIVE BOOLEAN);

然后在查询中可以使用布尔判断:

SELECT * FROM Customers WHERE ACTIVE;

5. 基于别名的GROUP BY

终于,我们不再需要在 Group By 中重复长长的表达式,现在支持基于别名、位置的 GROUP BY,这大大简化了SQL文本和编写,毕竟 Group by 如此常用、无处不在:
image.png

6. Javascript 存储过程

在Oracle 21c中引入的 MLE 支持了数据库内部的Javascript ,现在更进一步,23c实现 javascript 存储过程,让数据库内的处理能力进一步扩展和增强:
image.png

7. SQL Domains

SQL 域, 域是特定类型数据元素的通用定义,例如名称、邮政编码、国家代码。这个通用定义可以有几个属性——例如格式(检查约束)、默认值、默认显示格式和按基于域的值排序时要使用的表达式。

在 Oracle Database 23c 中,域可以定义为数据库对象,并且在定义列时,可以将其链接到域定义,形成一个潜在元数据组。通过新函数 DOMAIN_DISPLAY 和 DOMAIN_ORDER 可以在查询语句中使用显示格式和 order by 表达式。

image.png

8. DDL的 IF EXISTS判断

在DDL中,支持通过 IF [NOT] EXISTS 判断,从而规避执行过程中的错误、异常和中断:
image.png

例如,创建表时指定:

CREATE TABLE IF NOT EXISTS Customers (ID NUMBER(10), Name VARCHAR2(100));

删除表时指定:

DROP TABLE IF EXISTS Customers;

9. 注释

注释,为数据库对象增加元数据支持,可以针对表、视图、列、索引、PL/SQL 程序单元、物化视图、域增加注释。
image.png

10. 标准的表值构建

一次产生多行记录,是基于 ISO SQL 标准的实现:
image.png

就以上10个特性而言,哪个使你心有戚戚?欢迎留言反馈。

补充一些其他的特性:

11. 更新JOIN连接结果集

在23c中,支持更新Join连接的结果集,事实上,这个特性在以前版本是支持的,不过存在一些限制(还可以通过参数设置,去掉限制),现在应该是扩大支持(旧文参考
image.png

12. 优化 Returning 子句

优化了 update、Merge 子句的返回值,支持 old 和 new 值的返回:
image.png

13. 优化错误信息的精准度

image.png

14. JSON Schmea 增强

根据 JSON Schema 定义验证文档的各种选项,使用包 dbms_json_schema 可以针对 JSON 检索特定值的验证报告。
image.png

15. 开发者角色

系统内建开发者角色,并授予了一系列的权限,以方便开发者进行SQL诊断等,缺省授予的视图权限包括:

  • GRANT SELECT ON SYS.DBA_PENDING_TRANSACTIONS
  • GRANT SELECT ON V$SQL,V$SQL_PLAN,V$SESSION,V$SQL_PLAN_STATISTICS_ALL
  • GRANT SELECT ON V$SESSTAT, V$STATNAME
  • GRANT SELECT ON V$SQL_MONITOR, V$SQL_PLAN_MONITOR
  • GRANT SELECT ON V$SQLSTATS , V$SQLAREA_PLAN_HASH

image.png

16. 管中窥豹特性一览

其他新特性包括:

  • Single Server rolling maintenance
  • Native property graphs
  • Oracle RAC on K8s
  • 1024 bytes passwords
  • PL/SQL <-> SQL Transpiler
  • Oracle <-> Kafka 集成

image.png

最后修改时间:2022-09-30 17:57:04
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论