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

付費下載

下載本文檔

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

文檔簡介

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

如何判斷—個存儲過程是否正在運行?正確答案:有兩種方式可以判斷一個存儲過程是否正在運行,其查詢SQL語句分別如下,若有結(jié)果返回,則說明存儲過程正在運行。(江南博哥)

方法1:

方法2:

2.

如何將文本文件或Excel中的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫?正確答案:有多種方式可以將文本文件的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中,例如,利用PLSQLDeveloper軟件進行復(fù)制粘貼,利用外部表,利用SQL*Loader等方式。至于Excel中的數(shù)據(jù)可以另存為csv文件(csv文件其實是逗號分隔的文本文件),然后導(dǎo)入到數(shù)據(jù)庫中。

下面簡單介紹一下SQL*Loader的使用方式。

SQL*Loader是一個Oracle工具,能夠?qū)?shù)據(jù)從外部數(shù)據(jù)文件裝載到數(shù)據(jù)庫中。SQL*Loader必須包含一個控制文件,該控制文件是SQL*Loader的中樞核心,控制文件能夠控制外部數(shù)據(jù)文件中的數(shù)據(jù)如何映射到Oracle的表和列。通常與SPOOL導(dǎo)出文本數(shù)據(jù)方法配合使用。SQL*Loader能夠接收多種不同格式的數(shù)據(jù)文件。文件可以存儲在磁盤或磁帶上,或記錄本身可以被嵌套到控制文件中。記錄格式可以是定長的或變長的,定長記錄是指這樣的記錄:每條記錄具有相同的固定長度,并且每條記錄中的數(shù)據(jù)域也具有相同的固定長度、數(shù)據(jù)類型和位置。

SQL*Loader的數(shù)據(jù)導(dǎo)入比較專業(yè),有各種參數(shù)及選項可供選擇,經(jīng)常是作為數(shù)據(jù)倉庫中大型數(shù)據(jù)的導(dǎo)入方法選擇。

SQL*Loader的優(yōu)點:

1)可將導(dǎo)入命令寫入BAT文件直接批量處理。

2)導(dǎo)入處理比較專業(yè),提供各種參數(shù)選擇。

3)無需操作Oracle所在服務(wù)器。

SQL*Loader也有缺點,例如,Excel文件需要另存為txt或csv格式才能導(dǎo)入到數(shù)據(jù)庫中。

總的來說這種方法是最值得采用的,可以自動建立操作系統(tǒng)的批處理文件執(zhí)行SQL*Loader命令,將數(shù)據(jù)導(dǎo)入原始接收表,并在數(shù)據(jù)庫中設(shè)置觸發(fā)器進行精細操作。

SQL*Loader有兩種使用方法:

1)只使用一個控制文件,在這個控制文件中包含數(shù)據(jù)。

2)使用一個控制文件和一個數(shù)據(jù)文件。

SQL*Loader工具使用的命令為sqlldr,其常用參數(shù)的含義見表1。

下面給出SQL*Loader控制文件的一個示例:

其中,CHARACTERSET指定文件的編碼格式,infile指定導(dǎo)入的文件。

接下來就是執(zhí)行導(dǎo)入命令了,如下:

當(dāng)要加載的數(shù)據(jù)文件比較大的時候該如何提高SQL*Loader的性能呢?可以從以下幾個方面考慮:

1)ROWS的默認值為64,可以根據(jù)需要指定更合適的ROWS參數(shù)來指定每次提交記錄數(shù)。

2)米用DIRECT=TRUE導(dǎo)入可以跳過數(shù)據(jù)庫的相關(guān)邏輯,直接將數(shù)據(jù)導(dǎo)入到數(shù)據(jù)文件中,可以提高導(dǎo)入數(shù)據(jù)的性能。

3)通過指定UNRECOVERABLE選項,可以寫少量的日志,從而提高數(shù)據(jù)加載的性能。不過,推薦在加載完成后立即對數(shù)據(jù)庫或至少對表空間備份。

當(dāng)加載大量數(shù)據(jù)時,最好抑制日志的產(chǎn)生:

將表修改為NOLOGGING,可以只產(chǎn)生少量的Redo日志,從而提高導(dǎo)入效率。在CONTROL文件中的loaddata前邊加一行:UNRECOVERABLE,此選項必須要與DIRECT共同使用。對于超大數(shù)據(jù)文件的導(dǎo)入就要用并發(fā)操作了,即同時運行多個導(dǎo)入任務(wù):

