Oracle Database 23c 十小新特性速覽,你知道幾個(gè)?
在最近剛剛舉行的 DOAG 2022 會(huì)議上,Oracle 披露了 Oracle Database 23c 的一系列新特性。以下我將遴選10個(gè)有意思的特性,湊成一組速覽和大家分享。
1. 不帶FROM子句的SELECT 查詢
我們知道,在 MogDB 數(shù)據(jù)庫(kù)中,SELECT 是可以不跟 FROM 子句實(shí)現(xiàn)一系列的查詢功能,例如:
MogDB=#select 2^10;
?column?
----------
1024
(1 row)
MogDB=#select 9*9;
?column?
----------
81
(1 row)
在 Oracle 23c 中,第一次實(shí)現(xiàn)了不帶From子句的查詢,因而原來(lái)大量依賴 Dual 表的查詢,可以松下了一口氣:

2. 單表支持4096列
我們知道 MogDB 單表最大支持 1600 列,Oracle 此前版本單表支持 1000列。
在23c中,單表支持列數(shù)量擴(kuò)展到 4096 列。啟用這一個(gè)特性需要將兼容性參數(shù)設(shè)置為23.0.0,同時(shí)將 Max_columns設(shè)置為 Extended:
alter system set MAX_COLUMNS=EXTENDED;

3. SCHEMA 級(jí)別的權(quán)限
在23c之前的版本,如果針對(duì) Schema 對(duì)其他用戶進(jìn)行授權(quán),需要通過系統(tǒng)權(quán)限 或 對(duì)象權(quán)限 分別顯示的授予,這對(duì)數(shù)據(jù)庫(kù)帶來(lái)了額外的安全風(fēng)險(xiǎn) 或 復(fù)雜性。
在 Oracle 23 中,可以對(duì) Schema 進(jìn)行授權(quán),簡(jiǎn)化了之前的全線操作:
grant select any table on SCHMEA PROD to HR;

4. Boolean 數(shù)據(jù)類型
最終,在 Oracle Database 23c 中,布爾數(shù)據(jù)類型被支持:

5. 基于別名的GROUP BY
終于,我們不再需要在 Group By 中重復(fù)長(zhǎng)長(zhǎng)的表達(dá)式,現(xiàn)在支持基于別名、位置的 GROUP BY,這大大簡(jiǎn)化了SQL文本和編寫,畢竟 Group by 如此常用、無(wú)處不在:

6. Javascropt 存儲(chǔ)過程
在Oracle 21c中引入的 MLE 支持了數(shù)據(jù)庫(kù)內(nèi)部的Javascript ,現(xiàn)在更進(jìn)一步,23c實(shí)現(xiàn) javascript 存儲(chǔ)過程,讓數(shù)據(jù)庫(kù)內(nèi)的處理能力進(jìn)一步擴(kuò)展和增強(qiáng):

7. SQL Domains
SQL 域, 域是特定類型數(shù)據(jù)元素的通用定義,例如名稱、郵政編碼、國(guó)家代碼。這個(gè)通用定義可以有幾個(gè)屬性——例如格式(檢查約束)、默認(rèn)值、默認(rèn)顯示格式和按基于域的值排序時(shí)要使用的表達(dá)式。
在 Oracle Database 23c 中,域可以定義為數(shù)據(jù)庫(kù)對(duì)象,并且在定義列時(shí),可以將其鏈接到域定義,形成一個(gè)潛在元數(shù)據(jù)組。通過新函數(shù) DOMAIN_DISPLAY 和 DOMAIN_ORDER 可以在查詢語(yǔ)句中使用顯示格式和 order by 表達(dá)式。

8. DDL的 IF EXISTS判斷
在DDL中,支持通過 IF [NOT] EXISTS 判斷,從而規(guī)避執(zhí)行過程中的錯(cuò)誤、異常和中斷:

9. 注釋
注釋,為數(shù)據(jù)庫(kù)對(duì)象增加元數(shù)據(jù)支持,可以針對(duì)表、視圖、列、索引、PL/SQL 程序單元、物化視圖、域增加注釋。

10. 標(biāo)準(zhǔn)的表值構(gòu)建
一次產(chǎn)生多行記錄,是基于 ISO SQL 標(biāo)準(zhǔn)的實(shí)現(xiàn):
















 
 
 













 
 
 
 