資料庫 23c

Oracle Database 23c 為開發人員帶來最完整且簡單的融合式資料庫,滿足他們建置新式微服務、圖形、文件和關聯式應用程式的需求。

我們每週都會分享關於 Oracle Database 23c 的新功能和範例,讓您快速上手。請儲存本頁面並每週回來查看,瞭解新的焦點功能。

功能焦點

假期愉快!

隨著 2023 年進入尾聲,我們將帶您回顧這一年來主打的 Oracle Database 23c 新功能。如果您 (特別是開發人員) 還沒有機會試用最新的 Oracle Database 版本,請在此或前往 oracle.com/database/free 查看不同的選項。

區塊鏈資料表

隨著 Oracle Database 19c 推出的區塊鏈和不可變資料表使用了加密保護方法,以防止資料遭到外部駭客、罪犯或被入侵的內部使用者竄改或刪除。這包括能防止更新或刪除 (包括 DBA) 的僅限插入限制、進行驗證的加密雜湊鏈、能偵測任何大規模倒回的簽署資料表摘要,以及要求終端使用者使用其私密金鑰來簽署插入的資料列。Oracle Database 23c 引入了許多增強功能,支援透過 Oracle GoldenGate 進行邏輯複製、使用 Active Data Guard 進行滾動式升級、支援涉及區塊鏈資料表的分散式交易、以分割區為基礎高效率地大量卸除過期資料列,以及插入/認可的效能最佳化。

此版本也引入了新增/卸除資料行而不影響加密雜湊鏈的功能、依篩選資料列提供的使用者專屬鏈和資料表摘要、委派簽署功能,以及資料庫副署。此版本還透過定義為使用區塊鏈歷史記錄資料表的閃回封存,對非區塊鏈資料表進行過往變更的稽核,將加密保護資料管理擴展到一般資料表。

這些功能很適合內建審核追蹤或日記帳使用案例,可用於財務總帳、付款歷史記錄、法規遵循追蹤、法律記錄,以及受到竄改或刪除可能會對法律、聲望或財務帶來嚴重後果的資料資產。



布林值資料類型

Oracle Database 現在支援符合 ISO SQL 標準的布林值資料類型。這樣一來,您就能在資料表中儲存 True 和 False 值,並能在 SQL 陳述式中使用布林值運算式。布林值資料類型會將 Yes 和 No 值的儲存方式標準化,讓移轉到 Oracle Database 變得更輕鬆。



資料庫驅動程式非同步程式設計和管線

Oracle Database 23c 中的管線功能可讓 .NET、Java 和 C/C++ 應用程式將多個要求傳送至資料庫,而不需要等待伺服器回應。Oracle Database 會將這些要求逐一排入佇列進行處理,並讓用戶端應用程式繼續運作,直到收到要求完成通知為止。這些增強功能提供更好的終端使用者體驗、提升的資料驅動應用程式回應能力、端對端可擴充性、避免效能瓶頸,以及伺服器和用戶端的高效資源使用率。

若要立即傳回用戶端要求,Oracle Database Pipelining 需要 .NET、Java 和 C/C++ 驅動程式的非同步或回應式 API。這些機制可以搭配 Oracle Database (無論是否具備 Database Pipelining) 使用。

針對 Java,Oracle Database 23c 在 Java Database Connectivity (JDBC)、Universal Connection Pool (UCP) 和 Oracle R2DBC 驅動程式中提供了 Reactive Extensions。另外,也支援驅動程式中的 Java 虛擬執行緒 (Project Loom) 以及 Reactive Streams 程式庫 (例如 Reactor、RxJava、Akka Streams、Vert.x 等)。



DB_DEVELOPER_ROLE

Oracle Database 23c 的新角色 DB_DEVELOPER_ROLE 能為應用程式開發人員提供所有必要權限,以在 Oracle Database 上設計、導入、除錯和部署應用程式。管理員只要使用這個角色,就不必再猜測開發應用程式可能需要哪些權限。





UPDATE 和 DELETE 陳述式的直接聯結

您現在可在 Oracle Database 中使用 FROM 子句,將 UPDATE 和 DELETE 陳述式中的目標資料表聯結到其他資料表。該資料表可以限制變更的資料列,或成為新值的來源。要撰寫 SQL 以變更和刪除資料時,直接聯結可使過程變得更輕鬆。



快速擷取增強功能

我們新增了記憶體最佳化資料列存放區快速擷取增強功能,提供分割、壓縮表格、使用直接寫入快速排清,以及直接記憶體內資料欄存放區植入支援。這些增強功能可讓您更輕鬆地在更多需要快速資料擷取的情況下,結合快速擷取功能。Oracle Database 現在為需要快速資料擷取功能的應用程式提供了更好的支援。您可以擷取資料,然後在相同的資料庫中處理所有資料。這可減少特殊載入環境的需求,進而降低複雜性和資料備援。



Grafana 可觀察性

