精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Oracle 12c新特性對于業務上的一些影響總結

數據庫 Oracle
Oracle 12c的發布,將給廣大DBA的工作帶來新的變化。本文為您總結Oracle 12c新特性對于業務上的一些影響。

 1、不可見字段

在Oracle 11g R1中,Oracle以不可見索引和虛擬字段的形式引入了一些不錯的增強特性。繼承前者并發揚光大,Oracle 12c R1中引入了不可見字段思想。在之前的版本中,為了隱藏重要的數據字段以避免在通用查詢中顯示,我們往往會創建一個視圖來隱藏所需信息或應用某些安全條件。

  在12c R1中,你可以在表中創建不可見字段。當一個字段定義為不可見時,這一字段就不會出現在通用查詢中,除非在SQL語句或條件中有顯式的提及這一字段,或是在表定義中有DESCRIBED。要添加或是修改一個不可見字段是非常容易的,反之亦然。

  1. SQL> CREATE TABLE emp (eno number(6), ename name varchar2(40), sal number(9) INVISIBLE); 
  2. SQL> ALTER TABLE emp MODIFY (sal visible); 

  你必須在INSERT語句中顯式提及不可見字段名以將不可見字段插入到數據庫中。虛擬字段和分區字段同樣也可以定義為不可見類型。但臨時表,外部表和集群表并不支持不可見字段。

2、 DDL日志

  在之前的版本中沒有可選方法來對DDL操作進行日志記錄。而在12c R1中,你現在可以將DDL操作寫入xml和日志文件中。這對于了解誰在什么時間執行了create或drop命令是十分有用的。要開啟這一功能必須對ENABLE_DDL_LOGGING 初始參數加以配置。這一參數可以在數據庫或會話級加以設置。當此參數為啟用狀態,所有的DDL命令會記錄在$ORACLE_BASE/diag/rdbms/DBNAME/log|ddl 路徑下的xml和日志文件中。一個xml中包含DDL命令,IP地址,時間戳等信息。這可以幫助確定在什么時候對用戶或表進行了刪除亦或是一條DDL語句在何時觸發。

  開啟DDL日志功能

  1. SQL> ALTER SYSTEM|SESSION SET ENABLE_DDL_LOGGING=TRUE

以下的DDL語句可能會記錄在xml或日志文件中:

  • CREATE|ALTER|DROP|TRUNCATE TABLE

  • DROP USER

  • CREATE|ALTER|DROP PACKAGE|FUNCTION|VIEW|SYNONYM|SEQUENC

3、如何在RMAN中執行SQL語句

  在12c中,你可以在不需要SQL前綴的情況下在RMAN中執行任何SQL和PL/SQL命令,即你可以從RMAN直接執行任何SQL和PL/SQL命令。如下便是在RMAN中執行SQL語句的示例:

  1. RMAN> SELECT username,machine FROM v$session;  
  2. RMAN> ALTER TABLESPACE users ADD DATAFILE SIZE 121m; 

4、 RMAN中的表恢復和分區恢復

  Oracle數據庫備份主要分為兩類:邏輯和物理備份。每種備份類型都有其自身的優缺點。在之前的版本中,利用現有物理備份來恢復表或分區是不可行的。為了恢復特定對象,邏輯備份是必需的。對于12c R1,你可以在發生drop或truncate的情況下從RMAN備份將一個特定的表或分區恢復到某個時間點或SCN。

  當通過RMAN發起一個表或分區恢復時,大概流程是這樣的:

  • 確定要恢復表或分區所需的備份集

  • 在恢復表或分區的過程中,一個輔助數據庫會臨時設置為某個時間點

  • 利用數據泵將所需表或分區導出到一個dumpfile

  • 你可以從源數據庫導入表或分區(可選)

  • 在恢復過程中進行重命名操作

  以下是一個通過RMAN對表進行時間點恢復的示例(確保你已經對稍早的數據庫進行了完整備份):

  1. RMAN> connect target "username/password as SYSBACKUP";  
  2. RMAN> RECOVER TABLE username.tablename UNTIL TIME 'TIMESTAMP…'  
  3. AUXILIARY DESTINATION '/u01/tablerecovery'  
  4. DATAPUMP DESTINATION '/u01/dpump'  
  5. DUMP FILE 'tablename.dmp'  
  6. NOTABLEIMPORT -- this option avoids importing the table automatically.(此選項避免自動導入表)  
  7. REMAP TABLE 'username.tablename''username.new_table_name'-- can rename table with this option.(此選項可以對表重命名) 

   重要提示:

  • 確保對于輔助數據庫在/u01文件系統下有足夠的可用空間,同時對數據泵文件也有同樣保證

  • 必須要存在一份完整的數據庫備份,或者至少是要有SYSTEM相關的表空間備份

  以下是在RMAN中應用表或分區恢復的限制和約束:

  • SYS用戶表或分區無法恢復

  • 存儲于SYSAUX和SYSTEM表空間下的表和分區無法恢復

  • 當REMAP選項用來恢復的表包含NOT NULL約束時,恢復此表是不可行的

