Oracle Database 19c 的10大新特性早知道

原文鏈接:19c 新特性

在 ACOUG 年會的活動上,分享了一些從前未曾分享過的內容,想起,今年還欠下一篇文章,就整理和回顧一下,分享我所見到的Oracle 19c的一些重要改變(本文內容來自OOW大會演講,關注“數據和雲”公衆號回覆:2018OOW 獲取大會PPT)。

 

Oracle 19c 相當於 12.2.0.3 版本,是 Oracle 12c 的最終版,所以這一版本中,不會有太多的新特性,更重要的是穩定性的增強,使得用戶能夠更多的遷移到12c這個主流版本中。雖說如此,但是Oracle數據庫的進步總是會讓人感到驚喜,在此遴選了 10 個 19c 的新特性,作爲聖誕節的禮物,送給堅持在技術道路上的朋友們吧。

 

1.Data Guard 備庫DML自動重定向

 

在使用 ADG 作爲備庫進行讀寫分離部署時,可能因爲應用的原因,會有偶然的DML操作發送到備庫上,在 19c 中,Oracle 支持自動重定向備庫 DML,具體執行步驟爲:

更新會自動重定向到主庫;

主庫執行更新、產生和發送Redo日誌到備庫;

在Redo備庫應用後,ADG會話會透明的看到更新信息的落地實施;

這一特性可以通過在系統級或者會話級設置參數 ADG_REDIRECT_DML 參數啓用,通過這種方式,ADG 會話的 ACID 一致性得以保持,同時透明的支持『多數讀,偶爾更新』應用的自然讀寫分離配置。

 

這個特性的引入,將進一步的增加 ADG 的靈活性,幫助用戶將備庫應用的更加充分。

 

2.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 纔可能找到更多的應用場景。

 

3.透明的應用連續性支持增強

 

在Oracle RAC集羣中,支持對於查詢的自動切換,當一個節點失效,轉移到另外一個節點,在19c中,Oracle 持續改進和增強了連續性保持,數據庫會自動記錄會話狀態,捕獲用於重演的信息,以便在切換時,在新節點自動恢復事務,使DML事務同樣可以獲得連續性支持:

在事務提交後自動禁用狀態捕獲,因爲提交成功的事務將不再需要在會話級恢復;

在事務開始時,自動重新啓用狀態跟蹤;

 

 

4.自動化索引創建和實施

 

對於關係型數據庫來說,索引是使得查詢加速的重要手段,而如何設計和創建有效的索引,長期以來是一項複雜的任務。

在 Oracle 19c 中,自動化索引創建和實施技術被引入進來,Oracle 通過模擬人工索引的思路,建立了內置的專家系統。

 

數據庫內置的算法將會通過捕獲、識別、驗證、決策、在線驗證、監控的全流程管控索引自動化的過程。

 

這一特性將會自動幫助用戶創建有效的索引,並通過提前驗證確保其性能和有效性,並且在實施之後進行監控,這一特效將極大緩解數據庫索引維護工作。

 

自動化還將刪除由新創建的索引(邏輯合併)廢棄的索引,並刪除自動創建但長時間未使用的索引。

 

5.多實例並行重做日誌應用增強

 

在Oracle Data Guard環境中,備庫的日誌應用速度一直是一個重要挑戰,如果備庫不能夠及時跟上主庫的步調,則可能影響備庫的使用。

 

自Oracle 12.2 版本開始,支持多實例並行應用,這極大加快了恢復進度,在 18c 中,開始支持 In-Memory 列式存儲,在 19c 中,並行應用開始支持 In-Memory列式存儲。


 

產品推薦

 

雲和恩墨zData一體機現已發佈超融合版本和精簡版,支持各種簡化場景部署,零數據丟失備份一體機ZDBM也已發佈,歡迎關注。

 

6.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’));

 

7.在線維護操作增強

 

在不同版本中,Oracle 持續增強在線維護操作,例如在 12.2 開始支持的Online Move、在線修改普通表爲分區表等特性。

 

在19c 中,持續增強了智能的、細粒度的遊標失效控制,將DDL操作對於遊標失效的影響降至最低,例如,在 19c 中,comment on table的操作,將不會引起遊標的失效。

 

針對分區維護的操作,例如Truncate分區等,Oracle 將進行細粒度的控制,和DDL操作無關的SQL將不受DDL失效影響。

 

8.自動的統計信息管理

 

隨着表數據的變化,優化器表數據統計數據將近實時刷新,以防止次優執行計劃

統計的在線維護內置於直接路徑加載操作中

當數據顯着變化時運行自動統計信息收集作業,例如。,自上次收集統計信息以來,表中超過10%的行被添加/更改

第一個看到需要重新編譯SQL遊標的會話(例如,由於新的優化器統計信息)執行重新編譯

其他會話繼續使用舊的SQL遊標,直到編譯完成

避免因重新編譯而導致大量會話停頓

 

9.自動化的SQL執行計劃管理

 

在 19c 中,數據庫缺省的就會啓用對於所有可重用SQL的執行計劃捕獲(當然SYS系統Schema的SQL除外),然後進行自動的執行計劃評估,評估可以針對AWR中的TOP SQL、SGA、STS中的SQL進行。

 

如果被評估的執行計劃優於當前執行計劃(一般是要有效率 50%以上的提升),會被加入到執行計劃基線庫中,作爲後續的執行選擇,而不佳的執行計劃則會被標記爲不可接受。

 

有了這個特性,SQL執行計劃的穩定性將更進一步。

 

10.SQL功能的增強

 

在 19c 中,SQL 功能獲得了進一步的增強,這其中包括對於 COUNT DISTINCT的進一步優化,在12c中引入的近似 Distinct 操作已經可以爲特定SQL帶來極大性能提升,現在基於位圖的COUNT DISTINCT 操作繼續爲查詢加速。

 

除此之外,LISTAGG 增加了 DISTINCT 關鍵字,用於對操作數據的排重。

 

ANY_VALUE 提供了從數據組中獲得隨機值的能力,如果你以前喜歡用 Max / Min 實現類似的功能,新功能將顯著帶來效率的提升。ANY_VALUE 函數在 MySQL 早已存在,現在應該是 Oracle 借鑑和參考了 MySQL 的函數做出的增強。

在SQL方面,Oracle 的能力超乎想象。

 

新技術、新應用,日新月異,祝大家永葆一顆學習的心,不斷向上,早日找到自己在技術生涯的安心之所。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章