Oracle 持續擴展其雲端原生和 Kubernetes 支援,並在 Oracle Database 中新增了 Observability Exporter,讓客戶可以輕鬆以業界標準 Prometheus 格式匯出資料庫和應用程式指標,並輕鬆建立 Grafana 儀表板,來監控其 Oracle 資料庫和應用程式的效能。



GROUP BY 資料欄別名

您現在可以在 GROUP BY、GROUP BY CUBE、GROUP BY ROLLUP 和 GROUP BY GROUPING SETS 子句中使用資料欄別名或 SELECT 項目位置。此外,HAVING 子句也支援資料欄別名。這些新的 Database 23c 增強功能可讓您更輕鬆地撰寫 GROUP BY 和 HAVING 子句,讓 SQL 查詢更容易閱讀和維護,同時加強 SQL 程式碼可攜性。



IF [NOT] EXISTS

Oracle Database 中的 DDL 物件建立、修改和刪除現在支援 IF EXISTS 和 IF NOT EXISTS 語法修飾詞。如此一來,您就可以控制當指定物件存在或不存在時,是否應引發錯誤,從而簡化指令碼和應用程式中的錯誤處理過程。



INTERVAL 資料類型聚總

Oracle Database 23c 讓開發人員可以更輕鬆地計算 INTERVAL 值的總計和平均值。透過此增強功能,您現在可以將 INTERVAL 資料類型傳送給 SUM 和 AVG 聚總和分析函數。



JavaScript 預存程序

開發人員能夠利用多語言引擎 (MLE) 模組呼叫,從 SQL 和 PL/SQL 呼叫預存在模組中的 JavaScript 函數。使用 PL/SQL 編寫的呼叫規格會將 JavaScript 連結到 PL/SQL 程式碼單位。有了這項功能,開發人員就能在呼叫 PL/SQL 函數的任意位置使用 JavaScript 函數。



JSON 二進位資料類型

JSON 資料類型是 Oracle 最佳化的二進位 JSON 格式,稱為 OSON。其目的是加速 21c 和更新版資料庫和資料庫用戶端中的查詢和 DML 效能。



JSON Relational Duality 檢視

JSON Relational Duality 是在 Oracle Database 23c 中引進的創新功能,整合了關聯式和文件資料模型,使魚與熊掌可以兼得。開發人員能夠利用單一事實來源,以關聯式或 JSON 形式建置應用程式,同時享有兩種模型的長處。資料會保留一次,但可透過任一方法存取、寫入和修改。符合 ACID 的交易和並行處理控制措施可為開發人員帶來好處,這表示他們不再需要在複雜的物件關聯式對應或資料不一致問題之間取捨。



JSON 綱要

Oracle Database 支援使用 JSON 來儲存和處理彈性的綱要資料。透過 Oracle Database 23c,Oracle Database 現在支援使用 JSON 綱要來驗證 JSON 資料的結構和值。SQL 運算子 IS JSON 已經過增強,可接受 JSON 綱要,並新增了各種 PL/SQL 函數來驗證 JSON,以及將資料庫物件 (例如表格、檢視和類型) 描述為 JSON 綱要文件。

JSON 資料預設為無綱要,以提供彈性。不過,如果您想要確保 JSON 資料具有特定結構和類型,可以透過業界標準 JSON 綱要驗證來完成。

對 JSON 綱要提出貢獻
Oracle 對 JSON 綱要有積極貢獻,這是將 JSON 型宣告式語言標準化的開放原始碼工作,讓您能夠加註和驗證 JSON 文件。目前處於徵求修正意見書 (RFC) 階段。



Kafka API

Oracle Database 23c 為 Apache Kafka 應用程式與 Oracle Database 提供更精細的相容性。這項新功能可讓您輕鬆將 Kafka Java 應用程式移轉至交易事件佇列 (TxEventQ)。Kafka Java API 現在能連線至 Oracle Database 伺服器,並使用 TxEventQ 作為訊息傳送平台。

開發人員現在能使用 JDBC Thin 驅動程式,輕鬆將使用 Kafka 的現有 Java 應用程式移轉至 Oracle Database。此外,因為有了 Oracle Database 23c 用戶端程式庫功能,Kafka 應用程式現在能連線至 Oracle Database 而非 Kafka 叢集,並以通透的方式使用 TxEventQ 的訊息傳送平台。



無鎖定資料欄值保留

無鎖定保留可讓並行交易繼續,而不受大量更新資料列的更新阻擋。無鎖定保留會保留在資料列上,而不是予以阻擋。該功能會驗證更新是否能成功,並將更新延遲到交易確認時間為止。無鎖定保留能改善使用者體驗和交易的並行能力。



MongoDB 相容的 API

透過 Oracle Database API for MongoDB,開發人員可以繼續使用連線到 Oracle Database 的 MongoDB 工具和驅動程式,同時存取 Oracle 的多模型功能和自主驅動資料庫。客戶可以在 Oracle Cloud Infrastructure (OCI) 上執行 MongoDB 工作負載。您通常幾乎或完全不需要變更現有的 MongoDB 應用程式,只需變更連線字串即可。

