Oracle程序員面試分類模擬35_第1頁
Oracle程序員面試分類模擬35_第2頁
Oracle程序員面試分類模擬35_第3頁
Oracle程序員面試分類模擬35_第4頁
Oracle程序員面試分類模擬35_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

Oracle程序員面試分類模擬35簡答題1.

怎么捕獲表上的DML語句?正確答案:可以采用DML觸發(fā)器進行捕獲。

2.

下列SQL語句共創(chuàng)建了多少個段?

INCLUDEPICTUR(江南博哥)E\d":8089/YFB12/tu/1907/j/cm/oraf11.4A8034.jpg"INET正確答案:創(chuàng)建了0個或4個段。

如果數(shù)據(jù)庫環(huán)境是Oracle11g,且參數(shù)DEFERRED_SEGMENT_CREATION的值為TRUE(默認(rèn)為TRUE,表示開啟了延遲段創(chuàng)建),那么這個時候上面的SQL語句不會創(chuàng)建任何段。

如果數(shù)據(jù)庫環(huán)境是Oracle10g或者數(shù)據(jù)庫環(huán)境是Oracle11g且數(shù)據(jù)庫參數(shù)DEFERRED_SEGMENT_CREATION設(shè)置為FALSE,那么題目中的SQL語句將會創(chuàng)建4個段,分別為1個TABLE類型的段,1個索引段(有主鍵),一個LOB段(字段里包含CLOB類型),一個LOB索引段(CLOB類型的字段會自動創(chuàng)建其對應(yīng)的索引段)。

下面給出示例:

3.

哪個列可以用來區(qū)別V$視圖和GV$視圖?正確答案:GV$視圖中的INST_ID列指明集群環(huán)境中具體的某個實例(INSTANCE)。

4.

簡述索引的特性及其應(yīng)用正確答案:一般來說索引有3大特性,索引高度比較低、索引存儲列值及索引本身有序,對這3大特性的應(yīng)用見表。

另外,需要特別注意的是,索引不存儲空值。

5.

如何查詢表的歷史統(tǒng)計信息正確答案:從Oracle10g開始,當(dāng)收集表的統(tǒng)計信息的時候,舊的統(tǒng)計數(shù)據(jù)被保留,如果因為新的統(tǒng)計信息而出現(xiàn)性能問題,舊的統(tǒng)計信息就可以被恢復(fù)。歷史統(tǒng)計信息保存在以下幾張表中:

1)WRI$_OPTSTAT_TAB_HISTORY表的統(tǒng)計信息。

2)WRI$_OPTSTAT_IND_HISTORY索引的統(tǒng)計信息。

3)WRI$_OPTSTAT_HISTHEAD_HISTORY列的統(tǒng)計信息。

4)WRI$_OPTSTAT_HISTGRM_HISTORY直方圖的信息。

從視圖DBA_TAB_STATS_HISTORY可以查詢歷史收集統(tǒng)計信息的時間,但是不能查詢到行數(shù),所以需要結(jié)合基表來查詢,查詢的SQL語句如下:

查詢索引的歷史統(tǒng)計信息的SQL語句如下:

默認(rèn)情況下統(tǒng)計信息將被保留31天,可以使用下面的命令修改:

注意:這些統(tǒng)計信息在SYSAUX表空間中占有額外的存儲開銷,所以應(yīng)該注意并防止統(tǒng)計信息將表空間填滿。

下面的查詢返回統(tǒng)計信息已經(jīng)被刪除到的日期(所以只有在這日期之后的統(tǒng)計信息才可能被恢復(fù))。任何恢復(fù)到比這日期更早的統(tǒng)計信息的請求都會失敗:“ORA-20006:Unabletorestorestatistics,statisticshistorynotavailable”:

查詢到可以恢復(fù)統(tǒng)計信息到某一個比較好的時間之后,可以執(zhí)行下面的命令進行恢復(fù):

可以通過如下的命令返回2次統(tǒng)計信息的比較結(jié)果:

6.

如何隨機抽取表SCOTT.EMP的前5條記錄?正確答案:使用SYS_GUID或DBMS_RANDOM.VALUE函數(shù),如下:

