十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂(yōu)售后,網(wǎng)站問(wèn)題一站解決
本篇內(nèi)容介紹了“Oracle 12c新特性有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比安龍網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式安龍網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋安龍地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴(lài)。
1. 自動(dòng)存儲(chǔ)管理(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ù)庫(kù)的存儲(chǔ)容器。但這種設(shè)置會(huì)存在相應(yīng)的單點(diǎn)故障危險(xiǎn)。例如,如果此節(jié)點(diǎn)上的ASM實(shí)例發(fā)生故障,則運(yùn)行于此節(jié)點(diǎn)上的所有數(shù)據(jù)庫(kù)和實(shí)例都會(huì)受到影響。為了避免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集群就會(huì)在另一個(gè)不同的節(jié)點(diǎn)上自動(dòng)啟動(dòng)替代ASM實(shí)例以加強(qiáng)可用性。另外,這一設(shè)置還為運(yùn)行在此節(jié)點(diǎn)上的實(shí)例提供了ASM實(shí)例負(fù)載均衡能力。Flex ASM的另一個(gè)優(yōu)勢(shì)就是可以在單獨(dú)節(jié)點(diǎn)上加以配置。
當(dāng)選擇Flex Cluster選項(xiàng)作為集群安裝環(huán)境的第一部分時(shí),鑒于Flex Cluster的要求,F(xiàn)lex ASM配置就會(huì)被自動(dòng)選擇。傳統(tǒng)集群同樣也適用于Flex ASM。當(dāng)你決定使用Flex ASM時(shí),你必須保證所需的網(wǎng)絡(luò)是可用的。你可以選擇Flex ASM存儲(chǔ)選項(xiàng)作為集群安裝環(huán)境的一部分,或是使用ASMCA在一個(gè)標(biāo)準(zhǔn)集群環(huán)境下啟用Flex ASM。
以下命令顯示了當(dāng)前的ASM模式:
$ ./asmcmd showclustermode
$ ./srvctl config asm
或是連接到ASM實(shí)例并查詢(xún)INSTANCE_TYPE參數(shù)。如果輸出值為ASMPROX,那么,就說(shuō)明Flex ASM已經(jīng)配置好了。
ASM存儲(chǔ)限制放寬
ASM存儲(chǔ)硬性限額在最大ASM 磁盤(pán)群組和磁盤(pán)大小上已經(jīng)大幅提升。在 12c R1中,ASM支持511個(gè)ASM磁盤(pán)群組,而在11g R2中只支持63個(gè)。同樣,相比起在11g R2中20 PB的磁盤(pán)大小,現(xiàn)在已經(jīng)將這一數(shù)字提高到32 PB。
對(duì)ASM均衡操作的優(yōu)化
12c 中新的EXPLAIN WORK FOR 語(yǔ)句用于衡量一個(gè)給定ASM均衡操作所需的工作量,并在V$ASM_ESTIMATE動(dòng)態(tài)視圖中輸入結(jié)果。使用此動(dòng)態(tài)視圖,你可以調(diào)整POWER LIMIT 語(yǔ)句對(duì)重新平衡操作工作進(jìn)行改善。例如,如果你想衡量添加一個(gè)新ASM磁盤(pán)所需的工作量,在實(shí)際執(zhí)行手動(dòng)均衡操作之前,你可以使用以下命令:
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ù)從動(dòng)態(tài)視圖中獲取的輸出來(lái)調(diào)整POWER的限制以改善均衡操作。
ASM 磁盤(pán)清理
在一個(gè)ASM磁盤(pán)群組中,新的ASM磁盤(pán)清理操作分為正?;蚋呷哂鄡蓚€(gè)級(jí)別,它可以檢驗(yàn)ASM磁盤(pán)群組中所有磁盤(pán)的邏輯數(shù)據(jù)破壞,并且可以自動(dòng)對(duì)邏輯破壞進(jìn)行修復(fù),如果檢測(cè)到有邏輯數(shù)據(jù)破壞,就會(huì)使用ASM鏡像磁盤(pán)。磁盤(pán)清理可以在磁盤(pán)群組,特定磁盤(pán)或是某個(gè)文件上執(zhí)行,這樣其影響可降到最小程度。以下演示了磁盤(pán)清理場(chǎng)景:
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的活動(dòng)會(huì)話(huà)歷史(ASH)
V$ACTIVE_SESSION_HISOTRY 動(dòng)態(tài)視圖現(xiàn)在還可以提供ASM實(shí)例的活動(dòng)會(huì)話(huà)抽樣。然而,診斷包的使用是受到許可限制的。
2. 網(wǎng)格(Grid)基礎(chǔ)架構(gòu)的增強(qiáng)
Flex 集群
Oracle 12c 在集群安裝時(shí)支持兩類(lèi)配置:傳統(tǒng)標(biāo)準(zhǔn)集群和Flex集群。在一個(gè)傳統(tǒng)標(biāo)準(zhǔn)集群中,所有集群中的節(jié)點(diǎn)都彼此緊密地整合在一起,并通過(guò)私有網(wǎng)絡(luò)進(jìn)行互動(dòng),而且可以直接訪(fǎng)問(wèn)存儲(chǔ)。另一方面,F(xiàn)lex集群在Hub和Leaf節(jié)點(diǎn)結(jié)構(gòu)間引入了兩類(lèi)節(jié)點(diǎn)。分配在Hub中的節(jié)點(diǎn)類(lèi)似于傳統(tǒng)標(biāo)準(zhǔn)集群,它們通過(guò)私有網(wǎng)絡(luò)彼此互連在一起并對(duì)存儲(chǔ)可以進(jìn)行直接讀寫(xiě)訪(fǎng)問(wèn)。而Leaf節(jié)點(diǎn)不同于Hub節(jié)點(diǎn),它們不需要直接訪(fǎng)問(wèn)底層存儲(chǔ);相反的是,它們通過(guò)Hub節(jié)點(diǎn)對(duì)存儲(chǔ)和數(shù)據(jù)進(jìn)行訪(fǎng)問(wèn)。
你可以配置多達(dá)64個(gè)Hub節(jié)點(diǎn),而Leaf節(jié)點(diǎn)則可以更多。在Oracle Flex集群中,無(wú)需配置Leaf節(jié)點(diǎn)就可以擁有Hub節(jié)點(diǎn),而如果沒(méi)有Hub節(jié)點(diǎn)的話(huà),Leaf節(jié)點(diǎn)是不會(huì)存在的。對(duì)于一個(gè)單獨(dú)Hub節(jié)點(diǎn),你可以配置多個(gè)Leaf節(jié)點(diǎn)。在Oracle Flex集群中,只有Hub節(jié)點(diǎn)會(huì)直接訪(fǎng)問(wèn)OCR和Voting磁盤(pán)。當(dāng)你規(guī)劃大規(guī)模的集群環(huán)境時(shí),這將是一個(gè)非常不錯(cuò)的功能。這一系列設(shè)置會(huì)大大降低互連擁堵,并為傳統(tǒng)標(biāo)準(zhǔn)集群提供空間以擴(kuò)大集群。
部署Flex 集群的兩種途徑:
1. 在配置一個(gè)全新集群的時(shí)候部署
2. 升級(jí)一個(gè)標(biāo)準(zhǔn)集群模式到Flex集群
如果你正在配置一個(gè)全新的集群,你需要在步驟3中選擇集群配置的類(lèi)型,選擇配置一個(gè)Flex集群選項(xiàng),然后你需要在步驟6中對(duì)Hub和Leaf節(jié)點(diǎn)進(jìn)行分類(lèi)。對(duì)于每個(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用戶(hù)執(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
注意:
?你無(wú)法從Flex恢復(fù)回標(biāo)準(zhǔn)集群模式
?改變集群節(jié)點(diǎn)模式需要集群棧停止
?確保以一個(gè)固定的VIP配置GNS
ASM磁盤(pán)群組中的OCR備份
對(duì)于12c,OCR現(xiàn)在可以在A(yíng)SM磁盤(pán)群組中得以備份。這簡(jiǎn)化了通過(guò)所有節(jié)點(diǎn)對(duì)OCR備份文件的訪(fǎng)問(wèn)。為了防止OCR的恢復(fù),你不必?fù)?dān)心OCR最新的備份是在哪個(gè)節(jié)點(diǎn)上。可以從任何節(jié)點(diǎn)輕易識(shí)別存儲(chǔ)在A(yíng)SM中的最新備份并能很容易地執(zhí)行恢復(fù)。
以下演示了如何將ASM磁盤(pán)群組設(shè)置為OCR備份位置:
$ ./ocrconfig -backuploc +DG_OCR
支持IPv6協(xié)議
對(duì)于12c,Oracle是支持IPv6網(wǎng)絡(luò)協(xié)議配置的。你現(xiàn)在可以在IPv4或IPv6上配置共有或私有網(wǎng)絡(luò)接口,盡管如此,你需要確保在所有集群中的節(jié)點(diǎn)上使用相同的IP協(xié)議。
3. RAC數(shù)據(jù)庫(kù)的增強(qiáng)
What-if命令評(píng)估
通過(guò)srvctl使用新的What-if命令評(píng)估選項(xiàng),現(xiàn)在可以確定運(yùn)行此命令所造成的影響。這一新添加到srvctl的命令,可以在沒(méi)有實(shí)際執(zhí)行或是不對(duì)當(dāng)前系統(tǒng)做任何改變的情況下模擬此命令。這在想要對(duì)一個(gè)已存在的系統(tǒng)進(jìn)行更改卻對(duì)結(jié)果不確定的時(shí)候特別有用。這樣,此命令就會(huì)提供進(jìn)行變更的效果。而–eval 選項(xiàng)也可以通過(guò)crsctl 命令來(lái)使用。
例如,如果你想要知道停止一個(gè)特定數(shù)據(jù)庫(kù)會(huì)發(fā)生什么,那么你就可以使用以下示例:
$ ./srvctl stop database –d MYDB –eval
$ ./crsctl eval modify resource -attr “value”
srvctl的改進(jìn)
對(duì)于srvctl命令還有一些新增功能。以下演示了如何用這些新增功能停止或啟動(dòng)集群上的數(shù)據(jù)庫(kù)或?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)嘀鞅碇械挠涗?,并自?dòng)對(duì)子表進(jìn)行遞歸截?cái)?,并作為DELETE ON CASCADE服從外鍵引用。由于這是應(yīng)用到所有子表的,所以對(duì)遞歸層級(jí)的數(shù)量是沒(méi)有CAP的,可以是孫子表或是重孫子表等等。
這一增強(qiáng)擯棄了要在截?cái)嘁粋€(gè)主表之前先截?cái)嗨凶颖碛涗浀那疤?。新的CASCADE語(yǔ)句同樣也可以應(yīng)用到表分區(qū)和子表分區(qū)等。
SQL> TRUNCATE TABLE CASCADE;
SQL> TRUNCATE TABLE PARTITION CASCADE;
如果對(duì)于子表的外鍵沒(méi)有定義ON DELETE CASCADE 選項(xiàng),便會(huì)拋出一個(gè)ORA-14705錯(cuò)誤。
5. 對(duì)Top-N查詢(xún)結(jié)果限制記錄
在之前的版本中有多種間接手段來(lái)對(duì)頂部或底部記錄獲取Top-N查詢(xún)結(jié)果。而在12c中,通過(guò)新的FETCH FIRST|NEXT|PERCENT語(yǔ)句簡(jiǎn)化了這一過(guò)程并使其變得更為直接。為了從EMP表檢索排名前10的工資記錄,可以用以下新的SQL語(yǔ)句:
SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
FETCH FIRST 10 ROWS ONLY;
以下示例獲取排名前N的所有相似的記錄。例如,如果第十行的工資值是5000,并且還有其他員工的工資符合排名前N的標(biāo)準(zhǔn),那么它們也同樣會(huì)由WITH TIES語(yǔ)句獲取。
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條記錄并會(huì)顯示表的下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. 對(duì)SQL*Plus的各種增強(qiáng)
SQL*Plus的隱式結(jié)果:12c中,在沒(méi)有實(shí)際綁定某個(gè)RefCursor的情況下,SQL*Plus從一個(gè)PL/SQL塊的一個(gè)隱式游標(biāo)返回結(jié)果。這一新的dbms_sql.return_result過(guò)程將會(huì)對(duì)PL/SQL 塊中由SELECT 語(yǔ)句查詢(xún)所指定的結(jié)果加以返回并進(jìn)行格式化。以下代碼對(duì)此用法進(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)此過(guò)程得以執(zhí)行,會(huì)在SQL*Plus上返回格式化的記錄。
顯示不可見(jiàn)字段:在本系列文章的第一部分,我已經(jīng)對(duì)不可見(jiàn)字段的新特性做了相關(guān)闡述。當(dāng)字段定義為不可見(jiàn)時(shí),在描述表結(jié)構(gòu)時(shí)它們將不會(huì)顯示。然而,你可以通過(guò)在SQL*Plus提示符下進(jìn)行以下設(shè)置來(lái)顯示不可見(jiàn)字段的相關(guān)信息:
SQL> SET COLINVISIBLE ON|OFF
以上設(shè)置僅對(duì)DESCRIBE 命令有效。目前它還無(wú)法對(duì)不可見(jiàn)字段上的SELECT 語(yǔ)句結(jié)果產(chǎn)生效果。
7. 會(huì)話(huà)級(jí)序列
在12c中現(xiàn)在可以創(chuàng)建新的會(huì)話(huà)級(jí)數(shù)據(jù)庫(kù)序列來(lái)支持會(huì)話(huà)級(jí)序列值。這些序列的類(lèi)型在有會(huì)話(huà)級(jí)的全局臨時(shí)表上最為適用。
會(huì)話(huà)級(jí)序列會(huì)產(chǎn)生一個(gè)獨(dú)特范圍的值,這些值是限制在此會(huì)話(huà)內(nèi)的,而非超越此會(huì)話(huà)。一旦會(huì)話(huà)終止,會(huì)話(huà)序列的狀態(tài)也會(huì)消失。以下示例解釋了創(chuàng)建一個(gè)會(huì)話(huà)級(jí)序列:
SQL> CREATE SEQUENCE my_seq START WITH 1 INCREMENT BY 1 SESSION;
SQL> ALTER SEQUENCE my_seq GLOBAL|SESSION;
對(duì)于會(huì)話(huà)級(jí)序列,CACHE, NOCACHE, ORDER 或 NOORDER 語(yǔ)句會(huì)予以忽略。
8. WITH語(yǔ)句的改善
在12c中,你可以用SQL更快的運(yùn)行PL/SQL函數(shù)或過(guò)程,這些是由SQL語(yǔ)句的WITH語(yǔ)句加以定義和聲明的。以下示例演示了如何在WITH語(yǔ)句中定義和聲明一個(gè)過(guò)程或函數(shù):
WITH
PROCEDURE|FUNCTION test1 (…)
BEGIN
END;
SELECT FROM table_name;
/
盡管你不能在PL/SQL單元直接使用WITH語(yǔ)句,但其可以在PL/SQL單元中通過(guò)一個(gè)動(dòng)態(tài)SQL加以引用。
9. 擴(kuò)展數(shù)據(jù)類(lèi)型
在12c中,與早期版本相比,諸如VARCHAR2, NAVARCHAR2以及 RAW這些數(shù)據(jù)類(lèi)型的大小會(huì)從4K以及2K字節(jié)擴(kuò)展至32K字節(jié)。只要可能,擴(kuò)展字符的大小會(huì)降低對(duì)LOB數(shù)據(jù)類(lèi)型的使用。為了啟用擴(kuò)展字符大小,你必須將MAX_STRING_SIZE的初始數(shù)據(jù)庫(kù)參數(shù)設(shè)置為EXTENDED。
要使用擴(kuò)展字符類(lèi)型需要執(zhí)行以下過(guò)程:
1. 關(guān)閉數(shù)據(jù)庫(kù)
2. 以升級(jí)模式重啟數(shù)據(jù)庫(kù)
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ù)庫(kù)
6. 以讀寫(xiě)模式重啟數(shù)據(jù)庫(kù)
對(duì)比LOB數(shù)據(jù)類(lèi)型,在A(yíng)SSM表空間管理中,擴(kuò)展數(shù)據(jù)類(lèi)型的字段以SecureFiles LOB加以存儲(chǔ),而在非ASSM表空間管理中,它們則是以BasciFiles LOB進(jìn)行存儲(chǔ)的。
注意:一旦更改,你就不能再將設(shè)置改回STANDARD。
“Oracle 12c新特性有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!