這篇“Oracle數(shù)據(jù)庫12c的新特性有哪些”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Oracle數(shù)據(jù)庫12c的新特性有哪些”文章吧。
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站制作、成都網(wǎng)站建設(shè)與策劃設(shè)計,柏鄉(xiāng)網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:柏鄉(xiāng)等地區(qū)。柏鄉(xiāng)做網(wǎng)站價格咨詢:18982081108
1. 對表分區(qū)維護的增強
在第一部分中,我解釋了如何在線或是離線狀態(tài)下遷移一個表分區(qū)或子分區(qū)到另一個不同的表空間。在本文中,主要介紹表分區(qū)其他方面的改進。
添加多個新分區(qū)
在Oracle 12c R1之前,一次只可能添加一個新分區(qū)到一個已存在的分區(qū)表。要添加一個以上的新分區(qū),需要對每個新分區(qū)都單獨執(zhí)行一次ALTER TABLE ADD PARTITION語句。而Oracle 12c只需要使用一條單獨的ALTER TABLE ADD PARTITION 命令就可以添加多個新分區(qū),這增加了數(shù)據(jù)庫靈活性。以下示例說明了如何添加多個新分區(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) ); |
添加兩個新分區(qū):
SQL> ALTER TABLE emp_part ADD PARTITION PARTITION p4 VALUES LESS THAN (35000), PARTITION p5 VALUES LESS THAN (40000); |
同樣,只要MAXVALUE分區(qū)不存在,你就可以添加多個新分區(qū)到一個列表和系統(tǒng)分區(qū)表。
如何刪除和截斷多個分區(qū)/子分區(qū)
作為數(shù)據(jù)維護的一部分,DBA通常會在一個分區(qū)表上進行刪除或截斷分區(qū)的維護任務(wù)。在12c R1之前,對于一個已存在的分區(qū)表一次只可能刪除或截斷一個分區(qū)。而對于Oracle 12c, 可以用單條ALTER TABLE table_name {DROP|TRUNCATE} PARTITIONS 命令來撤銷或合并多個分區(qū)和子分區(qū)。
下例說明了如何在一個已存在分區(qū)表上刪除或截斷多個分區(qū):
SQL> ALTER TABLE emp_part DROP PARTITIONS p4,p5; SQL> ALTER TABLE emp_part TRUNCATE PARTITONS p4,p5; |
要保持索引更新,使用UPDATE INDEXES或UPDATE 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 語句的情況下刪除或截斷一個分區(qū),你可以在USER_INDEXES或USER_IND_PARTITIONS 字典視圖下查詢ORPHANED_ENTRIES字段以找出是否有索引包含任何的過期條目。
將單個分區(qū)分割為多個新分區(qū)
在12c中新增強的SPLIT PARTITION 語句可以讓你只使用一個單獨命令將一個特定分區(qū)或子分區(qū)分割為多個新分區(qū)。下例說明了如何將一個分區(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 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); |
將多個分區(qū)合并為一個分區(qū)
你可以使用單條ALTER TBALE MERGE PARTITIONS 語句將多個分區(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), 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ù)庫升級改進
每當(dāng)一個新的Oracle版本發(fā)布,DBA所要面臨的挑戰(zhàn)就是升級過程。該部分我將介紹12c中引入的針對升級的兩個改進。
預(yù)升級腳本
在12c R1中,原有的utlu[121]s.sql 腳本由一個大為改善的預(yù)升級信息腳本preupgrd.sql所取代。除了預(yù)升級檢查驗證,此腳本還能以修復(fù)腳本的形式解決在升級過程前后出現(xiàn)的各種問題。
可以對產(chǎn)生的修復(fù)腳本加以執(zhí)行來解決不同級別的問題,例如,預(yù)升級和升級后的問題。當(dāng)手動升級數(shù)據(jù)庫時,腳本必須在實際升級過程初始化之前加以手動執(zhí)行。然而,當(dāng)使用DBUA工具來進行數(shù)據(jù)庫升級時,它會將預(yù)升級腳本作為升級過程的一部分加以自動執(zhí)行,而且會提示你去執(zhí)行修復(fù)腳本以防止報錯。
如何執(zhí)行腳本:
SQL> @$ORACLE_12GHOME/rdbms/admin/preupgrd.sql |
以上腳本會產(chǎn)生一份日志文件以及一個[pre/post]upgrade_fixup.sql 腳本。所有這些文件都位于$ORACLE_BASE/cfgtoollogs 目錄下。在你繼續(xù)真正的升級過程之前,你應(yīng)該瀏覽日志文件中所提到的建議并執(zhí)行腳本以修復(fù)問題。
注意:你要確保將preupgrd.sql和utluppkg.sql 腳本從12c Oracle的目錄home/rdbms/admin directory拷貝至當(dāng)前的Oracle的database/rdbms/admin路徑。
并行升級功能
數(shù)據(jù)庫升級時間的長短取決于數(shù)據(jù)庫上所配置的組件數(shù)量,而不是數(shù)據(jù)庫的大小。在之前的版本中,我們是無法并行運行升級程序,從而快速完成整個升級過程的。
在12c R1中,原有的catupgrd.sql 腳本由catctl.pl 腳本(并行升級功能)替代,現(xiàn)在我們可以采用并行模式運行升級程序了。
以下流程說明了如何初始化并行升級功能(3個過程);你需要在升級模式下在啟動數(shù)據(jù)庫后運行這一腳本:
cd $ORACLE_12_HOME/perl/bin $ ./perl catctl.pl –n 3 -catupgrd.sql |
以上兩個步驟需要在手動升級數(shù)據(jù)庫時運行。而DBUA也繼承了這兩個新變化。
3. 通過網(wǎng)絡(luò)恢復(fù)數(shù)據(jù)文件
在12c R1中另一個重要的增強是,你現(xiàn)在可以在主數(shù)據(jù)庫和備用數(shù)據(jù)庫之間用一個服務(wù)名重新獲得或恢復(fù)數(shù)據(jù)文件、控制文件、參數(shù)文件、表空間或整個數(shù)據(jù)庫。這對于同步主數(shù)據(jù)庫和備用數(shù)據(jù)庫極為有用。
當(dāng)主數(shù)據(jù)庫和備用數(shù)據(jù)庫之間存在相當(dāng)大的差異時,你不再需要復(fù)雜的前滾流程來填補它們之間的差異。RMAN能夠通過網(wǎng)絡(luò)執(zhí)行備用恢復(fù)以進行增量備份,并且可以將它們應(yīng)用到物理備用數(shù)據(jù)庫。你可以用服務(wù)名直接將所需數(shù)據(jù)文件從備用點拷貝至主站,這是為了防止主數(shù)據(jù)庫上數(shù)據(jù)文件、表空間的丟失,或是沒有真正從備份集恢復(fù)數(shù)據(jù)文件。
以下流程演示了如何用此新功能執(zhí)行一個前滾來對備用數(shù)據(jù)庫和主數(shù)據(jù)庫進行同步:
在物理備用數(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í)行了一個增量備份,再將這些增量備份傳輸至備用目的地,接著將應(yīng)用這些文件到備用數(shù)據(jù)庫來進行同步。然而,需要確保已經(jīng)對primary_db_tns 進行了配置,即在備份數(shù)據(jù)庫端將其指向主數(shù)據(jù)庫。
在以下示例中,我將演示一個場景通過從備用數(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的增強
Data Pump版本有了不少有用的改進,例如在導(dǎo)出時將視圖轉(zhuǎn)換為表,以及在導(dǎo)入時關(guān)閉日志記錄等。
關(guān)閉redo日志的生成
Data Pump中引入了新的TRANSFORM選項,這對于對象在導(dǎo)入期間提供了關(guān)閉重做生成的靈活性。當(dāng)為TRANSFORM選項指定了DISABLE_ARCHIVE_LOGGING 值,那么在整個導(dǎo)入期間,重做生成就會處于關(guān)閉狀態(tài)。這一功能在導(dǎo)入大型表時緩解了壓力,并且減少了過度的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中另外一個改進。有了VIEWS_AS_TABLES 選項,你就可以將視圖數(shù)據(jù)載入表中。以下示例演示了如何在導(dǎo)出過程中將視圖數(shù)據(jù)載入到表中:
$ ./expdp directory=dpump dumpfile=abcd.dmp logfile=abcd.log views_as_tables=my_view:my_table |
5. 實時自動數(shù)據(jù)診斷監(jiān)視器 (ADDM) 分析
通過使用諸如AWR、ASH以及ADDM之類的自動診斷工具來分析數(shù)據(jù)庫的健康狀況,是每個DBA日程工作的一部分。盡管每種工具都可以在多個層面衡量數(shù)據(jù)庫的整體健康狀況和性能,但沒有哪個工具可以在數(shù)據(jù)庫反應(yīng)遲鈍或是完全掛起的時候使用。
當(dāng)數(shù)據(jù)庫反應(yīng)遲鈍或是掛起狀態(tài)時,而且你已經(jīng)配置了Oracle 企業(yè)管理器 12c的云控制,你就可以對嚴(yán)重的性能問題進行診斷。這對于你了解當(dāng)前數(shù)據(jù)庫發(fā)生了什么狀況有很大幫助,而且還能夠?qū)Υ藛栴}給出解決方案。
以下步驟演示了如何在Oracle 企業(yè)管理器 12c上分析數(shù)據(jù)庫狀態(tài):
在訪問數(shù)據(jù)庫訪問主頁面從Performance菜單選擇Emergency Monitoring 選項。這會顯示掛起分析表中排名靠前的阻止會話。
在Performance菜單選擇Real-Time ADDM 選項來執(zhí)行實時ADDM分析。
在收集了性能數(shù)據(jù)后,點擊Findings標(biāo)簽以獲得所有結(jié)果的交互總結(jié)。
6. 同時在多個表上收集統(tǒng)計數(shù)據(jù)
在之前的Oracle數(shù)據(jù)庫版本中,當(dāng)你執(zhí)行一個DBMS_STATS 程序來收集表、索引、模式或者數(shù)據(jù)庫級別的統(tǒng)計數(shù)據(jù)時,Oracle習(xí)慣于一次一個表的收集統(tǒng)計數(shù)據(jù)。如果表很大,那么推薦你采用并行方式。在12c R1中,你現(xiàn)在可以同時在多個表、分區(qū)以及子分區(qū)上收集統(tǒng)計數(shù)據(jù)。在你開始使用它之前,你必須對數(shù)據(jù)庫進行以下設(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)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁題目:Oracle數(shù)據(jù)庫12c的新特性有哪些
當(dāng)前鏈接:http://chinadenli.net/article26/jiiecg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、企業(yè)建站、標(biāo)簽優(yōu)化、網(wǎng)站設(shè)計公司、動態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)