7.

如何查看存儲過程的編譯錯誤?正確答案:在存儲過程編譯完成后使用SHOWERROR命令即可查看。

8.

密碼延遲驗證是什么?如何屏蔽?正確答案:從Oracle11g開始,如果一個用戶使用不正確的密碼嘗試登錄數(shù)據(jù)庫,那么隨著登錄失敗次數(shù)的增加,每次登錄驗證前延遲等待的時間也會增加。

通過設(shè)置EVENTS28401可以屏蔽密碼延遲驗證:

設(shè)置該事件后重啟數(shù)據(jù)庫即可。關(guān)于28401事件的解釋如下:

9.

如何生成日期格式的文件?正確答案:在Linux/Unix上,使用“'date+%y%m%d'或$(date+%y%m%d)”,如:

或者:

在WindoWS上,使用%date:~4,10%,其中4是開始字符,10是提取長度,表示從date生成的日期中,提取從4開始長度是10的串。如果想得到更精確的時間,那么在Windows上面還可以使用time。

10.

條件表達式CASE和DECODE的區(qū)別是什么?正確答案:在SQL語句中使用IF-THEN-ELSE邏輯,可以使用兩種方法:CASE表達式、DECODE函數(shù)。

(1)CASE表達式

SQL中CASE的使用方法具有兩種格式:簡單CASE函數(shù)和CASE搜索函數(shù)。

簡單CASE函數(shù)使用方式如下:

CASE搜索函數(shù)使用方式如下:

以上兩種方式可以實現(xiàn)相同的功能。簡單CASE函數(shù)的寫法相對比較簡潔,但是和CASE搜索函數(shù)相比,功能方面會有些限制,例如編寫判斷式,下面的例子無法使用簡單CASE函數(shù)來實現(xiàn):

需要注意的是,CASE函數(shù)只返回第一個符合條件的值,剩下的CASE部分將會被自動忽略。例如下面的SQL語句,永遠無法得到“第二類”這個結(jié)果。

CASE表達式可以在SQL中實現(xiàn)IF-THEN-ELSE型的邏輯,而不必使用PL/SQL。CASE的工作方式與DECODE類似,但推薦使用CASE,因為它與ANSI兼容。

對于CASE表達式,需要注意以下幾點:

1)以CASE開頭,以END結(jié)尾。

2)分支中WHEN后跟條件,THEN為顯示結(jié)果。

3)ELSE為除此之外的默認(rèn)情況,類似于高級語言程序中SWITCHCASE的DEFAULT,可以不加。

4)ENDAS后跟別名,也可以去掉AS。

(2)DECODE函數(shù)

DECODE的語法如下:

DECODE(VALUE,IF1,THEN1,IF2,THEN2,IF3,THEN3,...,ELSE),表示如果VALUE等于IF1,那么DECODE函數(shù)的結(jié)果返回THEN1,...,如果不等于任何一個IF值,那么返回空。

在使用DECODE函數(shù)時,需要注意以下幾點:

1)Oracle在調(diào)用DECODE函數(shù)的時候,需要預(yù)先確定列的類型。

2)確定DECODE返回值類型,是依據(jù)參數(shù)中第一個條件返回類型,之后所有的返回類型都依據(jù)第一個類型進行強制類型轉(zhuǎn)換。

3)當(dāng)Oracle在第一個條件返回類型為NULL的時候,默認(rèn)將其作為字符串處理。

11.

如何抽取重復(fù)記錄?正確答案:使用ROWID來查詢,如下例找出ID重復(fù)的記錄:

或者,下例找出COL_A和COL_B列重復(fù)的記錄:

如果想刪除重復(fù)記錄,可以把第一個語句的SELECT替換為DELETE。

12.

errorstack的作用是什么?正確答案:在使用Oracle數(shù)據(jù)庫的過程中,可能會遇到各種各樣的錯誤或異常,而且這些錯誤或異常的提示并不具體,那么這個時候就可以使用Oracle提供的一種對于錯誤堆棧進行跟蹤的方法即errorstack。通過設(shè)置跟蹤可以將一些錯誤的后臺信息詳盡地轉(zhuǎn)儲出來,寫入跟蹤文件,對于錯誤的研究與診斷非常有效。

