国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

Oracle 9i新特性研究三(撤銷段的自動管理)

2024-08-29 13:47:03
字體:
供稿:網(wǎng)友
Oracle 9i新特性研究 三 撤銷段的自動治理 在Oracle 9i里,一個很顯著的新特性就是引入了自動的回滾段治理,當使用了AUM (Automatic Undo Management)時,為了區(qū)別,名稱也由原來的ROLLBACK SEGMENT(回滾段)變成UNDO SEGMENT(撤銷段),相對應(yīng)的是UNDO TABLESPACE。當然我們也可以繼續(xù)使用傳統(tǒng)的MANUAL方式來治理撤銷段。一、初始化參數(shù)使用下面的參數(shù)來設(shè)置有ORACLE自動治理撤銷段:UNDO_MANAGEMENT = AUTOORACLE會自動完成撤銷段的創(chuàng)建、刪除以及ONLINE/OFFLINE,而DBA將無法干預(yù)所有以上操作。假如想自己來治理回滾段可以將UNDO_MANAGEMENT設(shè)成MANUAL(DEFAULT就是MANUAL的)。雖然我們可以在UNDO表空間上創(chuàng)建回滾段,但ORACLE并不建議這樣做。當使用了AUM,我們唯一需要做的就是至少創(chuàng)建一個UNDO表空間,我們可以創(chuàng)建多個UNDO表空間,然后使用下面的參數(shù)來指定具體使用哪個。UNDO_TABLESPACE =UNDORBS1SQL> l1* select name ,value from v$parameter where name like 'undo%'SQL> / undo_management MANUALundo_tablespace UNDOTBS1undo_supPRess_errors FALSEundo_retention 10800創(chuàng)建多個UNDO表空間的好處是,我們可以根據(jù)不同的應(yīng)用在不同大小的UNDO表空間之間進行切換。二、UNDO表空間的創(chuàng)建1、在建數(shù)據(jù)庫是創(chuàng)建UNDO表空間,具體方法參見本人寫的Oracle 9i安裝、建庫與升級。文章在www.ncn.cn上有下載。2、我們也可以通過下面的語句來創(chuàng)建:Create undo tablespace undotbs2 datafile ‘/dev/rundotbs2_1.dbf’ size 100m;三、UNDO表空間特性1、UNDO表空間默認就是LOCAL治理方式:SQL> l1 select TABLESPACE_NAME, CONTENTS,EXTENT_MANAGEMENT, ALLOCATION_TYPE,2 SEGMENT_SPACE_MANAGEMENT3* from dba_tablespaces where contents='UNDO'SQL> / TABLESPACE_NAME CONTENTS EXTENT_MANAGEMENT ALLOCATION_TYPE SEGMENT_SPAC-------------------- ------------------ -------------------- ------------------ ------------UNDOTBS1 UNDO LOCAL SYSTEM MANUALUNDOTBS2 UNDO LOCAL SYSTEM MANUAL2、除撤銷段外,我們不能在UNDO表空間上作其他操作:SQL> create table gototop_t1(c1 number) tablespace undotbs1;create table gototop_t1(c1 number) tablespace undotbs1*ERROR 位于第 1 行:ORA-30022: Cannot create segments in undo tablespaceSQL> l1* create rollback segment ncn_rb1 tablespace undotbs1SQL> /create rollback segment ncn_rb1 tablespace undotbs1*ERROR 位于第 1 行:ORA-30019: Illegal rollback Segment Operation in Automatic Undo mode3、一個實例職能使用一個UNDO表空間:除了在INIT.ORA中指定UNDO表空間外,我們還可以使用下面的語句來在線更改實例所用的UNDO表空間:SQL> alter system set undo_tablespace=undotbs2;系統(tǒng)已更改。四、撤銷段的特性1、撤銷段自動創(chuàng)建:Ø n個撤銷段(n基于sessionS參數(shù),后面會具體講)Ø 名字為_SYSSMUn$Ø OWNER為PUBLIC(在RAC配置中有用)Ø 選擇AUM后,無法手動治理SQL> l1 select owner,segment_name,tablespace_name,status2* from dba_rollback_segs order by 4SQL> / OWNER SEGMENT_NAME TABLESPACE_NAME STATUS---------- ------------------ -------------------- --------------------------------
PUBLIC _SYSSMU1$ UNDOTBS1 OFFLINEPUBLIC _SYSSMU2$ UNDOTBS1 OFFLINEPUBLIC _SYSSMU3$ UNDOTBS1 OFFLINEPUBLIC _SYSSMU5$ UNDOTBS1 OFFLINEPUBLIC _SYSSMU7$ UNDOTBS1 OFFLINEPUBLIC _SYSSMU9$ UNDOTBS1 OFFLINEPUBLIC _SYSSMU10$ UNDOTBS1 OFFLINEPUBLIC _SYSSMU8$ UNDOTBS1 OFFLINEPUBLIC _SYSSMU6$ UNDOTBS1 OFFLINEPUBLIC RB1_CYX1 UNDOTBS1 OFFLINEPUBLIC RB1_CYX UNDOTBS1 OFFLINESYS RB1_08 UNDOTBS1 OFFLINESYS RB1_07 UNDOTBS1 OFFLINESYS RB1_05 UNDOTBS1 OFFLINESYS RB1_04 UNDOTBS1 OFFLINESYS RB1_03 UNDOTBS1 OFFLINESYS RB1_02 UNDOTBS1 OFFLINESYS RB1_01 UNDOTBS1 OFFLINESYS RB3_06 UNDOTBS3 OFFLINESYS RB3_05 UNDOTBS3 OFFLINESYS RB3_04 UNDOTBS3 OFFLINESYS RB3_03 UNDOTBS3 OFFLINESYS RB3_02 UNDOTBS3 OFFLINESYS RB3_01 UNDOTBS3 OFFLINESYS RB2 INDX OFFLINEPUBLIC _SYSSMU4$ UNDOTBS1 OFFLINESYS SYSTEM SYSTEM ONLINEPUBLIC _SYSSMU11$ UNDOTBS2 ONLINEPUBLIC _SYSSMU12$ UNDOTBS2 ONLINEPUBLIC _SYSSMU13$ UNDOTBS2 ONLINEPUBLIC _SYSSMU14$ UNDOTBS2 ONLINEPUBLIC _SYSSMU15$ UNDOTBS2 ONLINEPUBLIC _SYSSMU16$ UNDOTBS2 ONLINEPUBLIC _SYSSMU17$ UNDOTBS2 ONLINEPUBLIC _SYSSMU18$ UNDOTBS2 ONLINEPUBLIC _SYSSMU19$ UNDOTBS2 ONLINEPUBLIC _SYSSMU20$ UNDOTBS2 ONLINE 已選擇37行。 SQL>因為我在系統(tǒng)上作測試,之前手動建過回滾段,所以上面返回結(jié)果顯一般多。2、只有活動的UNDO表空間上的撤銷段和系統(tǒng)回滾段是ONLINE的,其他的撤銷段都是OFFLINE的。這一點從上面的輸出中可以清楚地看到。不過,也不一定一開始所有的撤銷段都會ONLINE的,這要依靠于初始化參數(shù)SESSIONS的值,默認SESSIONS = 1.1 * PROCESSES + 5,他決定了系統(tǒng)的并發(fā)用戶數(shù)。下面的實驗可以讓你對這一情況有個明確的熟悉。我們將SESSIONS調(diào)小后重起數(shù)據(jù)庫,可以看到活動的UNDO表空間UNDOTBS1上共10個撤銷段,但只ONLINE了5個。SQL> show parameter sessions NAME TYPE VALUE------------------------------------ ---------------------- -----------java_max_sessionspace_size integer 0java_soft_sessionspace_limit integer 0license_max_sessions integer 0license_sessions_warning integer 0logmnr_max_persistent_sessions integer 1mts_sessions integer 0sessions integer 27shared_server_sessions integer 0SQL> select owner,segment_name,tablespace_name,status2 from dba_rollback_segs; OWNER SEGMENT_NAME TABLESPACE_NAM STATUS------------ -------------------- -------------- ----------SYS SYSTEM SYSTEM ONLINEPUBLIC _SYSSMU1$ UNDOTBS1 ONLINEPUBLIC _SYSSMU2$ UNDOTBS1 ONLINEPUBLIC _SYSSMU3$ UNDOTBS1 ONLINEPUBLIC _SYSSMU4$ UNDOTBS1 ONLINEPUBLIC _SYSSMU5$ UNDOTBS1 ONLINEPUBLIC _SYSSMU6$ UNDOTBS1 OFFLINEPUBLIC _SYSSMU7$ UNDOTBS1 OFFLINEPUBLIC _SYSSMU8$ UNDOTBS1 OFFLINEPUBLIC _SYSSMU9$ UNDOTBS1 OFFLINE
PUBLIC _SYSSMU10$ UNDOTBS1 OFFLINEPUBLIC _SYSSMU11$ UNDOTBS2 OFFLINEPUBLIC _SYSSMU12$ UNDOTBS2 OFFLINEPUBLIC _SYSSMU13$ UNDOTBS2 OFFLINEPUBLIC _SYSSMU14$ UNDOTBS2 OFFLINEPUBLIC _SYSSMU15$ UNDOTBS2 OFFLINEPUBLIC _SYSSMU16$ UNDOTBS2 OFFLINEPUBLIC _SYSSMU17$ UNDOTBS2 OFFLINEPUBLIC _SYSSMU18$ UNDOTBS2 OFFLINEPUBLIC _SYSSMU19$ UNDOTBS2 OFFLINEPUBLIC _SYSSMU20$ UNDOTBS2 OFFLINESYS RB1_01 UNDOTBS1 OFFLINESYS RB1_02 UNDOTBS1 OFFLINESYS RB1_03 UNDOTBS1 OFFLINESYS RB1_04 UNDOTBS1 OFFLINESYS RB1_05 UNDOTBS1 OFFLINESYS RB1_07 UNDOTBS1 OFFLINESYS RB1_08 UNDOTBS1 OFFLINEPUBLIC RB1_CYX UNDOTBS1 OFFLINEPUBLIC RB1_CYX1 UNDOTBS1 OFFLINESYS RB2 INDX OFFLINESYS RB3_01 UNDOTBS3 OFFLINESYS RB3_02 UNDOTBS3 OFFLINESYS RB3_03 UNDOTBS3 OFFLINESYS RB3_04 UNDOTBS3 OFFLINESYS RB3_05 UNDOTBS3 OFFLINESYS RB3_06 UNDOTBS3 OFFLINE 已選擇37行。 SQL> 五、AUM和RACUNDO空間治理方式在RAC中會有一些非凡的要求。1、RAC所有實例應(yīng)使用相同UNDO治理模式。2、不同的實例應(yīng)使用不同的UNDO表空間,假如沒有明確設(shè)置不同的UNDO_TABLESPACE參數(shù),每個實例會自動使用第一個可用的UNDO表空間。 六、其它說明1、當在AUTO模式下進行MANUAL操作時,我們可以設(shè)置初始化參數(shù)UNDO_SUPPRESS_ERRORS = TRUE來禁止所有報錯信息,慎用!SQL> l1* alter rollback segment "_SYSSMU6$" onlineSQL> /alter rollback segment "_SYSSMU6$" online*ERROR 位于第 1 行:ORA-30019: Illegal rollback Segment operation in Automatic Undo modeSQL> alter system set UNDO_SUPPRESS_ERRORS = TRUE;系統(tǒng)已更改。SQL> alter rollback segment "_SYSSMU6$" online;回退段已變更。SQL>這條語句看起來是操作成功了,但實際上什么事也沒有干!SQL> select owner,segment_name,tablespace_name,status2 from dba_rollback_segs where status ='ONLINE';OWNER SEGMENT_NAME TABLESPACE_NAM STATUS------------ -------------------- -------------- ---------------SYS SYSTEM SYSTEM ONLINEPUBLIC _SYSSMU1$ UNDOTBS1 ONLINEPUBLIC _SYSSMU2$ UNDOTBS1 ONLINEPUBLIC _SYSSMU3$ UNDOTBS1 ONLINEPUBLIC _SYSSMU4$ UNDOTBS1 ONLINEPUBLIC _SYSSMU5$ UNDOTBS1 ONLINE已選擇6行。SQL> 2、和手動刪除了回滾段一樣,查詢事務(wù)信息假如位于已刪除的UNDO表空間時,而快照又比UNDO表空間的DROP-SCN舊,同樣會報ORA-01555 "snapshot too old (rollback segment too small)"錯。 七、個人看法無論是叫做ROLLBACK SEGMENT(回滾段)也好,還是叫做UNDO SEGMENT(撤銷段)也好,作為用戶,我們最關(guān)心的是給我們到底帶來什么好處。正如Oracle所宣傳的那樣,自動治理確實給用戶減輕了不少治理工作,但是作為企業(yè)級應(yīng)用,我們不僅要考慮治理的復(fù)雜性,更要考慮它的性能問題,而在我們所進行的項目測試過程中,發(fā)現(xiàn)自動治理并不理想。也就是說,自動治理是以性能為代價來減少治理的復(fù)雜性,這無疑會給用戶以雞肋的感覺。到目前為止我還沒有發(fā)現(xiàn)一個合理解釋,不知道在下一個版本中會不會在性能上有個很大的提高。在這種情況下,是否采用自動治理?如何選擇完全看你自己了。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 咸阳市| 门头沟区| 苏尼特左旗| 富顺县| 盐津县| 大英县| 斗六市| 巩留县| 丰县| 山丹县| 乌拉特中旗| 九江县| 卢龙县| 昂仁县| 桐城市| 洪泽县| 丘北县| 吴桥县| 桓仁| 高碑店市| 高台县| 苏州市| 北辰区| 长寿区| 石门县| 大关县| 固镇县| 西和县| 芦山县| 永昌县| 乐业县| 唐海县| 布尔津县| 萨迦县| 奈曼旗| 东乡县| 张家界市| 泗阳县| 阳原县| 祥云县| 日土县|