5、 限制PGA的大小

  在Oracle 12c R1之前,沒有選項可以用來限制和控制PGA的大小。雖然你設置某個大小為PGA_AGGREGATE_TARGET 的初始參數,Oracle會根據工作負載和需求來動態地增大或減小PGA的大小。而在12c中,你可以通過開啟自動PGA管理來對PGA設定硬性限制,這需要對PGA_AGGREGATE_LIMIT 參數進行設置。因此,你現在可以通過設置新的參數來對PGA設定硬性限制以避免過度使用PGA。

  1. SQL> ALTER SYSTEM SET PGA_AGGREGATE_LIMIT=2G;  
  2. SQL> ALTER SYSTEM SET PGA_AGGREGATE_LIMIT=0; --disables the hard limit 

  重要提示:

  當超過了當前PGA的限制,Oracle會自動終止/中止會話或進程以保持最合適的PGA內存。

6、 對表分區維護的增強

  在第一部分中,我解釋了如何在線或是離線狀態下遷移一個表分區或子分區到另一個不同的表空間。在本文中,主要介紹表分區其他方面的改進。

  添加多個新分區

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

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

  添加兩個新分區:

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

  同樣,只要MAXVALUE分區不存在,你就可以添加多個新分區到一個列表和系統分區表。

  如何刪除和截斷多個分區/子分區

  作為數據維護的一部分,DBA通常會在一個分區表上進行刪除或截斷分區的維護任務。在12c R1之前,對于一個已存在的分區表一次只可能刪除或截斷一個分區。而對于Oracle 12c, 可以用單條ALTER TABLE table_name {DROP|TRUNCATE} PARTITIONS 命令來撤銷或合并多個分區和子分區。

  下例說明了如何在一個已存在分區表上刪除或截斷多個分區:

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

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

  1. SQL> ALTER TABLE emp_part DROP PARTITIONS p4,p5 UPDATE GLOBAL INDEXES;  
  2. 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 語句可以讓你只使用一個單獨命令將一個特定分區或子分區分割為多個新分區。下例說明了如何將一個分區分割為多個新分區:

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

  將多個分區合并為一個分區

  你可以使用單條ALTER TBALE MERGE PARTITIONS 語句將多個分區合并為一個單獨分區:

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

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

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

7、數據庫升級改進

  每當一個新的Oracle版本發布,DBA所要面臨的挑戰就是升級過程。該部分我將介紹12c中引入的針對升級的兩個改進。

  預升級腳本

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

  可以對產生的修復腳本加以執行來解決不同級別的問題,例如,預升級和升級后的問題。當手動升級數據庫時,腳本必須在實際升級過程初始化之前加以手動執行。然而,當使用DBUA工具來進行數據庫升級時,它會將預升級腳本作為升級過程的一部分加以自動執行,而且會提示你去執行修復腳本以防止報錯。

  如何執行腳本:

  1. 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個過程);你需要在升級模式下在啟動數據庫后運行這一腳本:

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

  以上兩個步驟需要在手動升級數據庫時運行。而DBUA也繼承了這兩個新變化。

8、通過網絡恢復數據文件

  在12c R1中另一個重要的增強是,你現在可以在主數據庫和備用數據庫之間用一個服務名重新獲得或恢復數據文件、控制文件、參數文件、表空間或整個數據庫。這對于同步主數據庫和備用數據庫極為有用。

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

  以下流程演示了如何用此新功能執行一個前滾來對備用數據庫和主數據庫進行同步:

  在物理備用數據庫上:

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

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

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

  在主數據庫上:

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

#p#

9、 對Data Pump的增強

  Data Pump版本有了不少有用的改進,例如在導出時將視圖轉換為表,以及在導入時關閉日志記錄等。

  關閉redo日志的生成

  Data Pump中引入了新的TRANSFORM選項,這對于對象在導入期間提供了關閉重做生成的靈活性。當為TRANSFORM選項指定了DISABLE_ARCHIVE_LOGGING 值,那么在整個導入期間,重做生成就會處于關閉狀態。這一功能在導入大型表時緩解了壓力,并且減少了過度的redo產生,從而加快了導入。這一屬性還可應用到表以及索引。以下示例演示了這一功能:

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

  將視圖轉換為表

  這是Data Pump中另外一個改進。有了VIEWS_AS_TABLES 選項,你就可以將視圖數據載入表中。以下示例演示了如何在導出過程中將視圖數據載入到表中:

  1. $ ./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標簽以獲得所有結果的交互總結。

10、 同時在多個表上收集統計數據

  在之前的Oracle數據庫版本中,當你執行一個DBMS_STATS 程序來收集表、索引、模式或者數據庫級別的統計數據時,Oracle習慣于一次一個表的收集統計數據。如果表很大,那么推薦你采用并行方式。在12c R1中,你現在可以同時在多個表、分區以及子分區上收集統計數據。在你開始使用它之前,你必須對數據庫進行以下設置以開啟此功能:

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

11、 自動存儲管理(ASM)中的增強

Flex ASM

