Oracle12c功能增强 新特性之管理功能的增强
1.????數(shù)據(jù)文件在線重命名和遷移
不想先前的版本號(hào)。在Oracle12cR1中,數(shù)據(jù)文件的遷移或重命名不再要求一系列的步驟,比如:將表空間至于僅僅讀模式,然后數(shù)據(jù)文件邏輯等操作。在12cR1中。數(shù)據(jù)文件能通過(guò)SQL語(yǔ)句“ALTERDATABASE MOVE DATAFILE”非常easy的在線完畢。在移動(dòng)數(shù)據(jù)文件的過(guò)程中,用戶能夠運(yùn)行查詢,DML和DDL任務(wù)。另外,數(shù)據(jù)文件能在存儲(chǔ)間遷移,比如:從非ASM到ASM,反之亦然。
1.1.???重命名數(shù)據(jù)文件:
SQL> ALTER DATABASE MOVE DATAFILE '/u01/data/users01.dbf'TO '/u01/data/users_02.dbf';
1.2.???從非ASM存儲(chǔ)遷移數(shù)據(jù)文件到ASM:
SQL> ALTER DATABASE MOVE DATAFILE'/u01/data/users_01.dbf' TO '+DG_DATA';
數(shù)據(jù)文件從一個(gè)ASM磁盤組遷移到還有一個(gè):
SQL> ALTER DATABASE MOVE DATAFILE'+DG_DATA/users_01.dbf ' TO '+DG_DATA_02';
1.3.???假設(shè)數(shù)據(jù)文件在新位置也存在,則覆蓋同名的數(shù)據(jù)文件:
SQL> ALTER DATABASE MOVE DATAFILE'/u01/data/users_01.dbf' TO '/u02/data_new/users_01.dbf' REUSE;
1.4.???數(shù)據(jù)文件復(fù)制到新位置,舊位置保留舊的拷貝:
SQL> ALTER DATABASE MOVE DATAFILE'/u00/data/users_01.dbf' TO '/u00/data_new/users_01.dbf' KEEP;
通過(guò)查詢動(dòng)態(tài)視圖v$session_longops,你能夠監(jiān)控?cái)?shù)據(jù)文件移動(dòng)的進(jìn)程。
另外,你也能夠參考數(shù)據(jù)庫(kù)的alert.log。由于,Oracle會(huì)把正在進(jìn)行的操作的具體信息寫入該日志中。
2.????表分區(qū)或子分區(qū)的在線遷移
在Oracle12c中,把表分區(qū)或子分區(qū)遷移到一個(gè)不同表空間的操作不再要求一個(gè)復(fù)雜過(guò)程。類似之前版本號(hào)中在線遷移一個(gè)非分區(qū)表。表分區(qū)或子分區(qū)能夠在線或離線遷移到一個(gè)不同的表空間中。
當(dāng)確定ONLINE子句時(shí),全部在和該遷移過(guò)程相關(guān)的分區(qū)或子分區(qū)上的DML操作不會(huì)被打斷。相反,假設(shè)分區(qū)或子分區(qū)被離線遷移,全部的DML操作都不會(huì)被同意。
以下是相關(guān)樣例:
SQL> ALTER TABLE table_name? MOVE PARTITION|SUBPARTITIONpartition_name? TO tablespacetablespace_name;
SQL> ALTER TABLE table_name? MOVE PARTITION|SUBPARTITIONpartition_name? TO tablespacetablespace_name UPDATE INDEXES ONLINE;
第一個(gè)樣例是把表分區(qū)或子分區(qū)離線遷移到一個(gè)新表空間上。
第二個(gè)樣例是在線遷移表分區(qū)或子分區(qū),而且同一時(shí)候維護(hù)表上的本地和全局索引。另外,當(dāng)確定ONLINE子句時(shí),DML操作不會(huì)被打斷。
注意:
1)??UPDATEINDEXES子句將避免表上的本地和全局索引變得不可用。
2)??表在線遷移的限制在這里也相同使用。
3)??在遷移過(guò)程中將會(huì)加鎖,這或許會(huì)導(dǎo)致性能減少,而且會(huì)產(chǎn)生大量的redo。這樣看分區(qū)或子分區(qū)的大小。
3.????不可見列
Oracle 11g R1中, Oracle在不可見索引和虛擬列方面引進(jìn)了幾個(gè)增強(qiáng)。
對(duì)這些特性進(jìn)一步發(fā)展,Oracle12cR1中引進(jìn)了不看見列的概念。還記得,在先前的版本號(hào)中,為了在一個(gè)普通查詢中隱藏一些重要的數(shù)據(jù)列,我們經(jīng)常創(chuàng)建一個(gè)視圖,以此來(lái)隱藏必要的信息或應(yīng)用一些安全條件。
12c R1中,在表中能夠建一個(gè)不可見的列。當(dāng)列被定義為不可見時(shí),在普通查詢中這個(gè)列不會(huì)出現(xiàn),除非該列在SQL語(yǔ)句或條件中被顯式的參考。或者在表定義中被DESCRIBED。
添加或改動(dòng)一個(gè)不可見列很easy。反之亦然。
SQL> CREATE TABLE emp (eno number(6), ename namevarchar2(40), sal number(9) INVISIBLE);
SQL> ALTER TABLE emp MODIFY (sal visible);
為了把數(shù)據(jù)插入不可見列,你必須顯式的參考它。
一個(gè)虛擬列或分區(qū)列也能被定義為不可見列。
但是,暫時(shí)表。外部表和簇表不支持不可見列。
4.????同樣列上建多個(gè)索引
Oracle 12c前。在同樣列或同樣一組列上不能夠創(chuàng)建多個(gè)索引。
比如:假設(shè)你在列(a)或列(a,b)上有一個(gè)索引,你就不能依照同樣順序在同一列或同一組列上創(chuàng)建還有一個(gè)索引。
12c中。在同一個(gè)列或同一組列上你能夠建立多個(gè)索引,僅僅要索引類型不同就能夠。但是,在不論什么時(shí)刻,僅僅能有一種索引是可用的或可見的。為了測(cè)試不可見索引,你須要設(shè)置參數(shù)optimizer_use_use_invisible_indexes=true,以下是一個(gè)樣例:
SQL> CREATEINDEX emp_ind1 ON EMP(ENO,ENAME);
SQL> CREATEBITMAP INDEX emp_ind2 ON EMP(ENO,ENAME) INVISIBLE;
5.????DDL日志
先前的版本號(hào)中。沒有記錄DDL操作的命令選項(xiàng)。12cR1中,你能把DDL操作記錄到xml和日志文件中。
這在想知道什么時(shí)候,是誰(shuí)運(yùn)行了刪除和創(chuàng)建命令時(shí)會(huì)很實(shí)用。為了打開該特性。必須配置初始化參數(shù)ENABLE_DDL_LOGGING,該參數(shù)能在數(shù)據(jù)庫(kù)和會(huì)話級(jí)別設(shè)置。
當(dāng)該參數(shù)被啟用時(shí),全部的DDL命令被記錄在$ORACLE_BASE/diag/rdbms/DBNAME/log|ddl下的xml和日志文件中。
每一個(gè)xml文件包括像DDL命令,IP地址。時(shí)間戳等信息。這有助于鑒定何時(shí)刪除了用戶或表。或DDL語(yǔ)句何時(shí)被觸發(fā)。
5.1.???為了啟用DDL日志:
SQL> ALTERSYSTEM|SESSION SET ENABLE_DDL_LOGGING=TRUE;
5.2.???下列DDL語(yǔ)句有可能在xml和日志文件中被記錄:
1)??CREATE|ALTER|DROP|TRUNCATETABLE
2)??DROPUSER
3)??CREATE|ALTER|DROPPACKAGE|FUNCTION|VIEW|SYNONYM|SEQUENCE
6.????暫時(shí)Undo
每一個(gè)Oracle數(shù)據(jù)庫(kù)包括一套系統(tǒng)相關(guān)的表空間,比如:SYSTEM, SYSAUX, UNDO & TEMP,在Oracle數(shù)據(jù)庫(kù)中每一個(gè)表空間其不同的作用。Oracle12cR1之前,暫時(shí)表產(chǎn)生的undo記錄被存儲(chǔ)在undo表空間中。和普通或永久表的undo記錄非常類似。但是,在12cR1中。暫時(shí)undo記錄如今能被存儲(chǔ)在暫時(shí)表中而不是存儲(chǔ)在undo表空間中。
處包括:降低了undo表空間的占用及降低了redo數(shù)據(jù)這個(gè)特性的好的產(chǎn)生,由于這些信息不會(huì)被記錄在redo日志中。你能夠在會(huì)話或數(shù)據(jù)庫(kù)級(jí)別啟用暫時(shí)undo選項(xiàng)。
6.1.???啟用暫時(shí)undo
為了使用該新特性,須要做例如以下設(shè)置
1)??Compatibility參數(shù)必須被設(shè)置為12.0.0或更高。
2)??開啟TEMP_UNDO_ENABLED初始化參數(shù)。
3)??因?yàn)槿缃駮簳r(shí)undo記錄存儲(chǔ)在暫時(shí)表空間,你須要保證暫時(shí)表空間有足夠的空間。
4)??你能用該命令在會(huì)話級(jí)別開啟暫時(shí)undo特性:ALTERSESSION SET TEMP_UNDO_ENABLE=TRUE;
6.2.???查詢暫時(shí)undo信息
以下被列出的字典視圖被用來(lái)瀏覽或查詢關(guān)于暫時(shí)undo數(shù)據(jù)的統(tǒng)計(jì)信息:
1)??V$TEMPUNDOSTAT
2)??DBA_HIST_UNDOSTAT
3)??V$UNDOSTAT
6.3.???為了關(guān)閉該特性,你僅僅須要做下面設(shè)置:
SQL> ALTER SYSTEM|SESSION SET TEMP_UNDO_ENABLED=FALSE;
7.????備份確定的用戶權(quán)限
在11g R2中,SYSASM權(quán)限被引進(jìn)來(lái)運(yùn)行ASM特定的操作。類似的,在12c中,也引進(jìn)了運(yùn)行備份和恢復(fù)的特定操作的權(quán)限SYSBACKUP,以便在RMAN中運(yùn)行備份和恢復(fù)操作。所以,你能夠在數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)本地用戶,然后不須要SYSDBA權(quán)限。而僅僅需授予SYSBACKUP權(quán)限來(lái)在RMAN中運(yùn)行備份和恢復(fù)任務(wù)。
$ ./rman target "username/password asSYSBACKUP"
8.????怎樣在RMAN中運(yùn)行SQL語(yǔ)句
12c中。在RMAN中你能夠不須要帶SQL前綴來(lái)運(yùn)行不論什么SQL和PL/SQL命令,你能夠在RMAN中直接運(yùn)行不論什么SQL和PL/SQL命令。在RMAN中怎樣來(lái)運(yùn)行SQL語(yǔ)句呢?
RMAN> SELECT username,machine FROM v$session;
RMAN> ALTER TABLESPACE users ADD DATAFILE SIZE 500m;
9.????RMAN中恢復(fù)表和分區(qū)
Oracle數(shù)據(jù)庫(kù)備份主要分為兩類:邏輯和物理。每種備份類型有自己的優(yōu)缺點(diǎn)。
在先前的版本號(hào)。用現(xiàn)有的物理備份恢復(fù)一個(gè)表或分區(qū)不合適,為了恢復(fù)一個(gè)特定的對(duì)象,你必須有邏輯備份。12cR1中。在意外刪除或截?cái)喟l(fā)生后,你能從RMAN備份把一個(gè)特定表或分區(qū)恢復(fù)到一個(gè)時(shí)間點(diǎn)或SCN。
9.1.???當(dāng)開始通過(guò)RMAN去恢復(fù)一個(gè)表或分區(qū)時(shí),需運(yùn)行例如以下操作:
1)??準(zhǔn)備恢復(fù)表或分區(qū)須要的備份集。
2)??在恢復(fù)表或分區(qū)的過(guò)程中,須要暫時(shí)配置一個(gè)輔助數(shù)據(jù)庫(kù)到某個(gè)時(shí)間點(diǎn)。
3)??須要的表或分區(qū)須要用數(shù)據(jù)泵導(dǎo)出成dumpfile。
4)??可選地,你能把表或分區(qū)導(dǎo)入源庫(kù)。
5)??恢復(fù)時(shí)能夠重命名。
9.2.???通過(guò)RMAN對(duì)一張表進(jìn)行時(shí)間點(diǎn)恢復(fù)的樣例(確信你已有較早的全庫(kù)備份):
???? RMAN> connect target"username/password as SYSBACKUP";
???? RMAN> RECOVER TABLE username.tablenameUNTIL TIME 'TIMESTAMP…'
???????? ?AUXILIARYDESTINATION '/u01/tablerecovery'
???????? ?DATAPUMPDESTINATION '/u01/dpump'
???????? ?DUMPFILE 'tablename.dmp'
???????? ?NOTABLEIMPORT??? --該選項(xiàng)避免表被自己主動(dòng)導(dǎo)入。
REMAPTABLE 'username.tablename': 'username.new_table_name';??? --用該選項(xiàng)能夠重命名表。
9.3.???注意:
1)??確信在/u01文件系統(tǒng)下有足夠的空暇可用空間來(lái)保存輔助數(shù)據(jù)庫(kù)和數(shù)據(jù)泵文件。
2)??全數(shù)據(jù)庫(kù)備份必須存在,或至少SYSTEM相關(guān)的表空間存在。
下列的限制適用RMAN恢復(fù)表或分區(qū):
1)??SYS用戶表或分區(qū)不能恢復(fù)。
2)??存儲(chǔ)在SYSAUX和SYSTEM表空間的表或分區(qū)不能恢復(fù)。
3)??不能使用REMAP選項(xiàng)來(lái)恢復(fù)一個(gè)包括NOT NULL約束的一個(gè)表。
10.??限制PGA大小
Oracle12c R1之前,沒有選項(xiàng)能夠限制和控制PGA的大小。盡管你能把PGA_AGGREGATE_TARGET設(shè)置為某個(gè)確定值。Oracle還是能夠基于負(fù)載和需求動(dòng)態(tài)的添加或降低PGA的大小。12c中。能夠通過(guò)啟用PGA自己主動(dòng)管理來(lái)給PGA設(shè)置一個(gè)硬限制。啟用PGA自己主動(dòng)管理要求設(shè)置PGA_AGGREGATE_LIMIT參數(shù)。所以,你如今能通過(guò)設(shè)置這個(gè)新參數(shù)來(lái)設(shè)置PGA的硬限制。以避免過(guò)度使用PGA:
SQL>ALTER SYSTEM SET PGA_AGGREGATE_LIMIT=2G;
SQL>ALTER SYSTEM SET PGA_AGGREGATE_LIMIT=0; --disables the hard limit
注意:
當(dāng)超過(guò)當(dāng)前的PGA限制時(shí)。Oracle將自己主動(dòng)終止持有最多不能保持的PGA內(nèi)存的會(huì)話。
本文轉(zhuǎn)自mfrbuaa博客園博客,原文鏈接:http://www.cnblogs.com/mfrbuaa/p/5352219.html,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者?
總結(jié)
以上是生活随笔為你收集整理的Oracle12c功能增强 新特性之管理功能的增强的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 向大家推荐一个.Net游戏引擎:Arti
- 下一篇: 意料之外,也是情理之中 - 我的自由职业