十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
本篇內(nèi)容介紹了“Oracle 數(shù)據(jù)庫12c新特性總結(jié)”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)公司長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為新興企業(yè)提供專業(yè)的成都網(wǎng)站制作、網(wǎng)站建設(shè),新興網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
1. 在線重命名和重新定位活躍數(shù)據(jù)文件
不同于以往的版本,在Oracle數(shù)據(jù)庫12c R1版本中對數(shù)據(jù)文件的遷移或重命名不再需要太多繁瑣的步驟,即把表空間置為只讀模式,接下來是對數(shù)據(jù)文件進(jìn)行離線操作。在12c R1中,可以使用ALTER DATABASE MOVE DATAFILE這樣的SQL語句對數(shù)據(jù)文件進(jìn)行在線重命名和移動。而當(dāng)此數(shù)據(jù)文件正在傳輸時,終端用戶可以執(zhí)行查詢,DML以及DDL方面的任務(wù)。另外,數(shù)據(jù)文件可以在存儲設(shè)備間遷移,如從非ASM遷移至ASM,反之亦然。
重命名數(shù)據(jù)文件:
SQL> ALTER DATABASE MOVE DATAFILE '/u00/data/users01.dbf' TO '/u00/data/users_01.dbf';
從非ASM遷移數(shù)據(jù)文件至ASM:
SQL> ALTER DATABASE MOVE DATAFILE '/u00/data/users_01.dbf' TO '+DG_DATA';
將數(shù)據(jù)文件從一個ASM磁盤群組遷移至另一個ASM磁盤群組:
SQL> ALTER DATABASE MOVE DATAFILE '+DG_DATA/DBNAME/DATAFILE/users_01.dbf ' TO '+DG_DATA_02';
在數(shù)據(jù)文件已存在于新路徑的情況下,以相同的命名將其覆蓋:
SQL> ALTER DATABASE MOVE DATAFILE '/u00/data/users_01.dbf' TO '/u00/data_new/users_01.dbf' REUSE;
復(fù)制文件到一個新路徑,同時在原路徑下保留其拷貝:
SQL> ALTER DATABASE MOVE DATAFILE '/u00/data/users_01.dbf' TO '/u00/data_new/users_01.dbf' KEEP;
當(dāng)通過查詢v$session_longops動態(tài)視圖來移動文件時,你可以監(jiān)控這一過程。另外,你也可以引用alert.log,Oracle會在其中記錄具體的行為。
2. 表分區(qū)或子分區(qū)的在線遷移
在Oracle 12c R1中遷移表分區(qū)或子分區(qū)到不同的表空間不再需要復(fù)雜的過程。與之前版本中未分區(qū)表進(jìn)行在線遷移類似,表分區(qū)或子分區(qū)可以在線或是離線遷移至一個不同的表空間。當(dāng)指定了ONLINE語句,所有的DML操作可以在沒有任何中斷的情況下,在參與這一過程的分區(qū)或子分區(qū)上執(zhí)行。與此相反,分區(qū)或子分區(qū)遷移如果是在離線情況下進(jìn)行的,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;
第一個示例是用來在離線狀況下將一個表分區(qū)或子分區(qū)遷移至一個新的表空間。第二個示例是在線遷移表分區(qū)或子分區(qū)并維護表上任何本地或全局的索引。此外,當(dāng)使用ONLINE語句時,DML操作是不會中斷的。
重要提示:
?UPDATE INDEXES語句可以避免出現(xiàn)表中任何本地或全局索引無法使用的情況。
?表的在線遷移限制也適用于此。
?引入加鎖機制來完成這一過程,當(dāng)然它也會導(dǎo)致性能下降并會產(chǎn)生大量的redo,這取決于分區(qū)和子分區(qū)的大小。
3. 不可見字段
在Oracle 11g R1中,Oracle以不可見索引和虛擬字段的形式引入了一些不錯的增強特性。繼承前者并發(fā)揚光大,Oracle 12c R1中引入了不可見字段思想。在之前的版本中,為了隱藏重要的數(shù)據(jù)字段以避免在通用查詢中顯示,我們往往會創(chuàng)建一個視圖來隱藏所需信息或應(yīng)用某些安全條件。
在12c R1中,你可以在表中創(chuàng)建不可見字段。當(dāng)一個字段定義為不可見時,這一字段就不會出現(xiàn)在通用查詢中,除非在SQL語句或條件中有顯式的提及這一字段,或是在表定義中有DESCRIBED。要添加或是修改一個不可見字段是非常容易的,反之亦然。
SQL> CREATE TABLE emp (eno number(6), ename name varchar2(40), sal number(9) INVISIBLE);
SQL> ALTER TABLE emp MODIFY (sal visible);
你必須在INSERT語句中顯式提及不可見字段名以將不可見字段插入到數(shù)據(jù)庫中。虛擬字段和分區(qū)字段同樣也可以定義為不可見類型。但臨時表,外部表和集群表并不支持不可見字段。
4. 相同字段上的多重索引
在Oracle 12c R1之前,一個字段是無法以任何形式擁有多個索引的?;蛟S有人會想知道為什么通常一個字段需要有多重索引,事實上需要多重索引的字段或字段集合是很多的。在12c R1中,只要索引類型的形式不同,一個字段就可以包含在一個B-tree索引中,同樣也可以包含在Bitmap索引中。注意,只有一種類型的索引是在給定時間可用的。
5. DDL日志
在之前的版本中沒有可選方法來對DDL操作進(jìn)行日志記錄。而在12c R1中,你現(xiàn)在可以將DDL操作寫入xml和日志文件中。這對于了解誰在什么時間執(zhí)行了create或drop命令是十分有用的。要開啟這一功能必須對ENABLE_DDL_LOGGING 初始參數(shù)加以配置。這一參數(shù)可以在數(shù)據(jù)庫或會話級加以設(shè)置。當(dāng)此參數(shù)為啟用狀態(tài),所有的DDL命令會記錄在$ORACLE_BASE/diag/rdbms/DBNAME/log|ddl 路徑下的xml和日志文件中。一個xml中包含DDL命令,IP地址,時間戳等信息。這可以幫助確定在什么時候?qū)τ脩艋虮磉M(jìn)行了刪除亦或是一條DDL語句在何時觸發(fā)。
開啟DDL日志功能
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|SEQUENCE
6. 臨時undo
每個Oracle數(shù)據(jù)庫包含一組與系統(tǒng)相關(guān)的表空間,例如SYSTEM,SYSAUX,UNDO & TEMP,并且它們在Oracle數(shù)據(jù)庫中每個都用于不同的目的。在Oracle 12c R1之前,undo記錄是由臨時表產(chǎn)生并存儲在undo表空間中的,這更類似于一個通用或持久的表撤銷記錄。然而,由于在12c R1中引入了臨時undo功能,那些臨時undo記錄現(xiàn)在就可以存儲在臨時表中,而不是存儲在undo表空間中。臨時undo的主要好處在于:由于信息不會寫入undo日志,undo表空間的開銷得以減少并且產(chǎn)生的undo數(shù)據(jù)會更少。而對于在會話級還是數(shù)據(jù)庫級開啟臨時undo功能你是可以靈活選擇的。
啟用臨時undo功能
要使用這一新功能,需要做以下設(shè)置:
?兼容性參數(shù)必須設(shè)置為12.0.0或更高
?啟用 TEMP_UNDO_ENABLED 初始化參數(shù)
?由于臨時undo記錄現(xiàn)在是存儲在一個臨時表空間中的,你需要有足夠的空間來創(chuàng)建這一臨時表空間
?對于會話級,你可以使用:ALTER SYSTEM SET TEMP_UNDO_ENABLE=TRUE;
查詢臨時undo信息
以下所列的字典視圖是用來查看或查詢臨時undo數(shù)據(jù)相關(guān)統(tǒng)計信息的:
?V$TEMPUNDOSTAT
?DBA_HIST_UNDOSTAT
?V$UNDOSTAT
要禁用此功能,你只需做以下設(shè)置:
SQL> ALTER SYSTEM|SESSION SET TEMP_UNDO_ENABLED=FALSE;
7. 備份特定用戶特權(quán)
在11g R2中,引入了SYSASM特權(quán)來執(zhí)行ASM的特定操作。同樣地,在12c中引入了SYSBACKUP特權(quán)用來在 RMAN中執(zhí)行備份和恢復(fù)命令。因此,你可以在數(shù)據(jù)庫中創(chuàng)建一個本地用戶并在不授予其SYSDBA權(quán)限的情況下,通過授予SYSBACKUP權(quán)限讓其能夠在RMAN中執(zhí)行備份和恢復(fù)相關(guān)的任務(wù)。
$ ./rman target "username/password as SYSBACKUP"
8. 如何在RMAN中執(zhí)行SQL語句
在12c中,你可以在不需要SQL前綴的情況下在RMAN中執(zhí)行任何SQL和PL/SQL命令,即你可以從RMAN直接執(zhí)行任何SQL和PL/SQL命令。如下便是在RMAN中執(zhí)行SQL語句的示例:
RMAN> SELECT username,machine FROM v$session;
RMAN> ALTER TABLESPACE users ADD DATAFILE SIZE 121m;
9. RMAN中的表恢復(fù)和分區(qū)恢復(fù)
Oracle數(shù)據(jù)庫備份主要分為兩類:邏輯和物理備份。每種備份類型都有其自身的優(yōu)缺點。在之前的版本中,利用現(xiàn)有物理備份來恢復(fù)表或分區(qū)是不可行的。為了恢復(fù)特定對象,邏輯備份是必需的。對于12c R1,你可以在發(fā)生drop或truncate的情況下從RMAN備份將一個特定的表或分區(qū)恢復(fù)到某個時間點或SCN。
當(dāng)通過RMAN發(fā)起一個表或分區(qū)恢復(fù)時,大概流程是這樣的:
?確定要恢復(fù)表或分區(qū)所需的備份集
?在恢復(fù)表或分區(qū)的過程中,一個輔助數(shù)據(jù)庫會臨時設(shè)置為某個時間點
?利用數(shù)據(jù)泵將所需表或分區(qū)導(dǎo)出到一個dumpfile
?你可以從源數(shù)據(jù)庫導(dǎo)入表或分區(qū)(可選)
?在恢復(fù)過程中進(jìn)行重命名操作
以下是一個通過RMAN對表進(jìn)行時間點恢復(fù)的示例(確保你已經(jīng)對稍早的數(shù)據(jù)庫進(jìn)行了完整備份):
RMAN> connect target "username/password as SYSBACKUP";
RMAN> RECOVER TABLE username.tablename UNTIL TIME 'TIMESTAMP…'
AUXILIARY DESTINATION '/u01/tablerecovery'
DATAPUMP DESTINATION '/u01/dpump'
DUMP FILE 'tablename.dmp'
NOTABLEIMPORT -- this option avoids importing the table automatically.(此選項避免自動導(dǎo)入表)
REMAP TABLE 'username.tablename': 'username.new_table_name'; -- can rename table with this option.(此選項可以對表重命名)
重要提示:
?確保對于輔助數(shù)據(jù)庫在/u01文件系統(tǒng)下有足夠的可用空間,同時對數(shù)據(jù)泵文件也有同樣保證
?必須要存在一份完整的數(shù)據(jù)庫備份,或者至少是要有SYSTEM相關(guān)的表空間備份
以下是在RMAN中應(yīng)用表或分區(qū)恢復(fù)的限制和約束:
?SYS用戶表或分區(qū)無法恢復(fù)
?存儲于SYSAUX和SYSTEM表空間下的表和分區(qū)無法恢復(fù)
?當(dāng)REMAP選項用來恢復(fù)的表包含NOT NULL約束時,恢復(fù)此表是不可行的
10. 限制PGA的大小
在Oracle 12c R1之前,沒有選項可以用來限制和控制PGA的大小。雖然你設(shè)置某個大小為PGA_AGGREGATE_TARGET 的初始參數(shù),Oracle會根據(jù)工作負(fù)載和需求來動態(tài)地增大或減小PGA的大小。而在12c中,你可以通過開啟自動PGA管理來對PGA設(shè)定硬性限制,這需要對PGA_AGGREGATE_LIMIT 參數(shù)進(jìn)行設(shè)置。因此,你現(xiàn)在可以通過設(shè)置新的參數(shù)來對PGA設(shè)定硬性限制以避免過度使用PGA。
SQL> ALTER SYSTEM SET PGA_AGGREGATE_LIMIT=2G;
SQL> ALTER SYSTEM SET PGA_AGGREGATE_LIMIT=0; --disables the hard limit
重要提示:
當(dāng)超過了當(dāng)前PGA的限制,Oracle會自動終止/中止會話或進(jìn)程以保持最合適的PGA內(nèi)存。
11. 對表分區(qū)維護的增強
在第一部分中,我解釋了如何在線或是離線狀態(tài)下遷移一個表分區(qū)或子分區(qū)到另一個不同的表空間。在本文中,主要介紹表分區(qū)其他方面的改進(jìn)。
添加多個新分區(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ū)表上進(jìn)行刪除或截斷分區(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;
12. 數(shù)據(jù)庫升級改進(jìn)
每當(dāng)一個新的Oracle版本發(fā)布,DBA所要面臨的挑戰(zhàn)就是升級過程。該部分我將介紹12c中引入的針對升級的兩個改進(jìn)。
預(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工具來進(jìn)行數(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也繼承了這兩個新變化。
13. 通過網(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ù)以進(jìn)行增量備份,并且可以將它們應(yīng)用到物理備用數(shù)據(jù)庫。你可以用服務(wù)名直接將所需數(shù)據(jù)文件從備用點拷貝至主站,這是為了防止主數(shù)據(jù)庫上數(shù)據(jù)文件、表空間的丟失,或是沒有真正從備份集恢復(fù)數(shù)據(jù)文件。
以下流程演示了如何用此新功能執(zhí)行一個前滾來對備用數(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í)行了一個增量備份,再將這些增量備份傳輸至備用目的地,接著將應(yīng)用這些文件到備用數(shù)據(jù)庫來進(jìn)行同步。然而,需要確保已經(jīng)對primary_db_tns 進(jìn)行了配置,即在備份數(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;
14. 對Data Pump的增強
Data Pump版本有了不少有用的改進(jìn),例如在導(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中另外一個改進(jìn)。有了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
15. 實時自動數(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)重的性能問題進(jì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é)。
16. 同時在多個表上收集統(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ù)庫進(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');
“Oracle 數(shù)據(jù)庫12c新特性總結(jié)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!