溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Oracle 12c新特性有哪些

發(fā)布時(shí)間:2021-11-15 14:53:25 來源:億速云 閱讀:174 作者:iii 欄目:關(guān)系型數(shù)據(jù)庫

本篇內(nèi)容介紹了“Oracle 12c新特性有哪些”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

  1. 自動存儲管理(ASM)中的增強(qiáng)

  Flex ASM

  在一個(gè)典型的網(wǎng)格基礎(chǔ)架構(gòu)安裝環(huán)境中,每個(gè)節(jié)點(diǎn)都運(yùn)行自身的ASM實(shí)例,并將其作為運(yùn)行于此節(jié)點(diǎn)上數(shù)據(jù)庫的存儲容器。但這種設(shè)置會存在相應(yīng)的單點(diǎn)故障危險(xiǎn)。例如,如果此節(jié)點(diǎn)上的ASM實(shí)例發(fā)生故障,則運(yùn)行于此節(jié)點(diǎn)上的所有數(shù)據(jù)庫和實(shí)例都會受到影響。為了避免ASM實(shí)例的單點(diǎn)故障,Oracle 12c提供了一個(gè)名為Flex ASM的功能。Flex ASM是一個(gè)不同的概念和架構(gòu),只有很少數(shù)量的ASM實(shí)例需要運(yùn)行在集群中的一些服務(wù)器上。當(dāng)某節(jié)點(diǎn)上的一個(gè)ASM實(shí)例發(fā)生故障,Oracle集群就會在另一個(gè)不同的節(jié)點(diǎn)上自動啟動替代ASM實(shí)例以加強(qiáng)可用性。另外,這一設(shè)置還為運(yùn)行在此節(jié)點(diǎn)上的實(shí)例提供了ASM實(shí)例負(fù)載均衡能力。Flex ASM的另一個(gè)優(yōu)勢就是可以在單獨(dú)節(jié)點(diǎn)上加以配置。

  當(dāng)選擇Flex Cluster選項(xiàng)作為集群安裝環(huán)境的第一部分時(shí),鑒于Flex Cluster的要求,F(xiàn)lex ASM配置就會被自動選擇。傳統(tǒng)集群同樣也適用于Flex ASM。當(dāng)你決定使用Flex ASM時(shí),你必須保證所需的網(wǎng)絡(luò)是可用的。你可以選擇Flex ASM存儲選項(xiàng)作為集群安裝環(huán)境的一部分,或是使用ASMCA在一個(gè)標(biāo)準(zhǔn)集群環(huán)境下啟用Flex ASM。

  以下命令顯示了當(dāng)前的ASM模式:

