版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Oracle程序員面試分類模擬26簡(jiǎn)答題1.
在控制文件丟失且無(wú)備份的情況下如何恢復(fù)?正確答案:重建控制文件,在重建控制文件之前,需要使用包DBMS_BACKUP_RESTORE來(lái)抽取數(shù)據(jù)文件,其(江南博哥)實(shí)面試官主要想看求職者是否知道有這個(gè)包的存在而已。
2.
imp工具的ignore參數(shù)有什么作用?正確答案:Oracle在恢復(fù)數(shù)據(jù)的過(guò)程中,當(dāng)恢復(fù)某個(gè)表時(shí),如果該表已經(jīng)存在,就要根據(jù)ignore參數(shù)的設(shè)置來(lái)決定如何操作。若ignore為Y時(shí),則Oracle不執(zhí)行CREATETABLE語(yǔ)句,直接將數(shù)據(jù)插入到表中。如果插入的記錄違背了約束條件(例如主鍵約束),那么出錯(cuò)的記錄不會(huì)插入,但合法的記錄會(huì)添加到表中。若ignore為N時(shí),則Oracle不執(zhí)行CREATETABLE語(yǔ)句,同時(shí)也不會(huì)將數(shù)據(jù)插入到表中,而是忽略該表的錯(cuò)誤,繼續(xù)恢復(fù)下一個(gè)表,默認(rèn)值為N。
3.
數(shù)據(jù)泵中NETWORK_LINK選項(xiàng)的作用是什么?正確答案:數(shù)據(jù)泵expdp生成的文件默認(rèn)是存放在服務(wù)端的,而exp生成的文件是存放在客戶端的。使用數(shù)據(jù)泵的NETWORK_LINK參數(shù),可以在本地的數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)指向遠(yuǎn)程數(shù)據(jù)庫(kù)的DBLINK,在執(zhí)行導(dǎo)出expdp時(shí),指定NETWORK_LINK參數(shù)為DBLINK名稱,就可以直接將遠(yuǎn)程數(shù)據(jù)庫(kù)的數(shù)據(jù)導(dǎo)出到本地?cái)?shù)據(jù)庫(kù)里創(chuàng)建的DIRECTORY下。在執(zhí)行導(dǎo)入命令impdp的時(shí)候也可以使用NETWORK_LNK參數(shù)。如果不想在源端或目標(biāo)端生成dmp文件而直接將需要的數(shù)據(jù)導(dǎo)入目標(biāo)端數(shù)據(jù)庫(kù),那么可以直接使用impdp帶NETWORK_LINK參數(shù),這樣可以直接執(zhí)行impdp從而繞過(guò)了expdp的步驟。
4.
在Undo表空間數(shù)據(jù)文件丟失的情況下如何恢復(fù)?正確答案:恢復(fù)大約可以分為3種情況:①有備份,這種情況下直接采用備份的文件進(jìn)行恢復(fù)即可。②無(wú)備份但是有完整的歸檔文件存在,這種情況下可以使用命令“ALTERDATABASECREATEDATAFILE文件號(hào)AS'/u01/app/oracle/oradata/lhrdb/undotbs01.dbf'size50m;”來(lái)創(chuàng)建丟失的Undo文件,然后使用“RECOVERDATAFILE文件號(hào);”進(jìn)行恢復(fù)數(shù)據(jù)庫(kù)文件即可。③無(wú)備份,歸檔文件丟失,在這種情況下的恢復(fù)比較復(fù)雜。首先應(yīng)該切換Undo表空間到一個(gè)新建的Undo表空間中,并設(shè)置原有表空間的管理模式為手動(dòng)管理模式,然后將隱含參數(shù)“OFFLINE_ROLLBACK_SEGMENTS”設(shè)置為TRUE,一些關(guān)鍵性的命令如下:
5.
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。
6.
如何徹底停止expdp進(jìn)程?正確答案:許多同事在使用expdp命令時(shí),不小心按了〈CTRL+C〉組合鍵,然后又輸入exit命令(或者網(wǎng)絡(luò)中斷等異常情況),導(dǎo)致expdp進(jìn)程不存在,但Oracle數(shù)據(jù)庫(kù)的會(huì)話仍存在,所以dmp文件也一直在增長(zhǎng)。在這種情況下的處理辦法如下:
1)檢查expdp進(jìn)程是否還在:
若存在,則可用“kill-9process”命令結(jié)束(殺掉)expdp的進(jìn)程。
2)檢查會(huì)話是否仍存在,若存在則把相關(guān)的會(huì)話殺掉(注意:先使用命令“ALTERSYSTEMKILLSESSIONSID,SERIAL#IMMEDIATE;”在數(shù)據(jù)庫(kù)級(jí)別結(jié)束(殺掉)會(huì)話,然后在OS級(jí)別使用kill.9結(jié)束(殺掉)進(jìn)程),如無(wú)結(jié)束會(huì)話的權(quán)限則可以將相關(guān)的表DROP掉,表名可以使用如下的SQL來(lái)查詢:
例如:
使用相同的辦法也刪除從視圖DBA_DATAPUMP_JOBS中查詢出來(lái)的表,直到這兩個(gè)視圖無(wú)記錄。
3)刪除導(dǎo)出的dmp文件。如不刪除,則在重新執(zhí)行expdp命令時(shí)會(huì)報(bào)dmp文件已存在的錯(cuò)誤。
7.
如何跟蹤expdp和SQL*Plus命令?正確答案:可以使用trace選項(xiàng)來(lái)跟蹤expdp命令,如下:
若想跟蹤exp命令的話,可以使用操作系統(tǒng)命令strace,如下:
操作系統(tǒng)命令strace也可以跟蹤SQL*Plus命令,跟蹤的命令很簡(jiǎn)單:
Unix系統(tǒng)下跟蹤SQL*Plus命令使用truss命令,如下:
8.
如何查詢RMAN的配置信息?正確答案:通過(guò)視圖V$RMAN_CONFIGURATION可以查詢其配置信息或在RMAN中使用SHOWALL命令查看。
9.
如何查詢RMAN的所有備份信息?正確答案:可以通過(guò)視圖V$BACKUP_SET、V$BACKUP_FILES、V$BACKUP_DATAFILE、V$BACKUP_PIECE、V$BACKUP_ARCHIVELOG_DETAILS、V$BACKUPSPFILE和V$BACKUP_CONTROLFILE_DETAILS關(guān)聯(lián)查詢得到RMAN的所有備份信息。
10.
在RMAN的備份中如何列出1430到1437之間的歸檔日志?正確答案:可以使用LIST命令,如下:
若要列出當(dāng)前數(shù)據(jù)庫(kù)的所有歸檔日志,可以使用如下命令:
11.
RESETLOGS和NORESETLOGS的區(qū)別是什么?正確答案:RESETLOGS和NORESETLOGS主要用在兩個(gè)地方,第一是在創(chuàng)建控制文件的時(shí)候,第二是在打開(kāi)數(shù)據(jù)庫(kù)的時(shí)候。當(dāng)將控制文件備份到TRACE文件時(shí),可以看到里面包含了兩部分的重建語(yǔ)句,一個(gè)是使用RESETLOGS,另一個(gè)是使用NORESETLOGS。
備份控制文件的SQL如下:
以下是重建控制文件的命令:
若當(dāng)前的所有在線日志可用,則在創(chuàng)建控制文件的時(shí)候使用NORESETLOGS。若當(dāng)前的在線日志有所損壞時(shí),則在創(chuàng)建控制文件的時(shí)候需要使用RESETLOGS。若使用RESETLOGS則將導(dǎo)致在線日志里的內(nèi)容丟失,并且所有的備份失效。
在打開(kāi)數(shù)據(jù)庫(kù)的時(shí)候也可以使用RESETLOGS或NOR_ESETLOGS選項(xiàng)。在做了不完全恢復(fù)后,RESETLOGS會(huì)初始化日志,重置日志序列號(hào)(從1開(kāi)始),并且創(chuàng)建一個(gè)新的INCARNATION。可以使用RMAN命令查看INCARNATION的信息:
做不完全恢復(fù)必須使用RESETLOGS,但是RESETLOGS也可以做完全恢復(fù)。而NORESETLOGS則必須是在做完全恢復(fù)時(shí)使用。RESETLOGS會(huì)重置日志序列號(hào),強(qiáng)制清空或重建在線日志,而NORESETLOGS則不會(huì)這么做。
12.
數(shù)據(jù)庫(kù)恢復(fù)過(guò)程有什么流程嗎?正確答案:基本過(guò)程是,參數(shù)文件(PFILE、SPFILE)→控制文件→還原數(shù)據(jù)文件→恢復(fù)數(shù)據(jù)文件→打開(kāi)數(shù)據(jù)庫(kù),詳細(xì)過(guò)程可以參考隨書提供的pdf里的附錄中的Oracle恢復(fù)流程圖。
13.
不同版本的數(shù)據(jù)庫(kù)如何進(jìn)行導(dǎo)出導(dǎo)入(exp、imp)操作?正確答案:導(dǎo)出用低版本,導(dǎo)入用當(dāng)前版本。如果版本跨越太大,需要用到中間版本過(guò)渡。
14.
如何備份控制文件?正確答案:備份控制文件可以在線進(jìn)行,如備份為一個(gè)二進(jìn)制的文件:
備份為文本文件方式:
RMAN備份控制文件:
設(shè)置RMAN自動(dòng)備份控制文件:
15.
如果控制文件損壞如何恢復(fù)?正確答案:如果控制文件有多個(gè),而只損壞了單個(gè)控制文件,那么只需要關(guān)閉數(shù)據(jù)庫(kù),拷貝其他好的控制文件覆蓋掉壞的控制文件即可。也可以修改參數(shù)文件,只保留1個(gè)控制文件。如果損壞了全部控制文件,那么需要重新創(chuàng)建控制文件或從備份恢復(fù)。重新創(chuàng)建控制文件的腳本可以通過(guò)命令“ALTERDATABASEBACKUPCONTROLFILETOTRACE;”獲取。
16.
如果丟失一個(gè)數(shù)據(jù)文件而且沒(méi)有備份,也沒(méi)有歸檔日志,那么應(yīng)該如何打開(kāi)數(shù)據(jù)庫(kù)?正確答案:如果沒(méi)有備份只能是刪除這個(gè)數(shù)據(jù)文件了,會(huì)導(dǎo)致相應(yīng)的數(shù)據(jù)丟失。
ARCHIVELOG模式命令:
NOARCHIVELOG模式命令:
注意:該數(shù)據(jù)文件不能是系統(tǒng)數(shù)據(jù)文件。
17.
如果丟失一個(gè)數(shù)據(jù)文件而且沒(méi)有備份但是有該數(shù)據(jù)文件創(chuàng)建以來(lái)的歸檔日志怎么恢復(fù)?正確答案:若丟失的文件不是系統(tǒng)數(shù)據(jù)文件而且控制文件完好無(wú)損,則可以如下恢復(fù):
或者:
或者:
18.
如果聯(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ù)了,但是,這樣的方法是不建議的。
19.
如何在執(zhí)行恢復(fù)的時(shí)候?qū)?shù)據(jù)文件恢復(fù)到別的路徑?正確答案:主要采用命令“setnewnamefordatafile”和“switchdatafileall;”。
20.
怎么從備份片(BACKUPPIECE)中恢復(fù)(RESTORE)控制文件與數(shù)據(jù)文件?正確答案:可以使用如下方法,在RMAN中恢復(fù)備份片的控制文件:
如果是自動(dòng)備份,可以采用如下的方法:
但是,如果控制文件全部丟失,需要指定DBID,命令為“SETDBID=?”。自動(dòng)備份控制文件的默認(rèn)格式是%F,這個(gè)格式的形式為“c-IIIIIIIIII-YYYYMMDD-QQ”,其中IIIIIIIIII就是DBID??梢圆捎冒麯BMS_BACKUP_RESTORE來(lái)恢復(fù)(RESTORE)數(shù)據(jù)文件,當(dāng)然該包也可以用來(lái)恢復(fù)備份片中的控制文件。該包在NOMOUNT狀態(tài)下就可以執(zhí)行,如下:
21.
如何清除V$ARCHIVED_LOG視圖中的過(guò)期信息?正確答案:在使用RMAN命令(DELETEARCHIVELOGALL;)刪除歸檔信息后V$ARCHIVED_LOG視圖中的NAME列為空,但是依然可以查詢到這些刪除了的歸檔信息,出現(xiàn)這樣的現(xiàn)象是因?yàn)槭褂肦MAN命令在刪除歸檔日志的時(shí)候不會(huì)清除控制文件中的內(nèi)容,導(dǎo)致V$ARCHIVED_LOG留下的過(guò)期的不完整信息。使用如下的命令可以清除控制文件中關(guān)于V$ARCHIVED_LOG的信息:
22.
Oracle如何刪除歸檔日志文件?正確答案:在RMAN工具里刪除歸檔日志文件:
23.
生成備庫(kù)控制文件的方法有哪些?正確答案:若在RMAN中,則用命令“BACKUPDEVICETYPEDISKFORMAT'/arch/standby_new_thr_%U.ctl'CURRENTCONTROLFILEFORSTANDBY;
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 知名企業(yè)面試題目及答案
- 虛擬現(xiàn)實(shí)技術(shù)應(yīng)用流程精要
- 兒童發(fā)展與教育心理學(xué)
- 軌行區(qū)作業(yè)制度
- 責(zé)任倒查制度
- 請(qǐng)示報(bào)告重大事項(xiàng)制度
- 2025年南大校聘的筆試題及答案
- 2025年南京音樂(lè)教師筆試真題及答案
- 2025年國(guó)考教資筆試和面試及答案
- 2025年山西省臨汾事業(yè)單位考試及答案
- 感控PDCA持續(xù)質(zhì)量改進(jìn)
- 混凝土行業(yè)供應(yīng)鏈分析報(bào)告
- 2025年云服務(wù)器采購(gòu)合同協(xié)議
- 2025滬科版(五四制)八年級(jí)化學(xué)主題一化學(xué)的魅力知識(shí)清單
- 補(bǔ)氣血培訓(xùn)課件
- 基層高血壓管理流程
- 測(cè)試工程師年終總結(jié)
- 市域社會(huì)治理現(xiàn)代化
- 2025年江蘇電子信息單招試題及答案
- 新解讀《JB-T 3162-2011滾珠絲杠副 絲杠軸端型式尺寸》
- 項(xiàng)目檔案驗(yàn)收匯報(bào)
評(píng)論
0/150
提交評(píng)論