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