溫馨提示×

溫馨提示×

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

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

Oracle數(shù)據(jù)庫12c的新特性有哪些

發(fā)布時(shí)間:2022-01-17 16:58:42 來源:億速云 閱讀:160 作者:iii 欄目:關(guān)系型數(shù)據(jù)庫

這篇“Oracle數(shù)據(jù)庫12c的新特性有哪些”文章的知識點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Oracle數(shù)據(jù)庫12c的新特性有哪些”文章吧。

  1. 對表分區(qū)維護(hù)的增強(qiáng)

  在第一部分中,我解釋了如何在線或是離線狀態(tài)下遷移一個(gè)表分區(qū)或子分區(qū)到另一個(gè)不同的表空間。在本文中,主要介紹表分區(qū)其他方面的改進(jìn)。

  添加多個(gè)新分區(qū)

  在Oracle 12c R1之前,一次只可能添加一個(gè)新分區(qū)到一個(gè)已存在的分區(qū)表。要添加一個(gè)以上的新分區(qū),需要對每個(gè)新分區(qū)都單獨(dú)執(zhí)行一次ALTER TABLE ADD PARTITION語句。而Oracle 12c只需要使用一條單獨(dú)的ALTER TABLE ADD PARTITION 命令就可以添加多個(gè)新分區(qū),這增加了數(shù)據(jù)庫靈活性。以下示例說明了如何添加多個(gè)新分區(qū)到已存在的分區(qū)表:

SQL> CREATE TABLE emp_part 
    (eno number(8), ename varchar2(40), sal number (6)) 
  PARTITION BY RANGE (sal) 
  (PARTITION p1 VALUES LESS THAN (10000), 
   PARTITION p2 VALUES LESS THAN (20000), 
   PARTITION p3 VALUES LESS THAN (30000) 
  );

  添加兩個(gè)新分區(qū):