在一個典型的網格基礎架構安裝環境中,每個節點都運行自身的ASM實例,并將其作為運行于此節點上數據庫的存儲容器。但這種設置會存在相應的單點故障危險。例如,如果此節點上的ASM實例發生故障,則運行于此節點上的所有數據庫和實例都會受到影響。為了避免ASM實例的單點故障,Oracle 12c提供了一個名為Flex ASM的功能。Flex ASM是一個不同的概念和架構,只有很少數量的ASM實例需要運行在集群中的一些服務器上。當某節點上的一個ASM實例發生故障,Oracle集群就會在另一個不同的節點上自動啟動替代ASM實例以加強可用性。另外,這一設置還為運行在此節點上的實例提供了ASM實例負載均衡能力。Flex ASM的另一個優勢就是可以在單獨節點上加以配置。

當選擇Flex Cluster選項作為集群安裝環境的第一部分時,鑒于Flex Cluster的要求,Flex ASM配置就會被自動選擇。傳統集群同樣也適用于Flex ASM。當你決定使用Flex ASM時,你必須保證所需的網絡是可用的。你可以選擇Flex ASM存儲選項作為集群安裝環境的一部分,或是使用ASMCA在一個標準集群環境下啟用Flex ASM。

以下命令顯示了當前的ASM模式:

  1. $ ./asmcmd showclustermode  
  2. $ ./srvctl config asm 

或是連接到ASM實例并查詢INSTANCE_TYPE參數。如果輸出值為ASMPROX,那么,就說明Flex ASM已經配置好了。

ASM存儲限制放寬

ASM存儲硬性限額在最大ASM磁盤群組和磁盤大小上已經大幅提升。在 12c R1中,ASM支持511個ASM磁盤群組,而在11g R2中只支持63個。同樣,相比起在11g R2中20 PB的磁盤大小,現在已經將這一數字提高到32 PB。

對ASM均衡操作的優化

12c 中新的EXPLAIN WORK FOR 語句用于衡量一個給定ASM均衡操作所需的工作量,并在V$ASM_ESTIMATE動態視圖中輸入結果。使用此動態視圖,你可以調整POWERLIMIT語句對重新平衡操作工作進行改善。例如,如果你想衡量添加一個新ASM磁盤所需的工作量,在實際執行手動均衡操作之前,你可以使用以下命令:

  1. SQL> EXPLAIN WORK FOR ALTER DISKGROUP DG_DATA ADD DISK data_005;  
  2. SQL> SELECT est_work FROM V$ASM_ESTIMATE;  
  3. SQL> EXPLAIN WORK SET STATEMENT_ID='ADD_DISK' FOR ALTER DISKGROUP DG_DATA AD DISK data_005;  
  4. SQL> SELECT est_work FROM V$ASM_ESTIMATE WHERE STATEMENT_ID = 'ADD_DISK’; 

你可以根據從動態視圖中獲取的輸出來調整POWER的限制以改善均衡操作。

ASM 磁盤清理

在一個ASM磁盤群組中,新的ASM磁盤清理操作分為正常或高冗余兩個級別,它可以檢驗ASM磁盤群組中所有磁盤的邏輯數據破壞,并且可以自動對邏輯破壞進行修復,如果檢測到有邏輯數據破壞,就會使用ASM鏡像磁盤。磁盤清理可以在磁盤群組,特定磁盤或是某個文件上執行,這樣其影響可降到最小程度。以下演示了磁盤清理場景:

  1. SQL> ALTER DISKGROUP dg_data SCRUB POWER LOW:HIGH:AUTO:MAX;  
  2. SQL> ALTER DISKGROUP dg_data SCRUB FILE '+DG_DATA/MYDB/DATAFILE/filename.xxxx.xxxx'  
  3. REPAIR POWER AUTO; 

ASM的活動會話歷史(ASH)

V$ACTIVE_SESSION_HISOTRY 動態視圖現在還可以提供ASM實例的活動會話抽樣。然而,診斷包的使用是受到許可限制的。

12、 網格(Grid)基礎架構的增強

Flex 集群

Oracle 12c 在集群安裝時支持兩類配置:傳統標準集群和Flex集群。在一個傳統標準集群中,所有集群中的節點都彼此緊密地整合在一起,并通過私有網絡進行互動,而且可以直接訪問存儲。另一方面,Flex集群在Hub和Leaf節點結構間引入了兩類節點。分配在Hub中的節點類似于傳統標準集群,它們通過私有網絡彼此互連在一起并對存儲可以進行直接讀寫訪問。而Leaf節點不同于Hub節點,它們不需要直接訪問底層存儲;相反的是,它們通過Hub節點對存儲和數據進行訪問。

你可以配置多達64個Hub節點,而Leaf節點則可以更多。在Oracle Flex集群中,無需配置Leaf節點就可以擁有Hub節點,而如果沒有Hub節點的話,Leaf節點是不會存在的。對于一個單獨Hub節點,你可以配置多個Leaf節點。在Oracle Flex集群中,只有Hub節點會直接訪問OCR和Voting磁盤。當你規劃大規模的集群環境時,這將是一個非常不錯的功能。這一系列設置會大大降低互連擁堵,并為傳統標準集群提供空間以擴大集群。

