久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Oracle數據庫12c的新特性有哪些

204次閱讀
沒有評論

共計 5518 個字符,預計需要花費 14 分鐘才能閱讀完成。

這篇“Oracle 數據庫 12c 的新特性有哪些”文章的知識點大部分人都不太理解,所以丸趣 TV 小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“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 的新特性有哪些”這篇文章的內容,相信大家都有了一定的了解,希望丸趣 TV 小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-15發表,共計5518字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 全州县| 荔波县| 淄博市| 普兰县| 磴口县| 射洪县| 长寿区| 绍兴县| 嘉义县| 玉树县| 嵊泗县| 武强县| 乡城县| 淮安市| 株洲县| 图片| 大同县| 商丘市| 康定县| 黎城县| 富裕县| 博罗县| 白朗县| 岐山县| 屏边| 呼和浩特市| 宜春市| 临江市| 黎川县| 双江| 扎鲁特旗| 泉州市| 临潭县| 元谋县| 陆川县| 溧水县| 台南市| 福建省| 社会| 普宁市| 彰化市|