errorstack主要有4個級別:

1)0僅轉(zhuǎn)儲錯誤堆棧(0級已經(jīng)被逐漸廢棄)。

2)1轉(zhuǎn)儲錯誤堆棧和函數(shù)調(diào)用堆棧。

3)2Level1+ProcessState。

4)3Level2+Contextarea(顯示所有游標(biāo),著重顯示當(dāng)前游標(biāo))。

errorstack可以在實例級或會話級別設(shè)置,也可以在參數(shù)文件中設(shè)置,這個設(shè)置僅當(dāng)某個特定的錯誤出現(xiàn)時才被觸發(fā),如設(shè)置ORA-01438事件的跟蹤:

接下來在告警日志中找到相關(guān)的跟蹤文件,對該文件進行分析即可。

13.

RFS、LNSn、MRP、LSP進程的作用分別是什么?正確答案:這幾個進程是DG結(jié)構(gòu)中日志傳輸、接受和應(yīng)用的關(guān)鍵性進程,下面分別介紹這幾個進程。

(1)RFS進程RFS(RemoteFileServer)進程主要用來接受從主庫傳送過來的日志信息。對于物理備庫而言,RFS進程可以直接將日志寫進StandbyRedologs,也可以直接將日志信息寫到歸檔日志中。一般可以在主備庫的告警日志中看到如下的信息:

主庫:

備庫:

在數(shù)據(jù)庫中查詢:

對于Oracle11g而言,該進程一般會自動啟動,但是,對于Oracle10g而言,由于某些特殊原因,該進程可能不會自動啟動,那么可以使用如下的步驟來手動啟動該進程:

(2)LNSn(LGWRNetworkServerprocess)進程DG可以使用ARCn、LGWR來傳送日志,但它們都是把日志發(fā)送給本地的LNSn(如果有多個目標(biāo)備庫,那么會啟動相應(yīng)數(shù)量的LNSn進程,同時發(fā)送數(shù)據(jù))進程,然后備庫的RFS進程接收數(shù)據(jù),接收到的數(shù)據(jù)可以存儲在備庫的備用Redo日志文件中或備庫的歸檔日志中,然后再應(yīng)用到備庫中。

一般情況下,主庫切換(ALTERSYSTEMSWITCHLOGFILE;)日志可以啟動LNSn進程,若不能正常啟動則可以按照如下的步驟來處理:

進程查詢(ps-ef|grep-vgrep|grep-E"ora_lns|ora_nsa|ora_nss"):

需要注意的是,若在Oracle10g中采用LGWR傳輸日志的時候,則進程表現(xiàn)為LNSn,但在Oracle11g中,若采用LGWRASYNC(異步方式)來傳輸日志的時候,則進程表現(xiàn)為nsa,若采用LGWRSYNC(同步方式)來傳輸日志的時候,則進程表現(xiàn)為nss,且通過視圖GV$MANAGED_STANDBY查詢的結(jié)果不盡相同,具體參考下表。

DG傳輸進程及其模式的關(guān)系

(3)MRP(ManagedRecoveryProcess)進程該進程只針對物理備庫,作用為應(yīng)用從主庫傳遞過來的Redo日志到物理備庫,稱為RedoApply。如果使用SQL語句“ALTERDATABASERECOVERMANAGEDSTANDBYDATABASE”啟用該進程,那么前臺進程將會做恢復(fù)。如果加上DISCONNECT語句,那么恢復(fù)過程將在后臺進程,發(fā)出該語句的進程可以繼續(xù)做其他的事情,進程如下:

(4)LSP(logicalstandbyprocess)進程只有邏輯備庫才會有該進程。LSP進程應(yīng)用Redo日志到邏輯備庫,進程如下:

14.

怎么快速獲得用戶下每個表或表分區(qū)的記錄數(shù)?正確答案:可以分析該用戶,然后查詢USER_TABLES字典,或者采用腳本實現(xiàn)。