部署Flex集群的兩種途徑:

1. 在配置一個全新集群的時候部署

2. 升級一個標準集群模式到Flex集群

如果你正在配置一個全新的集群,你需要在步驟3中選擇集群配置的類型,選擇配置一個Flex集群選項,然后你需要在步驟6中對Hub和Leaf節點進行分類。對于每個節點,選擇相應角色是Hub或是Leaf,而虛擬主機名也是可選的。

將一個標準集群模式轉換為Flex 集群模式需要以下步驟:

1. 用以下命令獲取集群的當前狀態:

$ ./crsctl get cluster mode status

2. 以root用戶執行以下命令:

$ ./crsctl set cluster mode flex 
$ ./crsctl stop crs 
$ ./crsctl start crs –wait

3. 根據設計改變節點角色:

$ ./crsctl get node role config 
$ ./crsctl set node role hub|leaf 
$ ./crsctl stop crs 
$ ./crsctl start crs -wait

注意:

·        你無法從Flex恢復回標準集群模式

·        改變集群節點模式需要集群棧停止

·        確保以一個固定的VIP配置GNS

ASM磁盤群組中的OCR備份

對于12c,OCR現在可以在ASM磁盤群組中得以備份。這簡化了通過所有節點對OCR備份文件的訪問。為了防止OCR的恢復,你不必擔心OCR最新的備份是在哪個節點上。可以從任何節點輕易識別存儲在ASM中的最新備份并能很容易地執行恢復。

以下演示了如何將ASM磁盤群組設置為OCR備份位置:

$ ./ocrconfig -backuploc +DG_OCR

支持IPv6協議

對于12c,Oracle是支持IPv6網絡協議配置的。你現在可以在IPv4或IPv6上配置共有或私有網絡接口,盡管如此,你需要確保在所有集群中的節點上使用相同的IP協議。

13、 RAC數據庫的增強

What-if命令評估

通過srvctl使用新的What-if命令評估選項,現在可以確定運行此命令所造成的影響。這一新添加到srvctl的命令,可以在沒有實際執行或是不對當前系統做任何改變的情況下模擬此命令。這在想要對一個已存在的系統進行更改卻對結果不確定的時候特別有用。這樣,此命令就會提供進行變更的效果。而–eval 選項也可以通過crsctl 命令來使用。

例如,如果你想要知道停止一個特定數據庫會發生什么,那么你就可以使用以下示例:

$ ./srvctl stop database –d MYDB –eval 
$ ./crsctl eval modify resource -attr “value”

srvctl的改進

對于srvctl命令還有一些新增功能。以下演示了如何用這些新增功能停止或啟動集群上的數據庫或實例資源。

srvctl start database|instance –startoption NOMOUNT|MOUNT|OPEN 
srvctl stop database|instance –stopoption NOMOUNT|MOUNT|OPEN

13、截斷表CASCADE

在之前的版本中,在子表引用一個主表以及子表存在記錄的情況下,是不提供截斷此主表操作的。而在12c中的帶有CASCADE操作的TRUNCATE TABLE可以截斷主表中的記錄,并自動對子表進行遞歸截斷,并作為DELETE ON CASCADE服從外鍵引用。由于這是應用到所有子表的,所以對遞歸層級的數量是沒有CAP的,可以是孫子表或是重孫子表等等。

這一增強擯棄了要在截斷一個主表之前先截斷所有子表記錄的前提。新的CASCADE語句同樣也可以應用到表分區和子表分區等。

SQL> TRUNCATE TABLE CASCADE; 
SQL> TRUNCATE TABLE PARTITION CASCADE;

如果對于子表的外鍵沒有定義ON DELETE CASCADE 選項,便會拋出一個ORA-14705錯誤。

14、對Top-N查詢結果限制記錄

在之前的版本中有多種間接手段來對頂部或底部記錄獲取Top-N查詢結果。而在12c中,通過新的FETCH FIRST|NEXT|PERCENT語句簡化了這一過程并使其變得更為直接。為了從EMP表檢索排名前10的工資記錄,可以用以下新的SQL語句:

SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC 
FETCH FIRST 10 ROWS ONLY;

以下示例獲取排名前N的所有相似的記錄。例如,如果第十行的工資值是5000,并且還有其他員工的工資符合排名前N的標準,那么它們也同樣會由WITH TIES語句獲取。

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條記錄并會顯示表的下5條記錄:

SQL> SELECT eno,ename,sal FROM emp ORDER BY SAL DESC 
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY;

所有這些限制同樣可以很好的應用于PL/SQL塊。

  1. BEGIN  
  2. SELECT sal BULK COLLECT INTO sal_v FROM EMP  
  3. FETCH FIRST 100 ROWS ONLY;  
  4. END

15、對SQL*Plus的各種增強