$ ./asmcmd showclustermode
$ ./srvctl config asm

  或是連接到ASM實(shí)例并查詢INSTANCE_TYPE參數(shù)。如果輸出值為ASMPROX,那么,就說明Flex ASM已經(jīng)配置好了。

  ASM存儲限制放寬

  ASM存儲硬性限額在最大ASM 磁盤群組和磁盤大小上已經(jīng)大幅提升。在 12c R1中,ASM支持511個(gè)ASM磁盤群組,而在11g R2中只支持63個(gè)。同樣,相比起在11g R2中20 PB的磁盤大小,現(xiàn)在已經(jīng)將這一數(shù)字提高到32 PB。

  對ASM均衡操作的優(yōu)化

  12c 中新的EXPLAIN WORK FOR 語句用于衡量一個(gè)給定ASM均衡操作所需的工作量,并在V$ASM_ESTIMATE動態(tài)視圖中輸入結(jié)果。使用此動態(tài)視圖,你可以調(diào)整POWER LIMIT 語句對重新平衡操作工作進(jìn)行改善。例如,如果你想衡量添加一個(gè)新ASM磁盤所需的工作量,在實(shí)際執(zhí)行手動均衡操作之前,你可以使用以下命令:

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’;

  你可以根據(jù)從動態(tài)視圖中獲取的輸出來調(diào)整POWER的限制以改善均衡操作。

  ASM 磁盤清理

  在一個(gè)ASM磁盤群組中,新的ASM磁盤清理操作分為正?;蚋呷哂鄡蓚€(gè)級別,它可以檢驗(yàn)ASM磁盤群組中所有磁盤的邏輯數(shù)據(jù)破壞,并且可以自動對邏輯破壞進(jìn)行修復(fù),如果檢測到有邏輯數(shù)據(jù)破壞,就會使用ASM鏡像磁盤。磁盤清理可以在磁盤群組,特定磁盤或是某個(gè)文件上執(zhí)行,這樣其影響可降到最小程度。以下演示了磁盤清理場景:

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 動態(tài)視圖現(xiàn)在還可以提供ASM實(shí)例的活動會話抽樣。然而,診斷包的使用是受到許可限制的。

  2. 網(wǎng)格(Grid)基礎(chǔ)架構(gòu)的增強(qiáng)

  Flex 集群

  Oracle 12c 在集群安裝時(shí)支持兩類配置:傳統(tǒng)標(biāo)準(zhǔn)集群和Flex集群。在一個(gè)傳統(tǒng)標(biāo)準(zhǔn)集群中,所有集群中的節(jié)點(diǎn)都彼此緊密地整合在一起,并通過私有網(wǎng)絡(luò)進(jìn)行互動,而且可以直接訪問存儲。另一方面,F(xiàn)lex集群在Hub和Leaf節(jié)點(diǎn)結(jié)構(gòu)間引入了兩類節(jié)點(diǎn)。分配在Hub中的節(jié)點(diǎn)類似于傳統(tǒng)標(biāo)準(zhǔn)集群,它們通過私有網(wǎng)絡(luò)彼此互連在一起并對存儲可以進(jìn)行直接讀寫訪問。而Leaf節(jié)點(diǎn)不同于Hub節(jié)點(diǎn),它們不需要直接訪問底層存儲;相反的是,它們通過Hub節(jié)點(diǎn)對存儲和數(shù)據(jù)進(jìn)行訪問。

  你可以配置多達(dá)64個(gè)Hub節(jié)點(diǎn),而Leaf節(jié)點(diǎn)則可以更多。在Oracle Flex集群中,無需配置Leaf節(jié)點(diǎn)就可以擁有Hub節(jié)點(diǎn),而如果沒有Hub節(jié)點(diǎn)的話,Leaf節(jié)點(diǎn)是不會存在的。對于一個(gè)單獨(dú)Hub節(jié)點(diǎn),你可以配置多個(gè)Leaf節(jié)點(diǎn)。在Oracle Flex集群中,只有Hub節(jié)點(diǎn)會直接訪問OCR和Voting磁盤。當(dāng)你規(guī)劃大規(guī)模的集群環(huán)境時(shí),這將是一個(gè)非常不錯(cuò)的功能。這一系列設(shè)置會大大降低互連擁堵,并為傳統(tǒng)標(biāo)準(zhǔn)集群提供空間以擴(kuò)大集群。

  部署Flex 集群的兩種途徑:

  1. 在配置一個(gè)全新集群的時(shí)候部署

  2. 升級一個(gè)標(biāo)準(zhǔn)集群模式到Flex集群

  如果你正在配置一個(gè)全新的集群,你需要在步驟3中選擇集群配置的類型,選擇配置一個(gè)Flex集群選項(xiàng),然后你需要在步驟6中對Hub和Leaf節(jié)點(diǎn)進(jìn)行分類。對于每個(gè)節(jié)點(diǎn),選擇相應(yīng)角色是Hub或是Leaf,而虛擬主機(jī)名也是可選的。

  將一個(gè)標(biāo)準(zhǔn)集群模式轉(zhuǎn)換為Flex 集群模式需要以下步驟:

  1. 用以下命令獲取集群的當(dāng)前狀態(tài):

$ ./crsctl get cluster mode status

  2. 以root用戶執(zhí)行以下命令:

$ ./crsctl set cluster mode flex
$ ./crsctl stop crs
$ ./crsctl start crs –wait

  3. 根據(jù)設(shè)計(jì)改變節(jié)點(diǎn)角色:

$ ./crsctl get node role config
$ ./crsctl set node role hub|leaf
$ ./crsctl stop crs
$ ./crsctl start crs -wait

  注意:

  ?你無法從Flex恢復(fù)回標(biāo)準(zhǔn)集群模式

  ?改變集群節(jié)點(diǎn)模式需要集群棧停止

  ?確保以一個(gè)固定的VIP配置GNS

  ASM磁盤群組中的OCR備份

  對于12c,OCR現(xiàn)在可以在ASM磁盤群組中得以備份。這簡化了通過所有節(jié)點(diǎn)對OCR備份文件的訪問。為了防止OCR的恢復(fù),你不必?fù)?dān)心OCR最新的備份是在哪個(gè)節(jié)點(diǎn)上。可以從任何節(jié)點(diǎn)輕易識別存儲在ASM中的最新備份并能很容易地執(zhí)行恢復(fù)。

  以下演示了如何將ASM磁盤群組設(shè)置為OCR備份位置:

$ ./ocrconfig -backuploc +DG_OCR

  支持IPv6協(xié)議

  對于12c,Oracle是支持IPv6網(wǎng)絡(luò)協(xié)議配置的。你現(xiàn)在可以在IPv4或IPv6上配置共有或私有網(wǎng)絡(luò)接口,盡管如此,你需要確保在所有集群中的節(jié)點(diǎn)上使用相同的IP協(xié)議。

  3. RAC數(shù)據(jù)庫的增強(qiáng)

  What-if命令評估

  通過srvctl使用新的What-if命令評估選項(xiàng),現(xiàn)在可以確定運(yùn)行此命令所造成的影響。這一新添加到srvctl的命令,可以在沒有實(shí)際執(zhí)行或是不對當(dāng)前系統(tǒng)做任何改變的情況下模擬此命令。這在想要對一個(gè)已存在的系統(tǒng)進(jìn)行更改卻對結(jié)果不確定的時(shí)候特別有用。這樣,此命令就會提供進(jìn)行變更的效果。而–eval 選項(xiàng)也可以通過crsctl 命令來使用。

  例如,如果你想要知道停止一個(gè)特定數(shù)據(jù)庫會發(fā)生什么,那么你就可以使用以下示例:

$ ./srvctl stop database –d MYDB –eval
$ ./crsctl eval modify resource -attr “value”

  srvctl的改進(jìn)

  對于srvctl命令還有一些新增功能。以下演示了如何用這些新增功能停止或啟動集群上的數(shù)據(jù)庫或?qū)嵗Y源。

srvctl start database|instance –startoption NOMOUNT|MOUNT|OPEN
srvctl stop database|instance –stopoption NOMOUNT|MOUNT|OPEN

  4. 截?cái)啾鞢ASCADE

  在之前的版本中,在子表引用一個(gè)主表以及子表存在記錄的情況下,是不提供截?cái)啻酥鞅聿僮鞯?。而?2c中的帶有CASCADE操作的TRUNCATE TABLE可以截?cái)嘀鞅碇械挠涗?,并自動對子表進(jìn)行遞歸截?cái)?,并作為DELETE ON CASCADE服從外鍵引用。由于這是應(yīng)用到所有子表的,所以對遞歸層級的數(shù)量是沒有CAP的,可以是孫子表或是重孫子表等等。

  這一增強(qiáng)擯棄了要在截?cái)嘁粋€(gè)主表之前先截?cái)嗨凶颖碛涗浀那疤?。新的CASCADE語句同樣也可以應(yīng)用到表分區(qū)和子表分區(qū)等。