表2給出在使用SQL*Loader的過程中,一些常用的需求實現(xiàn)方法。

表3給出了在使用SQL*Loader的過程中,常遇到的錯誤及其解決方法。

關(guān)于SQL*Loader還有很多參數(shù)本書不再詳述,具體可以參考官方文檔。有關(guān)如何導(dǎo)出數(shù)據(jù)到Excel中,本書也不再詳述。

3.

什么是Quote(q)語法?正確答案:在SQL查詢中,會經(jīng)常需要原樣輸出字符串,如果字符串中含有大量的單引號、雙引號或者特殊字符,那么需要用單引號轉(zhuǎn)義拼接字符串,這樣會非常的麻煩。所以,Oracle提供了一個Q-quote的表達式來原樣輸出字符串。

需要注意以下幾點:

1)Q-quote定界符可以是除了TAB、空格、回車外的任何單字節(jié)或多字節(jié)字符,包括數(shù)字、字母、特殊字符。但'&'不能作為分隔符,因為'&'意思是傳入?yún)?shù)。

2)Q'后跟起始分隔符,起始分隔符后的字符串原樣輸出,起始分隔符必須有配對的結(jié)束分隔符。'['、'('、'{'作為分隔符,必須以']'、')'、'}'結(jié)束。

4.

怎么捕獲用戶登錄信息,如SID,IP地址等?正確答案:可以利用登錄觸發(fā)器來實現(xiàn)。

5.

怎么捕獲整個數(shù)據(jù)庫的DDL語句或者是說捕獲對象結(jié)構(gòu)變化與修改?正確答案:可以采用DDL觸發(fā)器進行捕獲。

6.

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

7.

如何實現(xiàn)分組取前3條記錄?正確答案:可以利用分析函數(shù),如獲取每個部門薪水前三名的員工或每個班成績前三名的學(xué)生,如下:

8.

如何把相鄰記錄合并到一條記錄?正確答案:可以利用分析函數(shù)LAG與LEAD,它們可以提取后一條或前一天記錄到本記錄,如下:

9.

怎么設(shè)置存儲過程的調(diào)用者權(quán)限?正確答案:普通存儲過程都是定義者權(quán)限,如果想設(shè)置調(diào)用者權(quán)限,那么需要聲明“AUTHIDCURRENT_USER”,參考如下語句:

10.

Oracle中有哪些常用的字符函數(shù)?正確答案:常用的有如下幾個函數(shù):

1)lower(char):將字符串全部轉(zhuǎn)化為小寫的格式。

2)upper(char):將字符串全部轉(zhuǎn)化為大寫的格式。

3)initcap('SQLcourse'):每個單詞的首字母大寫,其余變?yōu)樾懀Y(jié)果:SqlCourse。

4)concat('Hello','World'):字符串連接,結(jié)果:HelloWorld。

5)length(char):返回字符串的長度。

6)substr(char,m,n):取字符串的子串,m表示起點,n代表取n個字符的意思。

7)replace(char1,search_string,replace_string):替換函數(shù)。

8)instr(char1,char2,[,n[,m]]):取子串在字符串的位置,特別取某一個特殊字符在原字符串中的位置。

9)trim('

Hello

World

'):前后去掉空格,結(jié)果為:“Hello

world”。

10)ltrim('

Hello

World

'):左邊去掉空格,結(jié)果為:“Hello

World

”。

11)rtrim('

Hello

World

'):右邊去掉空格,結(jié)果為:“Hello

World”。

12)lpad(salary,10,'*'):左補齊,結(jié)果:*****24000。

13)rpad(salary,10,'*'):右補齊,結(jié)果:24000*****。

14)chr():將ASCII碼轉(zhuǎn)換為字符。

15)ascii():將字符轉(zhuǎn)換為ASCII碼。

11.

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

12.

如果查詢的列中含有特殊字符,如通配符“%”與“_”,那么該如何查詢這些特殊字符?正確答案:利用ESCAPE來查詢,如下:

13.

如何插入單引號到數(shù)據(jù)庫表中?正確答案:可以用ASCII碼處理,其他特殊字符如&也一樣,如下:

或者用兩個單引號表示一個:

14.

十進制與十六進制如何轉(zhuǎn)換?正確答案:十進制轉(zhuǎn)換為十六進制用TO_CHAR:

十六進制轉(zhuǎn)換為十進制用TO_NUMBER:

15.

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

16.

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

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

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

17.

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

18.

SYS_

溫馨提示

  • 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

提交評論