SQL*Plus的隱式結果:12c中,在沒有實際綁定某個RefCursor的情況下,SQL*Plus從一個PL/SQL塊的一個隱式游標返回結果。這一新的dbms_sql.return_result過程將會對PL/SQL 塊中由SELECT 語句查詢所指定的結果加以返回并進行格式化。以下代碼對此用法進行了描述:

  1. SQL> CREATE PROCEDURE mp1  
  2. res1 sys_refcursor;  
  3. BEGIN  
  4. open res1 for SELECT eno,ename,sal FROM emp;  
  5. dbms_sql.return_result(res1);  
  6. END;  
  7. SQL> execute mp1; 

當此過程得以執行,會在SQL*Plus上返回格式化的記錄。

顯示不可見字段:在本系列文章的第一部分,我已經對不可見字段的新特性做了相關闡述。當字段定義為不可見時,在描述表結構時它們將不會顯示。然而,你可以通過在SQL*Plus提示符下進行以下設置來顯示不可見字段的相關信息:

SQL> SET COLINVISIBLE ON|OFF

以上設置僅對DESCRIBE 命令有效。目前它還無法對不可見字段上的SELECT 語句結果產生效果。

16、會話級序列

在12c中現在可以創建新的會話級數據庫序列來支持會話級序列值。這些序列的類型在有會話級的全局臨時表上最為適用。

會話級序列會產生一個獨特范圍的值,這些值是限制在此會話內的,而非超越此會話。一旦會話終止,會話序列的狀態也會消失。以下示例解釋了創建一個會話級序列:

  1. SQL> CREATE SEQUENCE my_seq START WITH 1 INCREMENT BY 1 SESSION;  
  2. SQL> ALTER SEQUENCE my_seq GLOBAL|SESSION; 

對于會話級序列,CACHE, NOCACHE, ORDER 或 NOORDER 語句會予以忽略。

17、WITH語句的改善

在12c中,你可以用SQL更快的運行PL/SQL函數或過程,這些是由SQL語句的WITH語句加以定義和聲明的。以下示例演示了如何在WITH語句中定義和聲明一個過程或函數:

  1. WITH  
  2. PROCEDURE|FUNCTION test1 (…)  
  3. BEGIN  
  4. END;  
  5. SELECT FROM table_name;  

盡管你不能在PL/SQL單元直接使用WITH語句,但其可以在PL/SQL單元中通過一個動態SQL加以引用。

18、擴展數據類型

在12c中,與早期版本相比,諸如VARCHAR2, NAVARCHAR2以及 RAW這些數據類型的大小會從4K以及2K字節擴展至32K字節。只要可能,擴展字符的大小會降低對LOB數據類型的使用。為了啟用擴展字符大小,你必須將MAX_STRING_SIZE的初始數據庫參數設置為EXTENDED。

要使用擴展字符類型需要執行以下過程:

1. 關閉數據庫

2. 以升級模式重啟數據庫

3. 更改參數: ALTERSYSTEM SET MAX_STRING_SIZE=EXTENDED;

4. 執行 utl32k.sql as sysdba: SQL> @?/rdbms/admin/utl32k.sql

5. 關閉數據庫

6. 以讀寫模式重啟數據庫

對比LOB數據類型,在ASSM表空間管理中,擴展數據類型的字段以SecureFiles LOB加以存儲,而在非ASSM表空間管理中,它們則是以BasciFiles LOB進行存儲的。

注意:一旦更改,你就不能再將設置改回STANDARD。

 

19、 在線重命名和重新定位活躍數據文件

  不同于以往的版本,在Oracle數據庫12c R1版本中對數據文件的遷移或重命名不再需要太多繁瑣的步驟,即把表空間置為只讀模式,接下來是對數據文件進行離線操作。在12c R1中,可以使用ALTER DATABASE MOVE DATAFILE這樣的SQL語句對數據文件進行在線重命名和移動。而當此數據文件正在傳輸時,終端用戶可以執行查詢,DML以及DDL方面的任務。另外,數據文件可以在存儲設備間遷移,如從非ASM遷移至ASM,反之亦然。

  重命名數據文件:

 

SQL> ALTER DATABASE MOVE DATAFILE '/u00/data/users01.dbf' TO '/u00/data/users_01.dbf';

 

  從非ASM遷移數據文件至ASM:

 

SQL> ALTER DATABASE MOVE DATAFILE '/u00/data/users_01.dbf' TO '+DG_DATA';

 

  將數據文件從一個ASM磁盤群組遷移至另一個ASM磁盤群組:

 

SQL> ALTER DATABASE MOVE DATAFILE '+DG_DATA/DBNAME/DATAFILE/users_01.dbf ' TO '+DG_DATA_02';

 

  在數據文件已存在于新路徑的情況下,以相同的命名將其覆蓋:

 

SQL> ALTER DATABASE MOVE DATAFILE '/u00/data/users_01.dbf' TO '/u00/data_new/users_01.dbf' REUSE;

 

  復制文件到一個新路徑,同時在原路徑下保留其拷貝:

 

SQL> ALTER DATABASE MOVE DATAFILE '/u00/data/users_01.dbf' TO '/u00/data_new/users_01.dbf' KEEP;

 

  當通過查詢v$session_longops動態視圖來移動文件時,你可以監控這一過程。另外,你也可以引用alert.log,Oracle會在其中記錄具體的行為。

 