SQL> TRUNCATE TABLE CASCADE;
SQL> TRUNCATE TABLE PARTITION CASCADE;

  如果對于子表的外鍵沒有定義ON DELETE CASCADE 選項(xiàng),便會拋出一個(gè)ORA-14705錯(cuò)誤。

  5. 對Top-N查詢結(jié)果限制記錄

  在之前的版本中有多種間接手段來對頂部或底部記錄獲取Top-N查詢結(jié)果。而在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的標(biāo)準(zhǔ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;

  所有這些限制同樣可以很好的應(yīng)用于PL/SQL塊。

BEGIN
SELECT sal BULK COLLECT INTO sal_v FROM EMP
FETCH FIRST 100 ROWS ONLY;
END;

  6. 對SQL*Plus的各種增強(qiáng)

  SQL*Plus的隱式結(jié)果:12c中,在沒有實(shí)際綁定某個(gè)RefCursor的情況下,SQL*Plus從一個(gè)PL/SQL塊的一個(gè)隱式游標(biāo)返回結(jié)果。這一新的dbms_sql.return_result過程將會對PL/SQL 塊中由SELECT 語句查詢所指定的結(jié)果加以返回并進(jìn)行格式化。以下代碼對此用法進(jìn)行了描述:

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;

  當(dāng)此過程得以執(zhí)行,會在SQL*Plus上返回格式化的記錄。

  顯示不可見字段:在本系列文章的第一部分,我已經(jīng)對不可見字段的新特性做了相關(guān)闡述。當(dāng)字段定義為不可見時(shí),在描述表結(jié)構(gòu)時(shí)它們將不會顯示。然而,你可以通過在SQL*Plus提示符下進(jìn)行以下設(shè)置來顯示不可見字段的相關(guān)信息:

SQL> SET COLINVISIBLE ON|OFF

  以上設(shè)置僅對DESCRIBE 命令有效。目前它還無法對不可見字段上的SELECT 語句結(jié)果產(chǎn)生效果。

  7. 會話級序列

  在12c中現(xiàn)在可以創(chuàng)建新的會話級數(shù)據(jù)庫序列來支持會話級序列值。這些序列的類型在有會話級的全局臨時(shí)表上最為適用。

  會話級序列會產(chǎn)生一個(gè)獨(dú)特范圍的值,這些值是限制在此會話內(nèi)的,而非超越此會話。一旦會話終止,會話序列的狀態(tài)也會消失。以下示例解釋了創(chuàng)建一個(gè)會話級序列:

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更快的運(yùn)行PL/SQL函數(shù)或過程,這些是由SQL語句的WITH語句加以定義和聲明的。以下示例演示了如何在WITH語句中定義和聲明一個(gè)過程或函數(shù):

WITH
PROCEDURE|FUNCTION test1 (…)
BEGIN
END;
SELECT FROM table_name;
/

  盡管你不能在PL/SQL單元直接使用WITH語句,但其可以在PL/SQL單元中通過一個(gè)動態(tài)SQL加以引用。

  9. 擴(kuò)展數(shù)據(jù)類型

  在12c中,與早期版本相比,諸如VARCHAR2, NAVARCHAR2以及 RAW這些數(shù)據(jù)類型的大小會從4K以及2K字節(jié)擴(kuò)展至32K字節(jié)。只要可能,擴(kuò)展字符的大小會降低對LOB數(shù)據(jù)類型的使用。為了啟用擴(kuò)展字符大小,你必須將MAX_STRING_SIZE的初始數(shù)據(jù)庫參數(shù)設(shè)置為EXTENDED。

  要使用擴(kuò)展字符類型需要執(zhí)行以下過程:

  1. 關(guān)閉數(shù)據(jù)庫

  2. 以升級模式重啟數(shù)據(jù)庫

  3. 更改參數(shù): ALTER SYSTEM SET MAX_STRING_SIZE=EXTENDED;

  4. 執(zhí)行 utl32k.sql as sysdba : SQL> @?/rdbms/admin/utl32k.sql

  5. 關(guān)閉數(shù)據(jù)庫

  6. 以讀寫模式重啟數(shù)據(jù)庫

  對比LOB數(shù)據(jù)類型,在ASSM表空間管理中,擴(kuò)展數(shù)據(jù)類型的字段以SecureFiles LOB加以存儲,而在非ASSM表空間管理中,它們則是以BasciFiles LOB進(jìn)行存儲的。

  注意:一旦更改,你就不能再將設(shè)置改回STANDARD。

“Oracle 12c新特性有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI