![Oracle程序員面試分類模擬38_第1頁(yè)](http://file4.renrendoc.com/view12/M00/00/28/wKhkGWZb9CaAWjvsAAOI1clHIZM256.jpg)
![Oracle程序員面試分類模擬38_第2頁(yè)](http://file4.renrendoc.com/view12/M00/00/28/wKhkGWZb9CaAWjvsAAOI1clHIZM2562.jpg)
![Oracle程序員面試分類模擬38_第3頁(yè)](http://file4.renrendoc.com/view12/M00/00/28/wKhkGWZb9CaAWjvsAAOI1clHIZM2563.jpg)
![Oracle程序員面試分類模擬38_第4頁(yè)](http://file4.renrendoc.com/view12/M00/00/28/wKhkGWZb9CaAWjvsAAOI1clHIZM2564.jpg)
![Oracle程序員面試分類模擬38_第5頁(yè)](http://file4.renrendoc.com/view12/M00/00/28/wKhkGWZb9CaAWjvsAAOI1clHIZM2565.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Oracle程序員面試分類模擬38簡(jiǎn)答題1.
ISNULL如何用到索引?正確答案:ISNULL用于判斷某一列中的值是否為空。當(dāng)ISNULL作為WHERE條件的時(shí)候,該列是不會(huì)用到索引的,但是(江南博哥)可以加偽列創(chuàng)建偽聯(lián)合索引來(lái)使得ISNULL使用索引,如下:
其中,OBJ_ID和-1組成聯(lián)合索引,當(dāng)執(zhí)行類似如下SQL語(yǔ)句時(shí)即可用到索引I_TB_OBJ_ID:
2.
RAC環(huán)境下所有實(shí)例都共享一個(gè)Undo表空間嗎?正確答案:RAC下的每個(gè)節(jié)點(diǎn)實(shí)例需要有自己?jiǎn)为?dú)的Undo表空間。由初始化參數(shù)“UNDOTABLESPACE”指定。同Redo一樣,Undo表空間也需要部署到共享存儲(chǔ),雖然每個(gè)節(jié)點(diǎn)上Undo的使用是獨(dú)立的,但需要保證集群內(nèi)其他節(jié)點(diǎn)實(shí)例能對(duì)其訪問(wèn),以完成構(gòu)造讀一致性等要求,配置如下:
為了讓RAC中的所有實(shí)例能夠訪問(wèn)數(shù)據(jù)庫(kù),所有的DataFiles、ControlFiles、Pfile/Spfile和RedoLogFiles必須保存在共享磁盤(pán)上,并且要能被所有節(jié)點(diǎn)同時(shí)訪問(wèn)。RAC數(shù)據(jù)庫(kù)和單實(shí)例數(shù)據(jù)庫(kù)具體區(qū)別如下:
1)Redo和Undo,至少為每個(gè)實(shí)例多配置一個(gè)Redo線程(例如:兩個(gè)實(shí)例組成的集群至少要4個(gè)RedoLogGroup,每個(gè)實(shí)例兩個(gè)RedoGroup),另外要為每一個(gè)實(shí)例配置一個(gè)Undo表空間。每個(gè)實(shí)例在做數(shù)據(jù)庫(kù)的修改時(shí)都使用自己實(shí)例的Redo和Undo,各自鎖定自己修改的數(shù)據(jù),把不同實(shí)例的操作相對(duì)保持獨(dú)立就避免了數(shù)據(jù)不一致。在備份或者恢復(fù)時(shí),Redo和Undo也需要按照線程(THREAD)來(lái)對(duì)待。
2)內(nèi)存和進(jìn)程,各個(gè)節(jié)點(diǎn)的實(shí)例都有自己的內(nèi)存結(jié)構(gòu)和進(jìn)程結(jié)構(gòu),各節(jié)點(diǎn)之間結(jié)構(gòu)是基本相同的。RAC在各個(gè)節(jié)點(diǎn)之間通過(guò)CacheFusion(緩存融合)技術(shù)同步SGA中的緩存信息達(dá)到提高訪問(wèn)速度的效果,同時(shí)也保證了數(shù)據(jù)的一致性。
3.
什么是索引的選擇性(IndexSelectivity)?正確答案:索引的選擇性(IndexSelectivity,索引的選擇度或索引的選擇率)是指索引列中不同值的記錄數(shù)與表中總記錄數(shù)的比值。索引的選擇性的取值范圍是[0,1]。例如,某個(gè)表的記錄數(shù)是1000條,而該表的索引列的值只有900個(gè)不同的值(有100個(gè)是相同或是空),所以,該列索引的選擇性為900/1000=0.9。對(duì)于索引的選擇性,值越高那么表示該列索引的效率也就越高??梢允褂萌缦碌腟QL來(lái)計(jì)算索引的選擇性:
這種方法的優(yōu)點(diǎn)是在創(chuàng)建索引前就能評(píng)估索引的選擇性。當(dāng)索引被收集了最新的統(tǒng)計(jì)信息時(shí),可以使用如下的SQL語(yǔ)句查詢索引的選擇性:
毋庸置疑,主鍵的選擇性為1。選擇性越接近1,那么該索引就越好。
4.
TCP和UDP的區(qū)別有哪些?正確答案:傳輸層協(xié)議主要有TCP與UDP。UDP(UserDatagramProtocol)提供無(wú)連接的通信,不能保證數(shù)據(jù)包被發(fā)送到目標(biāo)地址,典型的即時(shí)傳輸少量數(shù)據(jù)的應(yīng)用程序通常使用UDP。TCP(TransmissionControlProtocol)是一種面向連接(連接導(dǎo)向)的、可靠的、基于字節(jié)流的通信協(xié)議,它為傳輸大量數(shù)據(jù)或?yàn)樾枰邮諗?shù)據(jù)許可的應(yīng)用程序提供連接定向和可靠的通信。
TCP連接就像打電話,用戶撥特定的號(hào)碼,對(duì)方在線并拿起電話,然后雙方進(jìn)行通話,通話完畢之后再掛斷,整個(gè)過(guò)程是一個(gè)相互聯(lián)系、缺一不可的過(guò)程。而UDP連接就像發(fā)短信,用戶短信發(fā)送給對(duì)方,對(duì)方有沒(méi)有收到信息,發(fā)送者根本不知道,而且對(duì)方是否回答也不知道,接收方對(duì)信息發(fā)送者發(fā)送消息也是一樣處于不可知的狀態(tài)。
TCP與UDP都是一種常用的通信方式,在特定的條件下發(fā)揮不同的作用。具體而言,TCP和UDP的區(qū)別主要表現(xiàn)為以下幾個(gè)方面:
1)TCP是面向連接的傳輸控制協(xié)議,而UDP提供的是無(wú)連接的數(shù)據(jù)包服務(wù)。
2)TCP具有高可靠性,確保傳輸數(shù)據(jù)的正確性,不出現(xiàn)丟失或亂序;UDP在傳輸數(shù)據(jù)前不建立連接,不對(duì)數(shù)據(jù)報(bào)進(jìn)行檢查與修改,無(wú)需等待對(duì)方的應(yīng)答,所以會(huì)出現(xiàn)分組丟失、重復(fù)、亂序,應(yīng)用程序需要負(fù)責(zé)傳輸可靠性方面的所有工作。
3)TCP對(duì)系統(tǒng)資源要求較多,UDP對(duì)系統(tǒng)資源要求較少。
4)UDP具有較好的實(shí)時(shí)性,工作效率較TCP高。
5)UDP的段結(jié)構(gòu)比TCP的段結(jié)構(gòu)簡(jiǎn)單,因此網(wǎng)絡(luò)開(kāi)銷也小。
UDP比TCP的效率要高,為什么TCP還能夠保留呢?其實(shí),TCP和UDP各有所長(zhǎng)、各有所短,適用于不同要求的通信環(huán)境,有些環(huán)境采用UDP確實(shí)高效,而有些環(huán)境需要可靠的連接,此時(shí)采用TCP則更好。在提及TCP的時(shí)候,一般也提及IP。IP協(xié)議是一種網(wǎng)絡(luò)層協(xié)議,它規(guī)定每個(gè)互聯(lián)網(wǎng)上的計(jì)算機(jī)都有一個(gè)唯一的IP地址,這樣數(shù)據(jù)包就可以通過(guò)路由器的轉(zhuǎn)發(fā)到達(dá)指定的計(jì)算機(jī),但I(xiàn)P并不保證數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
5.
生成備庫(kù)控制文件的方法有哪些?正確答案:若在RMAN中,則用命令“BACKUPDEVICETYPEDISKFORMAT'/arch/standby_new_thr_%U.ctl'CURRENTCONTROLFILEFORSTANDBY;”。若在SQL環(huán)境中,則用命令“ALTERDATABASECREATESTANDBYCONTROLFILEAS'/arch/standby_new_thr_contol.ctl'”生成。
6.
如何將一個(gè)數(shù)據(jù)庫(kù)添加到CRS中?正確答案:雖然通過(guò)DBCA(DataBaseConfigurationAssistant,數(shù)據(jù)庫(kù)配置助手)創(chuàng)建的數(shù)據(jù)庫(kù)會(huì)自動(dòng)加入CRS中,但通過(guò)RMAN創(chuàng)建的數(shù)據(jù)庫(kù)是不會(huì)被加入CRS中的,在這種情況下就需要手動(dòng)添加,將數(shù)據(jù)庫(kù)加入CRS中后就可以通過(guò)srvct1來(lái)管理數(shù)據(jù)庫(kù)了。添加的主要命令如下:
在以上命令中,-d代表db_unique_name,-c代表數(shù)據(jù)庫(kù)類型,-o代表ORACLE_HOME,-p代表spfile的路徑,-r代表數(shù)據(jù)庫(kù)角色,-n代表節(jié)點(diǎn)名,-i代表實(shí)例名。
7.
如果必須利用備份恢復(fù)數(shù)據(jù)庫(kù),但是又沒(méi)有控制文件,如何解決問(wèn)題?正確答案:可以重建控制文件,然后利用帶BACKUPCONTROLFILE子句的RECOVER命令恢復(fù)數(shù)據(jù)庫(kù)。
8.
SQL*Plus的ERRORLOGGING的作用是什么?正確答案:在Oracle11g中,可以把SQL或PL/SQL錯(cuò)誤信息自動(dòng)記錄到當(dāng)前用戶下的一個(gè)表中,而且不會(huì)自動(dòng)刪除,默認(rèn)的表名為SPERRORLOG,也可以指定自己的表名替換默認(rèn)表名。
9.
審計(jì)如何分類?正確答案:Oracle中審計(jì)總體上可分為“標(biāo)準(zhǔn)審計(jì)”和“細(xì)粒度審計(jì)”,后者也稱為“基于政策的審計(jì)”,在Oracle10g之后審計(jì)功能得到很大增強(qiáng)。其中,標(biāo)準(zhǔn)審計(jì)可分為用戶級(jí)審計(jì)和系統(tǒng)級(jí)審計(jì)。用戶級(jí)審計(jì)是任何Oracle用戶都可設(shè)置的審計(jì),主要是用戶針對(duì)自己創(chuàng)建的數(shù)據(jù)庫(kù)表或視圖進(jìn)行審計(jì),記錄所有用戶對(duì)這些表或視圖的一切成功和(或)不成功的訪問(wèn)以及各種類型的SQL操作。系統(tǒng)級(jí)審計(jì)只能由DBA設(shè)置,用以監(jiān)測(cè)成功或失敗的登錄要求、監(jiān)測(cè)GRANT和REVOKE操作以及其他數(shù)據(jù)庫(kù)級(jí)權(quán)限下的操作。
在Oracle中分別支持以下三種標(biāo)準(zhǔn)審計(jì)類型,或者說(shuō),可以從3個(gè)角度去啟用審計(jì):
1)語(yǔ)句審計(jì)(StatementAuditing),對(duì)某種類型的SQL語(yǔ)句審計(jì),不指定結(jié)構(gòu)或?qū)ο蟆徲?jì)SQL語(yǔ)句的成功執(zhí)行或不成功執(zhí)行。這里從SQL語(yǔ)句的角度出發(fā),進(jìn)行指定。審計(jì)只關(guān)心執(zhí)行的語(yǔ)句。例如,AUDITCREATETABLE語(yǔ)句,其中,AUDIT為使用審計(jì)的關(guān)鍵字。該語(yǔ)句表示對(duì)CREATETABLE語(yǔ)句的執(zhí)行進(jìn)行記錄,不管這條語(yǔ)句是否為針對(duì)某個(gè)對(duì)象的操作。
2)權(quán)限審計(jì)(PrivilegeAuditing),對(duì)執(zhí)行相應(yīng)動(dòng)作的系統(tǒng)特權(quán)的使用審計(jì),對(duì)涉及某些權(quán)限的操作進(jìn)行審計(jì),這里強(qiáng)調(diào)“系統(tǒng)權(quán)限”,例如,“AUDITCREATETABLE;”命令,可以表明對(duì)涉及“CREATETABLE”權(quán)限的操作進(jìn)行審計(jì)。所以,在這種命令的情況下,既產(chǎn)生一個(gè)語(yǔ)句審計(jì),又產(chǎn)生了一個(gè)權(quán)限審計(jì)。有時(shí)候語(yǔ)句審計(jì)和權(quán)限審計(jì)是相互重復(fù)的。
3)對(duì)象審計(jì)(ObjectAuditing),對(duì)一特殊模式對(duì)象上的指定對(duì)象的審計(jì)。對(duì)一個(gè)特殊模式對(duì)象上的DML語(yǔ)句進(jìn)行審計(jì)。記錄作用在指定對(duì)象上的操作。例如,AUDITSELECTONSCOTT.DEPT語(yǔ)句,表示指定SCOTT用戶的DEPT表,審計(jì)對(duì)其進(jìn)行的SELECT語(yǔ)句。
審計(jì)的分類如下圖所示。
審計(jì)的分類
10.
RMAN可以跨版本或跨平臺(tái)執(zhí)行還原或復(fù)制命令嗎?正確答案:一般會(huì)被問(wèn)到,能使用更高版本的Oracle還原或復(fù)制舊版本的數(shù)據(jù)庫(kù)嗎?答案是可以跨高版本恢復(fù),但是有很多限制條件,而且不支持RMAN復(fù)制(Duplicate),因?yàn)樵摴δ軙?huì)在恢復(fù)之后嘗試自動(dòng)打開(kāi)數(shù)據(jù)庫(kù)時(shí)失敗。RMAN可將在較舊的數(shù)據(jù)庫(kù)版本上進(jìn)行的備份還原到較新的版本中,但是舊的備份必須是在9.2或更高版本的數(shù)據(jù)庫(kù)中進(jìn)行的。對(duì)于跨小版本的恢復(fù)很容易,例如從Oracle11.2.0.1恢復(fù)到11.2.0.3版本的數(shù)據(jù)庫(kù)??梢砸来芜€原SPFILE、控制文件和數(shù)據(jù)文件,然后恢復(fù)數(shù)據(jù)庫(kù),使用STARTUPUPGRADE命令打開(kāi)數(shù)據(jù)庫(kù),最后一步是使用catupgrd.sql腳本對(duì)失效的對(duì)象進(jìn)行編譯即可。對(duì)于跨大版本的恢復(fù)有很多限制條件,例如從Oracle10.2.0.2恢復(fù)到11.2.0.3版本的數(shù)據(jù)庫(kù)。恢復(fù)步驟和小版本一樣,打開(kāi)數(shù)據(jù)庫(kù)的時(shí)候可以使用命令:“ALTERDATABASEOPENRESETLOGSUPGRADE;”。將Oracle10g恢復(fù)到Oracle11g上,需要滿足2個(gè)條件,①必須在Oracle10g上先執(zhí)行腳本“@?/rdbms/admin/utlu112i.sql”,然后再進(jìn)行備份,否則RESTORE之后的升級(jí)將失敗。②Oracle10g的版本必須大于10.2.0.2,即Oracle采用RMAN恢復(fù)到高版本的數(shù)據(jù)庫(kù)依然要遵循Oracle數(shù)據(jù)庫(kù)的升級(jí)流程圖,如下圖所示。
升級(jí)流程圖
需要注意的是,與此相似的問(wèn)題,還有如下幾個(gè):
1)MAN支持在兩個(gè)不同的補(bǔ)工程序集之間進(jìn)行還原或復(fù)制嗎?答案是支持,該情況和上邊介紹的RMAN的跨版本恢復(fù)是一樣的。
2)RMAN支持在同一操作系統(tǒng)的不同版本之間進(jìn)行還原或復(fù)制嗎?答案是支持。
3)Oracle的位(bit)級(jí)別(32位或64位)不匹配時(shí),可以進(jìn)行還原或復(fù)制嗎?在執(zhí)行還原或恢復(fù)時(shí),最好保持相同的位版本。但是,除使用復(fù)制命令(duplicate)外,使用相同的操作系統(tǒng)平臺(tái)允許在Oracle位級(jí)別(32位或64位)之間進(jìn)行還原和恢復(fù)。需要注意的是,這可能只適用于特定的操作系統(tǒng),例如Windows、Linux。如果要使用32位軟件運(yùn)行64位數(shù)據(jù)庫(kù)(或反之),那么在恢復(fù)結(jié)束之后必須要使用utlirp.sql腳本轉(zhuǎn)換數(shù)據(jù)庫(kù)位版本。如果不運(yùn)行utlirp.sql腳本,那么將會(huì)出現(xiàn)錯(cuò)誤“ORA-06553:PLS-801:INTERNALERROR[56319]”。
4)可以將更高版本的備份還原到較早版本的Oracle嗎?例如,把數(shù)據(jù)庫(kù)從10.2升級(jí)至11.2之后,在成功升級(jí)并在11.2上運(yùn)行幾天之后,并對(duì)11.2數(shù)據(jù)庫(kù)進(jìn)行了新的備份。這時(shí),能否將11.2的備份集恢復(fù)到10.2版本的數(shù)據(jù)庫(kù)中嗎?答案是:如果在升級(jí)后從未增加COMPATIBLE參數(shù),那么可以進(jìn)行此類還原。在本例中,如果11.2數(shù)據(jù)庫(kù)始終是在COMPATIBLE為10.2的情況下運(yùn)行,那么可以將11.2數(shù)據(jù)庫(kù)的備份還原到10.2實(shí)例中,然后再執(zhí)行降級(jí)過(guò)程(ALTERDATABASEOPENRESETLOGSDOWNGRADE;)。如果數(shù)據(jù)庫(kù)已經(jīng)在COMPATIBLE為11.2的情況下打開(kāi),那么就不能進(jìn)行此類還原。
5)可以在兩個(gè)不同的平臺(tái)之間還原或復(fù)制RMAN備份嗎,例如Solaris到Linux?在通常情況下,不能在兩個(gè)不同的平臺(tái)之間進(jìn)行還原或復(fù)制。在Oracle10g之前的版本中,從一個(gè)平臺(tái)遷移至另一個(gè)平臺(tái)的唯一方法是使用導(dǎo)出/導(dǎo)入。從OraclelOg開(kāi)始,通過(guò)RMAN轉(zhuǎn)換(convert)命令,使用10g跨平臺(tái)可傳輸表空間(Cross-PlatformTransportableTablespaces)選項(xiàng)跨越各個(gè)平臺(tái)。在Oracle10.2及更高版本中,如果源OS和目標(biāo)OS具有相同的字節(jié)序(endian),那么可以使用“CONVERTDATABASE”命令轉(zhuǎn)換數(shù)據(jù)文件并使其準(zhǔn)備好傳輸?shù)侥繕?biāo)OS。
11.
Oracle如何并發(fā)地收集統(tǒng)計(jì)信息?正確答案:對(duì)于大表的統(tǒng)計(jì)信息收集可以通過(guò)DEGREE參數(shù)使得掃描大表的時(shí)候進(jìn)行并行掃描,從而加快掃描速度,縮短了收集統(tǒng)計(jì)信息的時(shí)間。但是,即使加了DEGREE參數(shù),在收集統(tǒng)計(jì)信息的時(shí)候,還是進(jìn)行一個(gè)表一個(gè)表的掃描,并沒(méi)有并發(fā)的同時(shí)掃描多個(gè)表。在Oracle11.2.0.2之后,有了一個(gè)參數(shù),可以并發(fā)掃描表,這就是CONCURRENT參數(shù)??梢酝ㄟ^(guò)以下SQL語(yǔ)句查詢數(shù)據(jù)庫(kù)是否啟用了CONCURRENT收集統(tǒng)計(jì)信息,默認(rèn)為FALSE,表示沒(méi)有開(kāi)啟并發(fā)收集統(tǒng)計(jì)信息:
開(kāi)啟方式為:
開(kāi)啟CONCURRENT之后,收集統(tǒng)計(jì)信息就會(huì)以并發(fā)的形式進(jìn)行,會(huì)并發(fā)出多個(gè)JOB進(jìn)程。在并發(fā)收集統(tǒng)計(jì)信息時(shí),數(shù)據(jù)庫(kù)生成的JOB數(shù)會(huì)根據(jù)具體情況來(lái)分配。在大多數(shù)情況下,DBMS_STATS程序會(huì)給每個(gè)對(duì)象分配一個(gè)JOB;但如果對(duì)象(表或者分區(qū))的大小太小,為了節(jié)省資源,Oracle會(huì)合并多個(gè)表和分區(qū)在一個(gè)JOB中執(zhí)行。為了防止同時(shí)處理多個(gè)分區(qū)表的分區(qū)時(shí)發(fā)生死鎖,所以,對(duì)于分區(qū)表的處理機(jī)制是每次只能處理一個(gè)分區(qū)表,其他的分區(qū)表需要等待,待前一個(gè)分區(qū)表處理完后再處理下一個(gè)。在Oracle11.2.0.2到11.2.0.4的版本上,CONCURRENT可取的值為T(mén)RUE(開(kāi)啟并發(fā))和FALSE(關(guān)閉并發(fā))。在Oracle12c的版本上,可以設(shè)置以下的值:
可以通過(guò)以下的視圖對(duì)并發(fā)統(tǒng)計(jì)信息收集進(jìn)行監(jiān)視:
監(jiān)控并發(fā)收集統(tǒng)計(jì)信息JOB的SQL代碼如下:
對(duì)于并發(fā)收集統(tǒng)計(jì)信息需要注意如下幾點(diǎn):
1)用CONCURRENT收集統(tǒng)計(jì)信息,需要收集統(tǒng)計(jì)信息的用戶具有CREATEJOB、MANAGESCHEDULER和MANAGEANYQUEUE權(quán)限。即使是該用戶具有了DBA角色,也還是需要顯式授權(quán)上述權(quán)限。否則執(zhí)行JOB的時(shí)候,可能會(huì)報(bào)錯(cuò):“ORA-27486insufficientprivileges”、“ORA-20000:Statisticscollectionfailedfor32235objectsinthedatabase”。
2)因?yàn)镃ONCURRENT不能控制并發(fā)度的大小,所以,如果數(shù)據(jù)庫(kù)的初始化參數(shù)JOB_QUEUE_PROCESSES設(shè)置的太高(在Oracle11.2.0.3之后,這個(gè)值的默認(rèn)值是1000,所以就可能并發(fā)出1000個(gè)JOB),那么對(duì)數(shù)據(jù)庫(kù)的性能影響較大。所以開(kāi)啟CONCURRENT的另外一個(gè)建議就是使用ResourceManager來(lái)控制資源的使用。
3)下表列出了并發(fā)和并行在收集統(tǒng)汁信息方面的一些區(qū)別。
12.
如何查詢RMAN的配置信息?正確答案:通過(guò)視圖V$RMAN_CONFIGURATION可以查詢其配置信息或在RMAN中使用SHOWALL命令查看。
13.
行列互換有哪些方法?正確答案:行列轉(zhuǎn)換包括以下6種情況:①列轉(zhuǎn)行。②行轉(zhuǎn)列。③多列轉(zhuǎn)換成字符串。④多行轉(zhuǎn)換成字符串。⑤字符串轉(zhuǎn)換成多列。⑥字符串轉(zhuǎn)換成多行。其中,重點(diǎn)是行轉(zhuǎn)列和字符串轉(zhuǎn)換成多行。下面將對(duì)這幾種情況做簡(jiǎn)要說(shuō)明,詳細(xì)轉(zhuǎn)換過(guò)程請(qǐng)參考隨書(shū)pdf文檔。
(1)列轉(zhuǎn)行
列轉(zhuǎn)行就是將原表中的列名作為轉(zhuǎn)換后的表的內(nèi)容。列轉(zhuǎn)行主要采用UNIONALL來(lái)完成。
(2)行轉(zhuǎn)列
行轉(zhuǎn)列就是將行數(shù)據(jù)內(nèi)容作為列名。主要采用MAX和DECODE函數(shù)來(lái)完成。
(3)多列轉(zhuǎn)換成字符串
使用||或CONCAT函數(shù)實(shí)現(xiàn)。
(4)多行轉(zhuǎn)換成字符串
可以采用SYS_CONNECT_BY_PATH來(lái)完成。
(5)字符串轉(zhuǎn)換成多列
實(shí)際上就是一個(gè)字符串拆分的問(wèn)題。主要采用SUBSTR和INSTR來(lái)完成。
(6)字符串轉(zhuǎn)換成多行
主要采用UNIONALL、SUBSTR和INSTR來(lái)完成,對(duì)于其他類型的轉(zhuǎn)換請(qǐng)參考隨書(shū)pdf文檔。還有幾類特殊的轉(zhuǎn)換如下:
結(jié)果:
若是字符串類型,則如下:
結(jié)果:
14.
如果聯(lián)機(jī)Redo日志文件損壞,那么如何恢復(fù)?正確答案:聯(lián)機(jī)Redo日志是Oracle數(shù)據(jù)庫(kù)中比較核心的文件,當(dāng)Redo日志文件異常之后,數(shù)據(jù)庫(kù)就無(wú)法正常啟動(dòng),而且有丟失數(shù)據(jù)的風(fēng)險(xiǎn),強(qiáng)烈建議在條件允許的情況下,對(duì)Redo日志進(jìn)行多路鏡像。需要注意的是,RMAN不能備份聯(lián)機(jī)Redo日志文件。所以,聯(lián)機(jī)Redo日志一旦出現(xiàn)故障,則只能進(jìn)行清除日志了。清除日志文件即表明可以重用該文件。如果日志文件已經(jīng)歸檔,那么可以使用:
如果該日志還沒(méi)有歸檔,那么需要用:
如果是當(dāng)前日志損壞,那么一般不能CLEAR,而且可能意味著丟失數(shù)據(jù),一般情況下只能設(shè)置隱含參數(shù)“_ALLOW_RESETLOGS_CORRUPTION=TRUE”來(lái)進(jìn)行強(qiáng)制執(zhí)行不完全恢復(fù)了,但是,這樣的方法是不建議的。
15.
如何確認(rèn)當(dāng)前數(shù)據(jù)庫(kù)已經(jīng)安裝了什么PSU?正確答案:通過(guò)命令opatchlspatches可以看到安裝的PSU版本,如下例子即安裝了11.2.0.4版本的PSU4。
16.
Linux和Windows下如何快速卸載RAC?正確答案:卸載RAC可以通過(guò)普通的腳本方式,如下:
1)卸載GRID軟件,grid用戶執(zhí)行:$ORACLE_HOME/deinstall/deinstall。
2)卸載ORACLE軟件,oracle用戶執(zhí)行:$ORACLE_HOME/deinstall/deinstall。
但是,由于腳本的方式卸載慢,多半卸載不成功,所以這個(gè)時(shí)候就需要手工進(jìn)行卸載。手工卸載的方式就是手工刪除一系列的RAC軟件及配置信息。
1)在Linux下手工卸載RAC的步驟:
①rm-rf/etc/ora*。
②rm-rf/var/trnp/.oracle.
③修改/etc/inittab文件,若是Oracle10g則刪除以下3行:
若是在Oracle11g版本中則刪除以下1行:
④rm-rf/tmp/*。
⑤rm-rf/u01/app/grid/*
--刪除GRID目錄。
⑥r(nóng)m-rf/u11/app/oracle/*
--刪除Oracle目錄。
⑦rm-rf/u01/app/oraInventory/*。
⑧清除OCR、Voting及數(shù)據(jù)庫(kù)使用過(guò)的磁盤(pán)。
最后,重啟2個(gè)節(jié)點(diǎn)。
2)在Windows下手工卸載RAC的步驟:
①開(kāi)始->設(shè)置->控制面板->管理工具->服務(wù),或運(yùn)行services.msc打開(kāi)服務(wù),停止所有Oracle服務(wù)。
②刪除Oracle和GRID的安裝目錄。
③刪除C:\ProgramFiles\Oracle目錄。
④刪除C:\windows\temp和C:\temp以及C:\Users\Administrator\Oracle下的文件。
⑤運(yùn)行regedit,打開(kāi)注冊(cè)表編輯器,選擇HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,刪除該項(xiàng)。
⑥運(yùn)行regedit,打開(kāi)注冊(cè)表編輯器,選擇HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滾動(dòng)這個(gè)列表,刪除所有Oracle開(kāi)頭的項(xiàng)。
⑦運(yùn)行regedit,打開(kāi)注冊(cè)表編輯器,選擇HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application,刪除所有Oracle入口。
⑧開(kāi)始→設(shè)置→控制面板→系統(tǒng)→高級(jí)→環(huán)境變量,刪除環(huán)境變量CLASSPATH和PATH中有關(guān)Oracle的設(shè)定。
⑨從桌面上、STARTUP(啟動(dòng))組、程序菜單中,刪除所有有關(guān)Oracle的組和圖標(biāo)。
⑩重新啟動(dòng)計(jì)算機(jī),重啟后才能完全刪除Oracle所在目錄。
若個(gè)別文件不能刪除,則說(shuō)明該文件與某個(gè)Windows服務(wù)相關(guān)聯(lián),可以先把相關(guān)聯(lián)的服務(wù)停止后再刪除。
以上手工卸載的步驟也可以用于卸載單實(shí)例的數(shù)據(jù)庫(kù)和GRID。
17.
什么是高水位?如何回收表的高水位?正確答案:Oracle數(shù)據(jù)庫(kù)通過(guò)跟蹤段中的塊狀態(tài)來(lái)管理空間。高水位標(biāo)記(HighWarterMark,HWM)是段中的一個(gè)點(diǎn),超過(guò)該點(diǎn)的數(shù)據(jù)塊是未格式化和未使用過(guò)的。HWM的信息儲(chǔ)存在段頭(SegmentHeader,第一個(gè)區(qū)的第一個(gè)塊就稱為段頭),在段空間是手動(dòng)管理方式時(shí)(MSSM),Oracle是通過(guò)Freelist(一個(gè)單向鏈表)來(lái)管理段內(nèi)的空間分配,此時(shí)只有HWM的說(shuō)法;在段空間是自動(dòng)管理方式(ASSM)時(shí),Oracle是通過(guò)BITMAP來(lái)管理段內(nèi)的空間分配,此時(shí)Oracle引入了LHWM。(LowHWM,低高水位)的概念。在MSSM中,當(dāng)數(shù)據(jù)插入以后,如果是插入到新的數(shù)據(jù)塊中,那么數(shù)據(jù)塊就會(huì)被自動(dòng)格式化等待數(shù)據(jù)訪問(wèn);而在ASSM中,數(shù)據(jù)插入到新的數(shù)據(jù)塊以后,數(shù)據(jù)塊并沒(méi)有被格式化,而是在第一次訪問(wèn)這個(gè)數(shù)據(jù)塊的時(shí)候才格式化這個(gè)塊。所以此時(shí)又需要一條水位線,用來(lái)標(biāo)示已經(jīng)被格式化的塊,這條水位線就稱為L(zhǎng)HWM。LHWM之下的所有塊都是已格式化的,要么包含數(shù)據(jù)或以前曾包含數(shù)據(jù)。一般來(lái)說(shuō),LHWM肯定是低于等于HWM的。在一個(gè)ASSM段中的每個(gè)數(shù)據(jù)塊處于以下?tīng)顟B(tài)之一:
1)在HWM之上,這些塊是未分配、未格式化的,且從未使用過(guò)。
2)在HWM之下,這些塊處于以下?tīng)顟B(tài)之一:
①已分配,但當(dāng)前未格式化且未使用。
②已分配、已格式化且包含數(shù)據(jù)。
③已分配、已格式化且為空,因?yàn)閿?shù)據(jù)已被刪除。
LHWM在全表掃描中非常重要。因?yàn)镠WM之下的塊只在被使用時(shí)才格式化,所以可能還有一些塊是未被格式化的。因此,數(shù)據(jù)庫(kù)讀取位圖塊,以獲取LHWM的位置。數(shù)據(jù)庫(kù)讀取LHWM之下的所有塊,因?yàn)樗鼈兪且迅袷交模缓髢H仔細(xì)讀取位于LHWM和HWM之間的已格式化塊,避開(kāi)未格式化的塊。所以,Oracle對(duì)表進(jìn)行全表掃描時(shí)是掃描了HWM下的所有格式化了的塊。當(dāng)HWM與LHWM之間的塊填滿時(shí),HWM向右推進(jìn),而LHWM相應(yīng)推進(jìn)到舊的HWM的位置。數(shù)據(jù)庫(kù)不斷插入數(shù)據(jù),隨著時(shí)間的推移,HWM繼續(xù)向右推進(jìn),而LHWM總尾隨其后。除非DBA手動(dòng)重建、截?cái)嗷蚩s小該對(duì)象,否則HWM從不倒退。
當(dāng)使用DELETE刪除表記錄時(shí),HWM并不會(huì)下降,隨之導(dǎo)致的是全表掃描的實(shí)際開(kāi)銷并沒(méi)有任何減少。例如,首先新建一張空表,大小占用64K,然后插入數(shù)據(jù)直到表大小變?yōu)?0G,此時(shí)使用DELETE刪除所有的數(shù)據(jù)并且提交,這個(gè)時(shí)候查詢表的大小的時(shí)候依然是50G,這就是因?yàn)楸淼母咚粵](méi)有釋放的緣故,而在這時(shí)如果使用“SELECT*FROMTABLE_NAME;”語(yǔ)句來(lái)查詢數(shù)據(jù)的話,那么查詢過(guò)程就會(huì)很慢,因?yàn)镺racle要執(zhí)行全表掃描,從HWM下所有的格式化了的塊都得去掃描,直到50G的所有塊全部掃描完畢。曾遇到一個(gè)同事使用DELETE刪除了一個(gè)很大的分區(qū)表,然后執(zhí)行SELECT查詢很久都沒(méi)有結(jié)果,以為是數(shù)據(jù)庫(kù)暫停運(yùn)行了,其實(shí)這個(gè)問(wèn)題是由于高水位的緣故。所以,表執(zhí)行了TRUNCATE操作,再次SELECT的時(shí)候就可以很快返回結(jié)果了。
當(dāng)用直接路徑插入行時(shí)[例如,通過(guò)直接加載插入(用APPEND提示插入)或通過(guò)SQL*Loader直接路徑1,數(shù)據(jù)塊直接置于HWM之上,HWM下面的空間就浪費(fèi)掉了。
釋放表的高水位通常有如下幾種辦法:
1)對(duì)表進(jìn)行MOVE操作:ALTERTABLETABLE_NAMEMOVE;。若表上存在索引,則記得重建索引。
2)對(duì)表進(jìn)行SHRINKSPACE操作:ALTERTABLETABLE_NAMESHRINKSPACE;。注意,在執(zhí)行該指令之前必須開(kāi)啟行移動(dòng):A
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度教育機(jī)構(gòu)圖書(shū)資料采購(gòu)合同
- 2025年度教育貸款擔(dān)保借貸合同書(shū)范本
- 2025年度個(gè)性化簡(jiǎn)易離婚協(xié)議書(shū)模板開(kāi)發(fā)合同
- 2025年度光伏電站建設(shè)與管理合同范本
- 2025年度環(huán)保設(shè)施設(shè)備采購(gòu)與安裝合同范本
- 2025年度影視制作知識(shí)產(chǎn)權(quán)保密及版權(quán)合作合同
- 2025年休閑食品脫氧劑項(xiàng)目投資可行性研究分析報(bào)告-20241226-184025
- 2025年度高品質(zhì)黃砂碎石供應(yīng)與銷售合作協(xié)議
- 2025年度土石方運(yùn)輸與綜合利用服務(wù)合同(2025版)
- 2025年度合同編·環(huán)保設(shè)備買(mǎi)賣合同概述
- GB/T 33107-2016工業(yè)用碳酸二甲酯
- GB/T 18938-2008家用和類似用途的面包片電烘烤器性能測(cè)試方法
- 簡(jiǎn)約卡通小學(xué)生校園文明禮儀教育PPT模板
- 勞動(dòng)合同法經(jīng)典講義
- 三位數(shù)乘一位數(shù)練習(xí)題(精選100道)
- 教學(xué)第二章-毫針刺法1課件
- 蘋(píng)果主要病蟲(chóng)害防治課件
- 產(chǎn)業(yè)園區(qū)環(huán)保管家實(shí)踐和案例
- 醫(yī)學(xué)約束帶的使用課件
- 傳染病防控工作職能部門(mén)間協(xié)調(diào)機(jī)制及流程
- 社會(huì)團(tuán)體法定代表人登記表
評(píng)論
0/150
提交評(píng)論