20、 表分區或子分區的在線遷移

  在Oracle 12c R1中遷移表分區或子分區到不同的表空間不再需要復雜的過程。與之前版本中未分區表進行在線遷移類似,表分區或子分區可以在線或是離線遷移至一個不同的表空間。當指定了ONLINE語句,所有的DML操作可以在沒有任何中斷的情況下,在參與這一過程的分區或子分區上執行。與此相反,分區或子分區遷移如果是在離線情況下進行的,DML操作是不被允許的。

  示例:

 

SQL> ALTER TABLE table_name MOVE PARTITION|SUBPARTITION partition_name TO tablespace tablespace_name; 
SQL> ALTER TABLE table_name MOVE PARTITION|SUBPARTITION partition_name TO tablespace tablespace_name UPDATE INDEXES ONLINE;

 

  第一個示例是用來在離線狀況下將一個表分區或子分區遷移至一個新的表空間。第二個示例是在線遷移表分區或子分區并維護表上任何本地或全局的索引。此外,當使用ONLINE語句時,DML操作是不會中斷的。

  重要提示:

  • UPDATE INDEXES語句可以避免出現表中任何本地或全局索引無法使用的情況。

  • 表的在線遷移限制也適用于此。

  • 引入加鎖機制來完成這一過程,當然它也會導致性能下降并會產生大量的redo,這取決于分區和子分區的大小。

 

責任編輯:彭凡 來源: TechTarget中國
相關推薦

2011-09-13 09:41:59

Python

2013-06-28 14:30:09

Oracle 12c

2017-07-17 08:39:10

Oracle 12c ADGswitchover

2009-06-25 09:50:32

JSF

2013-06-28 14:38:02

2018-09-11 16:15:36

Vue高版本前端

2018-02-05 22:09:01

云計算CIO企業上云

2014-07-16 11:24:56

甲骨文業務流程管理BPM

2010-05-04 15:59:05

Oracle字符集

2011-08-04 13:55:10

Cocoa Objective- 文件

2011-08-01 10:37:29

軟件項目管理

2013-07-24 10:49:47

甲骨文全球大會2013甲骨文

2023-10-11 08:59:05

2009-06-16 13:29:56

JBoss事務

2013-07-02 10:18:20

編程編程策略

2013-07-02 09:43:02

編程策略

2009-08-19 16:59:25

C# 操作符

2012-01-18 10:13:50

Objective-CiOSself

2011-08-01 13:59:22

Oracle數據庫命名空間

2009-08-12 11:20:51

C#運算符重載
點贊
收藏

51CTO技術棧公眾號