15.

DELETE、DROP和TRUNCATE的區(qū)別是什么?正確答案:DELETE、DROP和TRUNCATE的區(qū)別見表。

16.

哪個參數(shù)控制密碼的大小寫敏感性?正確答案:在Oracle11g之前,Oracle用戶密碼是不區(qū)分大小寫的。從Oracle11g開始,密碼區(qū)分大小寫,采用參數(shù)SEC_CASE_SENSITIVE_LOGON控制,該參數(shù)值默認(rèn)為TRUE,表示密碼區(qū)分大小寫。但是,在Oracle12c中,由于該參數(shù)已經(jīng)廢棄,所以,不建議修改該參數(shù)值。如果將該參數(shù)值設(shè)置成FALSE,那么啟動的時候會有提示:ORA-32004:obsoleteordeprecatedpararneter(s)specifiedforRDBMSinstance。但是,設(shè)置成FALSE仍然生效,即忽略密碼大小寫驗證。

17.

數(shù)據(jù)庫運行很慢,如何解決?正確答案:導(dǎo)致數(shù)據(jù)庫運行很慢的原因非常多,例如可能是開發(fā)人員SQL語句寫的不好導(dǎo)致執(zhí)行性能比較差。所以,碰到這類問題,不能給出一個非常精確的答案,但是可以按照如下的步驟去檢測排除:

1)top或topas查看系統(tǒng)的CPU利用率是否正常,找到最耗費資源的Oracle進程,然后進入數(shù)據(jù)庫查詢相關(guān)的會話,找到SQL語句再進行具體分析。如果CPU正常,那么就很可能是由于開發(fā)人員寫的SQL語句不好,導(dǎo)致SQL執(zhí)行時間過長,因此,開發(fā)人員誤認(rèn)為是數(shù)據(jù)庫運行緩慢。

2)進入數(shù)據(jù)庫查看等待事件是否正常,SQL語句如下:

例如,結(jié)果如下:

那么,在這里就應(yīng)該著重解決logfilesync這個等待事件。

18.

RAC中如何指定JOB的運行實例?正確答案:在RAC中,可以讓JOB在某個指定的實例上運行。對于DBMS_JOB和DBMS_SCHEDULER來說,它們的指定方法不同:

1)在DBMS_JOB下,執(zhí)行SYS.DBMS_JOB.SUBMIT包創(chuàng)建JOB的時候,可以指定INSTANCE參數(shù),該參數(shù)指定了JOB運行的實例。

2)DBMS_SCHEDULER下指定實例運行JOB稍微有點復(fù)雜,首先創(chuàng)建SERVICE,再創(chuàng)建JOB_CLASS,最后創(chuàng)建JOB才可以。

19.

Ping命令是什么?正確答案:Ping(PacketInternetGrope,因特網(wǎng)包探索器)是一個用于測試網(wǎng)絡(luò)連接量的程序。它使用的是ICMP,Ping發(fā)送一個ICMP(InternetControlandMessageProtocal,因特網(wǎng)控制報文協(xié)議)請求消息給目的地并報告是否收到所希望的ICMP應(yīng)答。

ICMP是TCP/IP協(xié)議簇的一個子協(xié)議,用于在IP主機、路由器之間傳遞控制消息。它是用來檢查網(wǎng)絡(luò)是否通暢或者網(wǎng)絡(luò)連接速度的命令。

由于網(wǎng)絡(luò)上的機器都有唯一確定的IP地址,當(dāng)給目標(biāo)IP地址發(fā)送一個數(shù)據(jù)包(包括對方的IP地址和自己的地址以及序列數(shù))時,對方就要返回一個同樣大小的數(shù)據(jù)包(包括雙方地址),根據(jù)返回的數(shù)據(jù)包可以確定目標(biāo)主機的存在,可以初步判斷目標(biāo)主機的操作系統(tǒng)等。

