您好,登錄后才能下訂單哦!
本篇內容介紹了“Oracle 12c新特性有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
1. 自動存儲管理(ASM)中的增強
Flex ASM
在一個典型的網格基礎架構安裝環境中,每個節點都運行自身的ASM實例,并將其作為運行于此節點上數據庫的存儲容器。但這種設置會存在相應的單點故障危險。例如,如果此節點上的ASM實例發生故障,則運行于此節點上的所有數據庫和實例都會受到影響。為了避免ASM實例的單點故障,Oracle 12c提供了一個名為Flex ASM的功能。Flex ASM是一個不同的概念和架構,只有很少數量的ASM實例需要運行在集群中的一些服務器上。當某節點上的一個ASM實例發生故障,Oracle集群就會在另一個不同的節點上自動啟動替代ASM實例以加強可用性。另外,這一設置還為運行在此節點上的實例提供了ASM實例負載均衡能力。Flex ASM的另一個優勢就是可以在單獨節點上加以配置。
當選擇Flex Cluster選項作為集群安裝環境的第一部分時,鑒于Flex Cluster的要求,Flex ASM配置就會被自動選擇。傳統集群同樣也適用于Flex ASM。當你決定使用Flex ASM時,你必須保證所需的網絡是可用的。你可以選擇Flex ASM存儲選項作為集群安裝環境的一部分,或是使用ASMCA在一個標準集群環境下啟用Flex ASM。
以下命令顯示了當前的ASM模式:
$ ./asmcmd showclustermode
$ ./srvctl config asm
或是連接到ASM實例并查詢INSTANCE_TYPE參數。如果輸出值為ASMPROX,那么,就說明Flex ASM已經配置好了。
ASM存儲限制放寬
ASM存儲硬性限額在最大ASM 磁盤群組和磁盤大小上已經大幅提升。在 12c R1中,ASM支持511個ASM磁盤群組,而在11g R2中只支持63個。同樣,相比起在11g R2中20 PB的磁盤大小,現在已經將這一數字提高到32 PB。
對ASM均衡操作的優化
12c 中新的EXPLAIN WORK FOR 語句用于衡量一個給定ASM均衡操作所需的工作量,并在V$ASM_ESTIMATE動態視圖中輸入結果。使用此動態視圖,你可以調整POWER LIMIT 語句對重新平衡操作工作進行改善。例如,如果你想衡量添加一個新ASM磁盤所需的工作量,在實際執行手動均衡操作之前,你可以使用以下命令:
SQL> EXPLAIN WORK FOR ALTER DISKGROUP DG_DATA ADD DISK data_005;
SQL> SELECT est_work FROM V$ASM_ESTIMATE;
SQL> EXPLAIN WORK SET STATEMENT_ID='ADD_DISK' FOR ALTER DISKGROUP DG_DATA AD DISK data_005;
SQL> SELECT est_work FROM V$ASM_ESTIMATE WHERE STATEMENT_ID = 'ADD_DISK’;
你可以根據從動態視圖中獲取的輸出來調整POWER的限制以改善均衡操作。
ASM 磁盤清理
在一個ASM磁盤群組中,新的ASM磁盤清理操作分為正常或高冗余兩個級別,它可以檢驗ASM磁盤群組中所有磁盤的邏輯數據破壞,并且可以自動對邏輯破壞進行修復,如果檢測到有邏輯數據破壞,就會使用ASM鏡像磁盤。磁盤清理可以在磁盤群組,特定磁盤或是某個文件上執行,這樣其影響可降到最小程度。以下演示了磁盤清理場景:
SQL> ALTER DISKGROUP dg_data SCRUB POWER LOW:HIGH:AUTO:MAX;
SQL> ALTER DISKGROUP dg_data SCRUB FILE '+DG_DATA/MYDB/DATAFILE/filename.xxxx.xxxx'
REPAIR POWER AUTO;
ASM的活動會話歷史(ASH)
V$ACTIVE_SESSION_HISOTRY 動態視圖現在還可以提供ASM實例的活動會話抽樣。然而,診斷包的使用是受到許可限制的。
2. 網格(Grid)基礎架構的增強
Flex 集群
Oracle 12c 在集群安裝時支持兩類配置:傳統標準集群和Flex集群。在一個傳統標準集群中,所有集群中的節點都彼此緊密地整合在一起,并通過私有網絡進行互動,而且可以直接訪問存儲。另一方面,Flex集群在Hub和Leaf節點結構間引入了兩類節點。分配在Hub中的節點類似于傳統標準集群,它們通過私有網絡彼此互連在一起并對存儲可以進行直接讀寫訪問。而Leaf節點不同于Hub節點,它們不需要直接訪問底層存儲;相反的是,它們通過Hub節點對存儲和數據進行訪問。
你可以配置多達64個Hub節點,而Leaf節點則可以更多。在Oracle Flex集群中,無需配置Leaf節點就可以擁有Hub節點,而如果沒有Hub節點的話,Leaf節點是不會存在的。對于一個單獨Hub節點,你可以配置多個Leaf節點。在Oracle Flex集群中,只有Hub節點會直接訪問OCR和Voting磁盤。當你規劃大規模的集群環境時,這將是一個非常不錯的功能。這一系列設置會大大降低互連擁堵,并為傳統標準集群提供空間以擴大集群。
部署Flex 集群的兩種途徑:
1. 在配置一個全新集群的時候部署
2. 升級一個標準集群模式到Flex集群
如果你正在配置一個全新的集群,你需要在步驟3中選擇集群配置的類型,選擇配置一個Flex集群選項,然后你需要在步驟6中對Hub和Leaf節點進行分類。對于每個節點,選擇相應角色是Hub或是Leaf,而虛擬主機名也是可選的。
將一個標準集群模式轉換為Flex 集群模式需要以下步驟:
1. 用以下命令獲取集群的當前狀態:
$ ./crsctl get cluster mode status
2. 以root用戶執行以下命令:
$ ./crsctl set cluster mode flex
$ ./crsctl stop crs
$ ./crsctl start crs –wait
3. 根據設計改變節點角色:
$ ./crsctl get node role config
$ ./crsctl set node role hub|leaf
$ ./crsctl stop crs
$ ./crsctl start crs -wait
注意:
?你無法從Flex恢復回標準集群模式
?改變集群節點模式需要集群棧停止
?確保以一個固定的VIP配置GNS
ASM磁盤群組中的OCR備份
對于12c,OCR現在可以在ASM磁盤群組中得以備份。這簡化了通過所有節點對OCR備份文件的訪問。為了防止OCR的恢復,你不必擔心OCR最新的備份是在哪個節點上。可以從任何節點輕易識別存儲在ASM中的最新備份并能很容易地執行恢復。
以下演示了如何將ASM磁盤群組設置為OCR備份位置:
$ ./ocrconfig -backuploc +DG_OCR
支持IPv6協議
對于12c,Oracle是支持IPv6網絡協議配置的。你現在可以在IPv4或IPv6上配置共有或私有網絡接口,盡管如此,你需要確保在所有集群中的節點上使用相同的IP協議。
3. RAC數據庫的增強
What-if命令評估
通過srvctl使用新的What-if命令評估選項,現在可以確定運行此命令所造成的影響。這一新添加到srvctl的命令,可以在沒有實際執行或是不對當前系統做任何改變的情況下模擬此命令。這在想要對一個已存在的系統進行更改卻對結果不確定的時候特別有用。這樣,此命令就會提供進行變更的效果。而–eval 選項也可以通過crsctl 命令來使用。
例如,如果你想要知道停止一個特定數據庫會發生什么,那么你就可以使用以下示例:
$ ./srvctl stop database –d MYDB –eval
$ ./crsctl eval modify resource -attr “value”
srvctl的改進
對于srvctl命令還有一些新增功能。以下演示了如何用這些新增功能停止或啟動集群上的數據庫或實例資源。
srvctl start database|instance –startoption NOMOUNT|MOUNT|OPEN
srvctl stop database|instance –stopoption NOMOUNT|MOUNT|OPEN
4. 截斷表CASCADE
在之前的版本中,在子表引用一個主表以及子表存在記錄的情況下,是不提供截斷此主表操作的。而在12c中的帶有CASCADE操作的TRUNCATE TABLE可以截斷主表中的記錄,并自動對子表進行遞歸截斷,并作為DELETE ON CASCADE服從外鍵引用。由于這是應用到所有子表的,所以對遞歸層級的數量是沒有CAP的,可以是孫子表或是重孫子表等等。
這一增強擯棄了要在截斷一個主表之前先截斷所有子表記錄的前提。新的CASCADE語句同樣也可以應用到表分區和子表分區等。
SQL> TRUNCATE TABLE CASCADE;
SQL> TRUNCATE TABLE PARTITION CASCADE;
如果對于子表的外鍵沒有定義ON DELETE CASCADE 選項,便會拋出一個ORA-14705錯誤。
5. 對Top-N查詢結果限制記錄
在之前的版本中有多種間接手段來對頂部或底部記錄獲取Top-N查詢結果。而在12c中,通過新的FETCH FIRST|NEXT|PERCENT語句簡化了這一過程并使其變得更為直接。為了從EMP表檢索排名前10的工資記錄,可以用以下新的SQL語句:
SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
FETCH FIRST 10 ROWS ONLY;
以下示例獲取排名前N的所有相似的記錄。例如,如果第十行的工資值是5000,并且還有其他員工的工資符合排名前N的標準,那么它們也同樣會由WITH TIES語句獲取。
SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
FETCH FIRST 10 ROWS ONLY WITH TIES;
以下示例限制從EMP表中獲取排名前10%的記錄:
SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
FETCH FIRST 10 PERCENT ROWS ONLY;
以下示例忽略前5條記錄并會顯示表的下5條記錄:
SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY;
所有這些限制同樣可以很好的應用于PL/SQL塊。
BEGIN
SELECT sal BULK COLLECT INTO sal_v FROM EMP
FETCH FIRST 100 ROWS ONLY;
END;
6. 對SQL*Plus的各種增強
SQL*Plus的隱式結果:12c中,在沒有實際綁定某個RefCursor的情況下,SQL*Plus從一個PL/SQL塊的一個隱式游標返回結果。這一新的dbms_sql.return_result過程將會對PL/SQL 塊中由SELECT 語句查詢所指定的結果加以返回并進行格式化。以下代碼對此用法進行了描述:
SQL> CREATE PROCEDURE mp1
res1 sys_refcursor;
BEGIN
open res1 for SELECT eno,ename,sal FROM emp;
dbms_sql.return_result(res1);
END;
SQL> execute mp1;
當此過程得以執行,會在SQL*Plus上返回格式化的記錄。
顯示不可見字段:在本系列文章的第一部分,我已經對不可見字段的新特性做了相關闡述。當字段定義為不可見時,在描述表結構時它們將不會顯示。然而,你可以通過在SQL*Plus提示符下進行以下設置來顯示不可見字段的相關信息:
SQL> SET COLINVISIBLE ON|OFF
以上設置僅對DESCRIBE 命令有效。目前它還無法對不可見字段上的SELECT 語句結果產生效果。
7. 會話級序列
在12c中現在可以創建新的會話級數據庫序列來支持會話級序列值。這些序列的類型在有會話級的全局臨時表上最為適用。
會話級序列會產生一個獨特范圍的值,這些值是限制在此會話內的,而非超越此會話。一旦會話終止,會話序列的狀態也會消失。以下示例解釋了創建一個會話級序列:
SQL> CREATE SEQUENCE my_seq START WITH 1 INCREMENT BY 1 SESSION;
SQL> ALTER SEQUENCE my_seq GLOBAL|SESSION;
對于會話級序列,CACHE, NOCACHE, ORDER 或 NOORDER 語句會予以忽略。
8. WITH語句的改善
在12c中,你可以用SQL更快的運行PL/SQL函數或過程,這些是由SQL語句的WITH語句加以定義和聲明的。以下示例演示了如何在WITH語句中定義和聲明一個過程或函數:
WITH
PROCEDURE|FUNCTION test1 (…)
BEGIN
END;
SELECT FROM table_name;
/
盡管你不能在PL/SQL單元直接使用WITH語句,但其可以在PL/SQL單元中通過一個動態SQL加以引用。
9. 擴展數據類型
在12c中,與早期版本相比,諸如VARCHAR2, NAVARCHAR2以及 RAW這些數據類型的大小會從4K以及2K字節擴展至32K字節。只要可能,擴展字符的大小會降低對LOB數據類型的使用。為了啟用擴展字符大小,你必須將MAX_STRING_SIZE的初始數據庫參數設置為EXTENDED。
要使用擴展字符類型需要執行以下過程:
1. 關閉數據庫
2. 以升級模式重啟數據庫
3. 更改參數: ALTER SYSTEM SET MAX_STRING_SIZE=EXTENDED;
4. 執行 utl32k.sql as sysdba : SQL> @?/rdbms/admin/utl32k.sql
5. 關閉數據庫
6. 以讀寫模式重啟數據庫
對比LOB數據類型,在ASSM表空間管理中,擴展數據類型的字段以SecureFiles LOB加以存儲,而在非ASSM表空間管理中,它們則是以BasciFiles LOB進行存儲的。
注意:一旦更改,你就不能再將設置改回STANDARD。
“Oracle 12c新特性有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。