欧美激情国产精品免费| 男人天堂999| 老熟妇高潮一区二区高清视频| 香蕉久久a毛片| 日韩在线视频一区| 稀缺呦国内精品呦| 成人在线视频免费| 亚洲va国产va欧美va观看| 日韩国产精品一区二区三区| 亚洲欧美另类日韩| 日av在线不卡| 欧美一区视频在线| 黄色在线观看免费| 久久国产中文字幕| 日韩美女av在线| 日本少妇一区二区三区| 成人在线中文| 欧美日韩国产一区中文午夜| 日本免费黄色小视频| 中文日本在线观看| 久久色在线观看| 俄罗斯精品一区二区三区| 天天干天天插天天射| 99热免费精品在线观看| 欧美成人精品一区| 亚洲一级理论片| 精品国产一区二区三区小蝌蚪| 欧美mv和日韩mv的网站| 国产毛片久久久久久| 日本一区免费网站| 日本韩国精品在线| 成人三级视频在线播放| 黄视频免费在线看| 亚洲一区二区三区中文字幕| 日韩第一页在线观看| av基地在线| 国产三级三级三级精品8ⅰ区| 国产一区二区免费电影| 成人乱码一区二区三区| 国产经典欧美精品| 99在线视频播放| 国产精品女同一区二区| 蓝色福利精品导航| 国产自摸综合网| 在线视频 91| 蜜桃精品视频在线| 国产精品一区二区久久久| 日本黄色中文字幕| 日本成人在线不卡视频| 国产精品久在线观看| 最近日韩免费视频| 麻豆精品一区二区三区| 国产欧美一区二区三区四区 | 欧美性受极品xxxx喷水| 久久久久久久久久久久久国产精品 | 国产98色在线| 久久精品99北条麻妃| 琪琪一区二区三区| 成人美女免费网站视频| 国产精品久久影视| 国产盗摄女厕一区二区三区 | 91小视频在线播放| 成人污版视频| 亚洲成色www8888| 久久亚洲AV成人无码国产野外| 美女av一区| 亚洲欧美一区二区精品久久久| 欧洲av一区二区三区| 成人系列视频| 欧美国产视频一区二区| 国产成人亚洲精品自产在线| 石原莉奈在线亚洲三区| 91精品久久久久久久久久| 精品人妻一区二区三区四区不卡| 丁香婷婷综合激情五月色| 久久亚洲综合网| 午夜在线免费观看视频| 亚洲综合清纯丝袜自拍| 免费观看精品视频| 四虎视频在线精品免费网址| 精品福利二区三区| 日韩毛片无码永久免费看| 亚洲精品tv久久久久久久久久| 久久91精品国产91久久跳| 男女啊啊啊视频| 免费成人性网站| 成人黄动漫网站免费| 男人av在线| 亚洲欧美激情在线| 国产xxxxx在线观看| 四虎国产精品免费久久| 日韩国产欧美精品一区二区三区| 国内精品卡一卡二卡三| 国产精品av一区二区| 国产精品久久av| 色丁香婷婷综合久久| 国产精品视频看| 免费国产黄色网址| japansex久久高清精品| 亚洲欧美日韩一区二区三区在线| 九九精品在线观看视频| 青椒成人免费视频| 国偷自产av一区二区三区小尤奈| 快射av在线播放一区| 欧美色道久久88综合亚洲精品| 中文字幕乱码在线人视频| 国产在线观看91一区二区三区| 欧美美最猛性xxxxxx| 中文字幕第2页| 99精品一区二区| 永久免费网站视频在线观看| 成人网ww555视频免费看| 日韩av综合网| 国产亚洲成人精品| 紧缚捆绑精品一区二区| 日韩电影大全在线观看| 国产乱码精品一区二三赶尸艳谈| 欧美一区二区三区啪啪| 天天操天天干天天操天天干| 亚洲深爱激情| 国产精品久久久久久久小唯西川| 黄网站在线免费看| 欧美影视一区在线| 五月婷婷综合在线观看| 欧美午夜电影在线观看| 亚洲一区二区三区久久| 国产区在线看| 在线综合亚洲欧美在线视频| 日日碰狠狠添天天爽| 日日夜夜免费精品| 欧美日韩综合另类| 中文字幕成在线观看| 亚洲激情在线视频| 国产精品成人av久久| 国产成人av一区二区| 五月天激情图片| 欧美一区一区| 米奇精品一区二区三区在线观看| 一区二区三区免费在线视频| 亚洲欧洲日韩女同| 亚洲午夜精品一区| 欧美一区成人| 91视频婷婷| 国产乱码在线| 亚洲成人av在线| 天海翼一区二区| 91麻豆免费视频| 蜜臀久久99精品久久久酒店新书 | 久热精品在线视频| 国产精品热久久| 亚洲欧美欧美一区二区三区| 人妻换人妻仑乱| 精品电影一区| 久久一区免费| 欧美三区四区| 久久久精品国产一区二区| 国产精品无码天天爽视频| 亚洲毛片av在线| 一级黄色免费视频| 亚洲中字在线| 亚洲精品高清国产一线久久| 欧美黄页免费| 欧美日本啪啪无遮挡网站| 亚洲男人天堂久久| 黑人狂躁日本妞一区二区三区| 人妻精品久久久久中文字幕| 日本免费新一区视频| 久久最新免费视频| 国产精品调教视频| 日本精品视频在线播放| 日本中文字幕在线看| 欧美mv和日韩mv的网站| 一级一片免费看| 国产精品国产自产拍高清av | 国产精品不卡一区| 女性生殖扒开酷刑vk| 久久男女视频| 日韩精品第1页| 偷拍视屏一区| 91久久久久久久久久久久久| 爱草tv视频在线观看992| 亚洲天堂av女优| 国产黄色一区二区| 日韩欧美综合在线视频| 午夜剧场免费在线观看| 99久久精品免费看国产| 日日干夜夜操s8| 亚洲激情午夜| 亚洲日本精品一区| 精品三级av| 国产专区精品视频| 91精品论坛| 欧美成人三级视频网站| 国产精品麻豆一区二区三区| 日韩一区二区三区视频在线| 精品久久久久久久久久久久久久久久久久 | 欧美一区二视频| 天天干,天天干| 亚洲国产综合色| 久久嫩草捆绑紧缚| 久久这里只有精品视频网| 国产欧美精品一二三| 日日嗨av一区二区三区四区| 国产亚洲黄色片| 91超碰成人| 亚洲ai欧洲av| 无码日韩精品一区二区免费| 风间由美久久久| 国产精品一区三区在线观看| 国产精品久久久久久久久久新婚| 亚洲一区二区免费| 多野结衣av一区| 久久久精品一区二区三区| 色播色播色播色播色播在线| 91麻豆精品国产91| 97人妻一区二区精品视频| 亚洲国产日韩a在线播放性色| 在线观看免费小视频| 99riav一区二区三区| 手机在线播放av| 美洲天堂一区二卡三卡四卡视频| 91在线视频免费91| 久久久精品在线视频| 激情亚洲成人| 日本一道在线观看| 999国产精品永久免费视频app| 欧美大陆一区二区| 麻豆成人入口| 久久99精品久久久久子伦| 中文字幕久久精品一区二区| 成人国产精品av| 深夜福利亚洲| 91在线播放国产| 99精品女人在线观看免费视频| 国产欧美精品在线| 123成人网| 国产剧情日韩欧美| 久久精品xxxxx| 国产欧美日韩免费看aⅴ视频| 日本精品在线中文字幕| 日本不卡视频在线播放| 涩涩在线视频| 国产aⅴ夜夜欢一区二区三区 | 高h放荡受浪受bl| 日韩精品最新网址| 午夜精品久久久久久久第一页按摩| 7777精品伊人久久久大香线蕉经典版下载| 一区二区三区免费在线| 欧美一区二区女人| 亚洲国产日韩在线观看| 精品国产亚洲在线| 外国精品视频在线观看| 亚洲伦理中文字幕| 国产二区视频在线观看| 这里精品视频免费| 日本三级在线播放完整版| 美女av一区二区三区 | 国产精品国内免费一区二区三区| 一本一生久久a久久精品综合蜜| 亚洲精品小说| 免费网站在线观看视频| 99精品热视频只有精品10| 国产l精品国产亚洲区久久| 三级欧美韩日大片在线看| 天天色天天综合网| 国产.欧美.日韩| 网站免费在线观看| 国产精品美女久久久久av爽李琼| 欧美激情精品久久久久久免费 | 99在线热播精品免费| 国产三级国产精品| 欧美国产综合一区二区| 美国黄色小视频| 色综合久久综合网| 亚洲熟女乱色一区二区三区久久久| 欧美一区二区三区在线观看| 高h调教冰块play男男双性文| 亚洲社区在线观看| а√天堂官网中文在线| 77777少妇光屁股久久一区| 国产精品久久久久久久久久齐齐| 亚洲综合中文字幕68页| 蜜桃一区av| 中日韩在线视频| 亚洲另类自拍| 午夜激情视频网| 久久午夜老司机| 中国毛片直接看| 疯狂欧美牲乱大交777| 97人妻精品一区二区三区动漫| 亚洲国产精久久久久久| 最新97超碰在线| 4388成人网| 欧美午夜在线播放| 日韩欧美激情一区二区| 国产精品hd| 爱爱爱爱免费视频| 久久久久久久综合狠狠综合| 九九热精品免费视频| 欧美日韩和欧美的一区二区| 天堂中文字幕av| 久久精品久久精品| 成人在线免费观看av| 国产一区二区视频在线| www.狠狠爱| 香蕉成人伊视频在线观看| 国产精品久久久久久久免费看| 精品夜色国产国偷在线| 国精产品一区一区三区mba下载| 国产精品欧美激情在线播放| 免费福利视频一区| 800av在线免费观看| 久草这里只有精品视频| 国产18无套直看片| 欧美性色xo影院| 手机看片1024日韩| 欧美黑人国产人伦爽爽爽| 韩国三级成人在线| 伊人久久av导航| 日本免费在线视频不卡一不卡二| 扒开jk护士狂揉免费| 亚洲成a人v欧美综合天堂下载| av观看在线免费| 久久精品青青大伊人av| 欧美在线一级| 亚洲日本精品一区| 日韩不卡在线观看日韩不卡视频| 97人妻精品一区二区三区免| 亚洲高清免费视频| 成人免费一级视频| 欧美激情videos| 视频二区欧美| 欧美在线观看黄| 丁香激情综合五月| 日产欧产va高清| 亚洲国产黄色片| 日本不卡网站| 欧美日韩另类丝袜其他| 亚洲欧美日韩精品一区二区| 一级特级黄色片| 一本大道久久a久久综合婷婷| 亚洲欧美综合在线观看| 欧美在线一区二区三区四| 欧美亚视频在线中文字幕免费| 精品国产免费av| 久久一区二区三区四区| 天堂av免费在线观看| 最近2019中文字幕大全第二页 | 激情网站在线| 国产无套精品一区二区| 国产农村妇女精品一区二区| 中文字幕免费看| 欧美三片在线视频观看| 黄av在线免费观看| 国产精品久久久久久免费观看| 99成人免费视频| 欧美激情aaa| 欧美精品一级二级三级| 羞羞的视频在线观看| 国产精品福利视频| 麻豆久久婷婷| 天天操夜夜操av| 精品卡一卡二卡三卡四在线| 色黄视频在线观看| 亚洲精品tv久久久久久久久| 国内精品免费在线观看| 久久无码精品丰满人妻| 亚洲免费伊人电影在线观看av| 97人人做人人爽香蕉精品| 91免费视频黄| 91网站视频在线观看| 伊人久久亚洲综合| 欧美丰满老妇厨房牲生活| 亚洲人成网站77777在线观看| 99re精彩视频| 亚洲成a人v欧美综合天堂下载| 国产尤物视频在线| 亚洲a级在线观看| 国产欧美欧美| 日本免费网站视频| 亚洲精品一区在线观看| 日韩色淫视频| 欧美久久久久久久久久久久久 | 性欧美18一19内谢| av中文字幕不卡| 一区二区精品视频在线观看| 久久琪琪电影院| 久久福利综合| 无码精品一区二区三区在线播放| 欧美日韩夫妻久久| 色一区二区三区| 黄色网址在线免费看| 久久综合狠狠综合| 亚洲乱色熟女一区二区三区| 国产精品激情自拍| 亚洲三级免费| 欧美老熟妇一区二区三区| 国产亚洲精品美女久久久久| av不卡一区| 一区二区久久精品|