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

下載本文檔

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

文檔簡介

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(默認為TRUE,表示開啟了延遲段創(chuàng)建),那么這個時候上面的SQL語句不會創(chuàng)建任何段。

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

下面給出示例:

3.

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

4.

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

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

5.

如何查詢表的歷史統(tǒng)計信息正確答案:從Oracle10g開始,當收集表的統(tǒng)計信息的時候,舊的統(tǒng)計數(shù)據(jù)被保留,如果因為新的統(tǒng)計信息而出現(xiàn)性能問題,舊的統(tǒng)計信息就可以被恢復。歷史統(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ù),所以需要結合基表來查詢,查詢的SQL語句如下:

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

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

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

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

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

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

6.

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

7.

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

8.

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

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

設置該事件后重啟數(shù)據(jù)庫即可。關于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語句,永遠無法得到“第二類”這個結果。

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

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

1)以CASE開頭,以END結尾。

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

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

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

(2)DECODE函數(shù)

DECODE的語法如下:

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

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

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

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

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

11.

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

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

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

12.

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

errorstack主要有4個級別:

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

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

3)2Level1+ProcessState。

4)3Level2+Contextarea(顯示所有游標,著重顯示當前游標)。

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

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

13.

RFS、LNSn、MRP、LSP進程的作用分別是什么?正確答案:這幾個進程是DG結構中日志傳輸、接受和應用的關鍵性進程,下面分別介紹這幾個進程。

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

主庫:

備庫:

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

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

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

一般情況下,主庫切換(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查詢的結果不盡相同,具體參考下表。

DG傳輸進程及其模式的關系

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

(4)LSP(logicalstandbyprocess)進程只有邏輯備庫才會有該進程。LSP進程應用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ù)值默認為TRUE,表示密碼區(qū)分大小寫。但是,在Oracle12c中,由于該參數(shù)已經(jīng)廢棄,所以,不建議修改該參數(shù)值。如果將該參數(shù)值設置成FALSE,那么啟動的時候會有提示:ORA-32004:obsoleteordeprecatedpararneter(s)specifiedforRDBMSinstance。但是,設置成FALSE仍然生效,即忽略密碼大小寫驗證。

17.

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

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

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

例如,結果如下:

那么,在這里就應該著重解決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稍微有點復雜,首先創(chuàng)建SERVICE,再創(chuàng)建JOB_CLASS,最后創(chuàng)建JOB才可以。

19.

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

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

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

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

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

20.

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

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

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

1)最小的I/O單元。

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

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

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

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

Oracle塊結構圖

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

溫馨提示

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

評論

0/150

提交評論