Oracle Database API for MongoDB 是標準 Oracle REST Data Services 的一部分,已在 Oracle Autonomous Database 下預先配置和完全管理。



作業屬性圖形

Oracle Database 為屬性圖形資料結構和圖形查詢提供原生支援。如果您需要彈性,以結合交易資料、JSON、空間和其他資料類型來建置圖形,我們都能支援。開發人員現在能透過 SQL,使用現有的 SQL 開發工具和架構來輕鬆建置圖形應用程式。



聚總類型的 PL/SQL JSON 建構子支援

PL/SQL JSON 建構子已經過增強,可接受對應 PL/SQL 聚總類型的執行個體,以傳回植入聚總類型資料的 JSON 物件或陣列類型。

PL/SQL JSON_VALUE 運算子已經過增強,因此其傳回的子句可接受類型名稱,定義運算子要傳回之執行個體的類型。聚總資料類型的 JSON 建構子支援簡化了 PL/SQL 應用程式與支援 JSON 的語言之間的資料交換。



RETURNING INTO 子句

已增強 INSERT、UPDATE 和 DELETE 陳述式的 RETURNING INTO 子句,可報告受到個別陳述式影響的新舊值。這讓開發人員可以針對每種 DML 類型使用相同的邏輯,來取得陳述式執行前後的值。新舊值僅適用於 UPDATE 陳述式。INSERT 陳述式不會報告舊值,而 DELETE 陳述式不會報告新值。

如果開發人員可以在 SQL 命令執行過程中取得受到 INSERT、UPDATE 和 DELETE 陳述式影響的新舊值,就能以統一的方式讀取這些值,並減少資料庫必須執行的工作量。



綱要權限

Oracle Database 現在不僅支援現有的物件、系統和管理權限,還支援綱要權限。此功能藉由簡化資料庫物件的授權,更確實地導入最小權限的原則,使您不再需要猜測誰應該能存取什麼項目,進而改善安全性。



在不使用 FROM 子句的情況下執行 SELECT

您現在不需要 FROM 子句,就能執行只有 SELECT 運算式的查詢。這項新功能改善了 SQL 程式碼的可攜性,對開發人員而言也更容易使用。



SQL 巨集

建立 SQL 巨集,將常用的 SQL 運算式和陳述式分解出來,化為可在其他 SQL 陳述式中重複使用的參數化結構。SQL 巨集可以是純量運算式,通常用於 SELECT 清單和 WHERE、GROUP BY 和 HAVING 子句。SQL 巨集也能用於封裝計算和商務邏輯,或者作為通常用在 FROM 子句中的資料表運算式。相較於 PL/SQL 結構,SQL 巨集可以改善效能。SQL 巨集能增加開發人員生產力、簡化協作開發流程,並改善程式碼品質。



SQL 分析報告

本週我們將焦點放在 SQL 分析報告,此功能很容易使用,可協助開發人員撰寫更佳的 SQL 陳述式。SQL 分析報告會回報 SQL 陳述式的常見問題,尤其是可能導致 SQL 效能不佳的問題。DBMS_XPLAN 和 SQL 監控都提供此功能。



SQL Firewall

使用 SQL Firewall 來偵測異常,並防止 SQL 資料隱碼攻擊。SQL Firewall 會查看所有 SQL,包括 IP 位址和作業系統使用者等階段作業內容資訊。SQL Firewall 內嵌於資料庫核心,可記錄及 (若啟用) 封鎖未授權的 SQL,以確保不會被略過。透過強制執行 SQL 的允許清單並核准階段作業內容,SQL Firewall 就能防止許多零時差攻擊,並降低認證遭竊或濫用的風險。



表格值建構子

Oracle Database SQL 引擎現在支援在多種類型的陳述式中使用 VALUES 子句。這可讓您使用新的語法進行指定來即時具體化資料列,而不需要依賴現有的表格。Oracle Database 23c 支援在 SELECT、INSERT 以及 MERGE 陳述式中使用 VALUES 子句。新 VALUES 子句的引進,讓開發人員可為特別 SQL 命令撰寫較少的程式碼,花費更少的心力提高易讀性。



使用方式註釋

您可以利用註釋來儲存和擷取關於資料庫物件的中繼資料。註釋是自由格式的文字欄位,可供應用程式用來自訂商務邏輯或使用者介面。註釋是名稱-值組,也可以只有名稱。註釋能協助您在所有應用程式中以相同方式使用資料庫物件,簡化開發過程並改善資料品質。



使用方式定義域

使用方式定義域 (有時稱為 SQL 定義域或應用程式使用方式定義域) 是高階字典物件,可以當成輕量型修飾詞,並集中記錄應用程式的預期資料使用方式。使用方式定義域可用來定義資料使用方式並標準化作業,以封裝一組檢查限制條件、顯示特性、排序規則和其他使用方式特性,而不需要應用程式層級中繼資料。

表格中一或多個資料欄的使用方式定義域不會修改基本資料類型,因此也可新增至現有的資料,而不會中斷應用程式或產生可攜性問題。