例如,當(dāng)執(zhí)行命令“”,通常是通過DNS服務(wù)器,如果這里出現(xiàn)故障,則表示DNS服務(wù)器的IP地址配置不正確或DNS服務(wù)器有故障。也可以利用該命令實現(xiàn)域名對IP地址的轉(zhuǎn)換功能。例如,Ping某一網(wǎng)絡(luò)地址,出現(xiàn):“Replyfrom09:bytes=32time=31msTTL=48”則表示本地與該網(wǎng)絡(luò)地址之間的線路是暢通的;如果出現(xiàn)“Requesttimedout”,則表示此時發(fā)送的小數(shù)據(jù)包不能到達目的地,此種情況可能有兩種原因?qū)е?,第一種是網(wǎng)絡(luò)不通,第二種是網(wǎng)絡(luò)連通狀況不佳。此時可以使用帶參數(shù)的Ping來確定是哪一種情況。例如,ping-t-w3000不斷地向目的主機發(fā)送數(shù)據(jù),并且響應(yīng)時間增大到3000ms,此時如果都是顯示“Requesttimedout”,則表示網(wǎng)絡(luò)之間確實不通;如果不是全部顯示“Requesttimedout”則表示此網(wǎng)站還是通的,只是響應(yīng)時間長或通信狀況不佳。

由于Ping使用的是ICMP,有些防火墻軟件會屏蔽掉ICMP,所以有時候Ping的結(jié)果只能作為參考,Ping不通并不能就一定說明對方IP不存在。但一般而言,在通過Ping進行網(wǎng)絡(luò)故障判斷時,如果Ping運行正確,大體上就可以排除網(wǎng)絡(luò)訪問層、網(wǎng)卡、Modem的輸入輸出線路、電纜和路由器等存在的故障,從而減小了問題的范圍。

20.

簡述Oracle數(shù)據(jù)庫塊的結(jié)構(gòu)?正確答案:操作系統(tǒng)塊是操作系統(tǒng)讀寫的最小操作單元,也是操作系統(tǒng)文件的屬性之一。當(dāng)創(chuàng)建一個Oracle數(shù)據(jù)庫時,選擇一個基于操作系統(tǒng)塊的整數(shù)倍大小作為Oracle數(shù)據(jù)庫塊的大小。Oracle數(shù)據(jù)庫讀寫操作則是以O(shè)racle塊為最小單位,而非操作系統(tǒng)塊。

數(shù)據(jù)庫塊也稱邏輯塊或Oracle塊,它對應(yīng)磁盤上一個或多個物理塊,它的大小由初始化參數(shù)DB_BLOCK_SIZE決定,可以定義數(shù)據(jù)塊為2K、4K、8K、16K、32K甚至更大,默認(rèn)Oracle塊大小是8K。若一旦設(shè)置了Oracle數(shù)據(jù)塊的大小,則在整個數(shù)據(jù)庫生命期間不能被更改。使用一個合適的Oracle塊大小對于數(shù)據(jù)庫的調(diào)優(yōu)是非常重要的。

OS在每次執(zhí)行I/O的時候是以O(shè)S的塊為單位:Oracle在每次執(zhí)行I/O的時候是以O(shè)racle塊為單位。Oracle塊具有以下特點:

1)最小的I/O單元。

2)包含一個或多個OS塊。

3)大小由參數(shù)DB_BLOCK_SIZE決定。

4)數(shù)據(jù)庫創(chuàng)建時設(shè)置,數(shù)據(jù)庫創(chuàng)建后不能更改。

在Oracle中,不論數(shù)據(jù)塊中存儲的是表(TABLE)、索引(INDEX)或簇表(CLUSTERTABLE),其內(nèi)部結(jié)構(gòu)都是類似的。Oracle塊結(jié)構(gòu)如圖所示。

Oracle塊結(jié)構(gòu)圖

由上圖可以看出,一個Oracle塊大約由數(shù)據(jù)塊頭(包括標(biāo)準(zhǔn)內(nèi)容和可變內(nèi)容,CommonAndVariableHeader)、表目錄(TableDirectory)、行目錄(RowDirectory)、可用空間(FreeSpace)和行數(shù)據(jù)(R

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論