SQL> ALTER TABLE emp_part ADD PARTITION 
  PARTITION p4 VALUES LESS THAN (35000), 
  PARTITION p5 VALUES LESS THAN (40000);

  同樣,只要MAXVALUE分區(qū)不存在,你就可以添加多個(gè)新分區(qū)到一個(gè)列表和系統(tǒng)分區(qū)表。

  如何刪除和截?cái)喽鄠€(gè)分區(qū)/子分區(qū)

  作為數(shù)據(jù)維護(hù)的一部分,DBA通常會(huì)在一個(gè)分區(qū)表上進(jìn)行刪除或截?cái)喾謪^(qū)的維護(hù)任務(wù)。在12c R1之前,對于一個(gè)已存在的分區(qū)表一次只可能刪除或截?cái)嘁粋€(gè)分區(qū)。而對于Oracle 12c, 可以用單條ALTER TABLE table_name {DROP|TRUNCATE} PARTITIONS 命令來撤銷或合并多個(gè)分區(qū)和子分區(qū)。

  下例說明了如何在一個(gè)已存在分區(qū)表上刪除或截?cái)喽鄠€(gè)分區(qū):

  SQL> ALTER TABLE emp_part DROP PARTITIONS p4,p5; 
  SQL> ALTER TABLE emp_part TRUNCATE PARTITONS p4,p5;

  要保持索引更新,使用UPDATE INDEXESUPDATE GLOBAL INDEXES語句,如下所示:

  SQL> ALTER TABLE emp_part DROP PARTITIONS p4,p5 UPDATE GLOBAL INDEXES; 
  SQL> ALTER TABLE emp_part TRUNCATE PARTITIONS p4,p5 UPDATE GLOBAL INDEXES;

  如果你在不使用UPDATE GLOBAL INDEXES 語句的情況下刪除或截?cái)嘁粋€(gè)分區(qū),你可以在USER_INDEXESUSER_IND_PARTITIONS 字典視圖下查詢ORPHANED_ENTRIES字段以找出是否有索引包含任何的過期條目。

  將單個(gè)分區(qū)分割為多個(gè)新分區(qū)

  在12c中新增強(qiáng)的SPLIT PARTITION 語句可以讓你只使用一個(gè)單獨(dú)命令將一個(gè)特定分區(qū)或子分區(qū)分割為多個(gè)新分區(qū)。下例說明了如何將一個(gè)分區(qū)分割為多個(gè)新分區(qū):

 SQL> CREATE TABLE emp_part 
  (eno number(8), ename varchar2(40), sal number (6)) 
  PARTITION BY RANGE (sal) 
  (PARTITION p1 VALUES LESS THAN (10000), 
  PARTITION p2 VALUES LESS THAN (20000), 
  PARTITION p_max (MAXVALUE) 
  ); 
  SQL> ALTER TABLE emp_part SPLIT PARTITION p_max INTO 
  (PARTITION p3 VALUES LESS THAN (25000), 
  PARTITION p4 VALUES LESS THAN (30000), PARTITION p_max);

  將多個(gè)分區(qū)合并為一個(gè)分區(qū)

  你可以使用單條ALTER TBALE MERGE PARTITIONS 語句將多個(gè)分區(qū)合并為一個(gè)單獨(dú)分區(qū):

  SQL> CREATE TABLE emp_part 
  (eno number(8), ename varchar2(40), sal number (6)) 
  PARTITION BY RANGE (sal) 
  (PARTITION p1 VALUES LESS THAN (10000), 
  PARTITION p2 VALUES LESS THAN (20000), 
  PARTITION p3 VALUES LESS THAN (30000), 
  PARTITION p4 VALUES LESS THAN (40000), 
  PARTITION p5 VALUES LESS THAN (50000), 
  PARTITION p_max (MAXVALUE) 
  ); 
  SQL> ALTER TABLE emp_part MERGE PARTITIONS p3,p4,p5 INTO PARTITION p_merge;

  如果分區(qū)范圍形成序列,你可以使用如下示例:

  SQL> ALTER TABLE emp_part MERGE PARTITIONS p3 TO p5 INTO PARTITION p_merge;

  2. 數(shù)據(jù)庫升級改進(jìn)

  每當(dāng)一個(gè)新的Oracle版本發(fā)布,DBA所要面臨的挑戰(zhàn)就是升級過程。該部分我將介紹12c中引入的針對升級的兩個(gè)改進(jìn)。

  預(yù)升級腳本

  在12c R1中,原有的utlu[121]s.sql 腳本由一個(gè)大為改善的預(yù)升級信息腳本preupgrd.sql所取代。除了預(yù)升級檢查驗(yàn)證,此腳本還能以修復(fù)腳本的形式解決在升級過程前后出現(xiàn)的各種問題。

  可以對產(chǎn)生的修復(fù)腳本加以執(zhí)行來解決不同級別的問題,例如,預(yù)升級和升級后的問題。當(dāng)手動(dòng)升級數(shù)據(jù)庫時(shí),腳本必須在實(shí)際升級過程初始化之前加以手動(dòng)執(zhí)行。然而,當(dāng)使用DBUA工具來進(jìn)行數(shù)據(jù)庫升級時(shí),它會(huì)將預(yù)升級腳本作為升級過程的一部分加以自動(dòng)執(zhí)行,而且會(huì)提示你去執(zhí)行修復(fù)腳本以防止報(bào)錯(cuò)。

  如何執(zhí)行腳本:

SQL> @$ORACLE_12GHOME/rdbms/admin/preupgrd.sql

  以上腳本會(huì)產(chǎn)生一份日志文件以及一個(gè)[pre/post]upgrade_fixup.sql 腳本。所有這些文件都位于$ORACLE_BASE/cfgtoollogs 目錄下。在你繼續(xù)真正的升級過程之前,你應(yīng)該瀏覽日志文件中所提到的建議并執(zhí)行腳本以修復(fù)問題。

  注意:你要確保將preupgrd.sqlutluppkg.sql 腳本從12c Oracle的目錄home/rdbms/admin directory拷貝至當(dāng)前的Oracle的database/rdbms/admin路徑。

  并行升級功能

  數(shù)據(jù)庫升級時(shí)間的長短取決于數(shù)據(jù)庫上所配置的組件數(shù)量,而不是數(shù)據(jù)庫的大小。在之前的版本中,我們是無法并行運(yùn)行升級程序,從而快速完成整個(gè)升級過程的。

  在12c R1中,原有的catupgrd.sql 腳本由catctl.pl 腳本(并行升級功能)替代,現(xiàn)在我們可以采用并行模式運(yùn)行升級程序了。

  以下流程說明了如何初始化并行升級功能(3個(gè)過程);你需要在升級模式下在啟動(dòng)數(shù)據(jù)庫后運(yùn)行這一腳本:

  cd $ORACLE_12_HOME/perl/bin 
  $ ./perl catctl.pl –n 3 -catupgrd.sql

  以上兩個(gè)步驟需要在手動(dòng)升級數(shù)據(jù)庫時(shí)運(yùn)行。而DBUA也繼承了這兩個(gè)新變化。

  3. 通過網(wǎng)絡(luò)恢復(fù)數(shù)據(jù)文件

  在12c R1中另一個(gè)重要的增強(qiáng)是,你現(xiàn)在可以在主數(shù)據(jù)庫和備用數(shù)據(jù)庫之間用一個(gè)服務(wù)名重新獲得或恢復(fù)數(shù)據(jù)文件、控制文件、參數(shù)文件、表空間或整個(gè)數(shù)據(jù)庫。這對于同步主數(shù)據(jù)庫和備用數(shù)據(jù)庫極為有用。

  當(dāng)主數(shù)據(jù)庫和備用數(shù)據(jù)庫之間存在相當(dāng)大的差異時(shí),你不再需要復(fù)雜的前滾流程來填補(bǔ)它們之間的差異。RMAN能夠通過網(wǎng)絡(luò)執(zhí)行備用恢復(fù)以進(jìn)行增量備份,并且可以將它們應(yīng)用到物理備用數(shù)據(jù)庫。你可以用服務(wù)名直接將所需數(shù)據(jù)文件從備用點(diǎn)拷貝至主站,這是為了防止主數(shù)據(jù)庫上數(shù)據(jù)文件、表空間的丟失,或是沒有真正從備份集恢復(fù)數(shù)據(jù)文件。

  以下流程演示了如何用此新功能執(zhí)行一個(gè)前滾來對備用數(shù)據(jù)庫和主數(shù)據(jù)庫進(jìn)行同步:

  在物理備用數(shù)據(jù)庫上:

  ./rman target "username/password@standby_db_tns as SYSBACKUP" 
  RMAN> RECOVER DATABASE FROM SERVICE primary_db_tns USING COMPRESSED BACKUPSET;

  以上示例使用備用數(shù)據(jù)庫上定義的primary_db_tns 連接字符串連接到主數(shù)據(jù)庫,然后執(zhí)行了一個(gè)增量備份,再將這些增量備份傳輸至備用目的地,接著將應(yīng)用這些文件到備用數(shù)據(jù)庫來進(jìn)行同步。然而,需要確保已經(jīng)對primary_db_tns 進(jìn)行了配置,即在備份數(shù)據(jù)庫端將其指向主數(shù)據(jù)庫。

  在以下示例中,我將演示一個(gè)場景通過從備用數(shù)據(jù)庫獲取數(shù)據(jù)文件來恢復(fù)主數(shù)據(jù)庫上丟失的數(shù)據(jù)文件:

  在主數(shù)據(jù)庫上:

  ./rman target "username/password@primary_db_tns as SYSBACKUP" 
  RMAN> RESTORE DATAFILE ‘+DG_DISKGROUP/DBANME/DATAFILE/filename’ FROM SERVICE standby_db_tns;

  4. 對Data Pump的增強(qiáng)

  Data Pump版本有了不少有用的改進(jìn),例如在導(dǎo)出時(shí)將視圖轉(zhuǎn)換為表,以及在導(dǎo)入時(shí)關(guān)閉日志記錄等。

  關(guān)閉redo日志的生成

  Data Pump中引入了新的TRANSFORM選項(xiàng),這對于對象在導(dǎo)入期間提供了關(guān)閉重做生成的靈活性。當(dāng)為TRANSFORM選項(xiàng)指定了DISABLE_ARCHIVE_LOGGING 值,那么在整個(gè)導(dǎo)入期間,重做生成就會(huì)處于關(guān)閉狀態(tài)。這一功能在導(dǎo)入大型表時(shí)緩解了壓力,并且減少了過度的redo產(chǎn)生,從而加快了導(dǎo)入。這一屬性還可應(yīng)用到表以及索引。以下示例演示了這一功能:

$ ./impdp directory=dpump dumpfile=abcd.dmp logfile=abcd.log TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y

  將視圖轉(zhuǎn)換為表

  這是Data Pump中另外一個(gè)改進(jìn)。有了VIEWS_AS_TABLES 選項(xiàng),你就可以將視圖數(shù)據(jù)載入表中。以下示例演示了如何在導(dǎo)出過程中將視圖數(shù)據(jù)載入到表中:

$ ./expdp directory=dpump dumpfile=abcd.dmp logfile=abcd.log views_as_tables=my_view:my_table

  5. 實(shí)時(shí)自動(dòng)數(shù)據(jù)診斷監(jiān)視器 (ADDM) 分析

  通過使用諸如AWR、ASH以及ADDM之類的自動(dòng)診斷工具來分析數(shù)據(jù)庫的健康狀況,是每個(gè)DBA日程工作的一部分。盡管每種工具都可以在多個(gè)層面衡量數(shù)據(jù)庫的整體健康狀況和性能,但沒有哪個(gè)工具可以在數(shù)據(jù)庫反應(yīng)遲鈍或是完全掛起的時(shí)候使用。

  當(dāng)數(shù)據(jù)庫反應(yīng)遲鈍或是掛起狀態(tài)時(shí),而且你已經(jīng)配置了Oracle 企業(yè)管理器 12c的云控制,你就可以對嚴(yán)重的性能問題進(jìn)行診斷。這對于你了解當(dāng)前數(shù)據(jù)庫發(fā)生了什么狀況有很大幫助,而且還能夠?qū)Υ藛栴}給出解決方案。

  以下步驟演示了如何在Oracle 企業(yè)管理器 12c上分析數(shù)據(jù)庫狀態(tài):

  • 在訪問數(shù)據(jù)庫訪問主頁面從Performance菜單選擇Emergency Monitoring 選項(xiàng)。這會(huì)顯示掛起分析表中排名靠前的阻止會(huì)話。

  • Performance菜單選擇Real-Time ADDM 選項(xiàng)來執(zhí)行實(shí)時(shí)ADDM分析。

  • 在收集了性能數(shù)據(jù)后,點(diǎn)擊Findings標(biāo)簽以獲得所有結(jié)果的交互總結(jié)。

  6. 同時(shí)在多個(gè)表上收集統(tǒng)計(jì)數(shù)據(jù)

  在之前的Oracle數(shù)據(jù)庫版本中,當(dāng)你執(zhí)行一個(gè)DBMS_STATS 程序來收集表、索引、模式或者數(shù)據(jù)庫級別的統(tǒng)計(jì)數(shù)據(jù)時(shí),Oracle習(xí)慣于一次一個(gè)表的收集統(tǒng)計(jì)數(shù)據(jù)。如果表很大,那么推薦你采用并行方式。在12c R1中,你現(xiàn)在可以同時(shí)在多個(gè)表、分區(qū)以及子分區(qū)上收集統(tǒng)計(jì)數(shù)據(jù)。在你開始使用它之前,你必須對數(shù)據(jù)庫進(jìn)行以下設(shè)置以開啟此功能:

  SQL> ALTER SYSTEM SET RESOURCE_MANAGER_PLAN='DEFAULT_MAIN'; 
  SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=4; 
  SQL> EXEC DBMS_STATS.SET_GLOBAL_PREFS('CONCURRENT', 'ALL'); 
  SQL> EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SCOTT');

以上就是關(guān)于“Oracle數(shù)據(jù)庫12c的新特性有哪些”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向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