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

下載本文檔

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

文檔簡介

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

Oracle中哪個包用于生成隨機值?正確答案:DBMS_RANDOM是一個可以生成隨機數(shù)值或者隨機字符串的程序包。這個包有INITIALIZE()、S(江南博哥)EED()、TERMINATE()、VALUE()、NORMAL()、RANDOM()、STRING()等幾個函數(shù),它們提供了內(nèi)置的隨機數(shù)生成器,可以用于快速生成隨機數(shù),下面只介紹VALUE()和STRING()函數(shù),其他函數(shù)的使用方法參考官方文檔。

(1)DBMS_RANDOM.VALUE方法VALUE()是最常用的方法,它的用法一般沒有參數(shù),會返回一個具有38位精度的數(shù)值,范圍從0.0到1.0,但不包括1.0。

(2)DBMS_RANDOM.STRING方法

DBMS_RANDOM.STRING可以用來生成隨機字符串,如下:

除此之外,還有DBMS_RANDOM.RANDOM返回的值介于2的31次方和-2的31次方之間的整數(shù)值,還有其他一些不常用的函數(shù),這里就不介紹了。

2.

ORA_ROWSCN函數(shù)的作用是什么?正確答案:對于每一行數(shù)據(jù),ORA_ROWSCN返回每一行最近被修改的大概時間,可用于查詢表最后一次被執(zhí)行DML操作的時間。由于Oracle通過事務(wù)提交對行所在數(shù)據(jù)塊來進行SCN(SystemChangeNumber,系統(tǒng)改變號,一個由系統(tǒng)內(nèi)部維護的序列號,當(dāng)系統(tǒng)需要更新的時候自動增加,它是系統(tǒng)中維持?jǐn)?shù)據(jù)的一致性和順序恢復(fù)的重要標(biāo)志)的跟蹤,所以,它不精確。可以通過在創(chuàng)建表時使用行級別的依賴跟蹤來獲得一個更加精確的SCN。

在對視圖進行查詢時,不能使用ORA_ROWSCN函數(shù),但對于視圖的基表是可以使用ORA_ROWSCN函數(shù)的,也能在UPDATE或DELETE語句的WHERE子句中使用ORA_ROWSCN函數(shù)。ORA_ROWSCN雖然不能用于閃回查詢,但是可以用閃回版本查詢來代替ORA_ROWSCN。ORA_ROWSCN也不能用于外部表。ORA_ROWSCN函數(shù)的使用示例如下:

3.

什么是臨時表?它有哪些分類?正確答案:在創(chuàng)建數(shù)據(jù)表的時候,如果沒有特殊地指明,那么創(chuàng)建的表是一個永久的關(guān)系型表,也就是說,這個表中對應(yīng)的數(shù)據(jù),除非是顯式地刪除,否則表中的數(shù)據(jù)是永遠(yuǎn)都存在的。相對應(yīng)的,在Oracle數(shù)據(jù)庫中,還有一種類型的表,稱為臨時表。這個臨時表和永久表最大的區(qū)別就是表中的數(shù)據(jù)不會永遠(yuǎn)地存在。當(dāng)一個會話結(jié)束或者事務(wù)結(jié)束的時候,這個臨時表中的數(shù)據(jù),不用用戶自己刪除,數(shù)據(jù)庫自己會自動清除。

Oracle的臨時表創(chuàng)建之后基本不占用表空間,如果沒有指定臨時表(包括臨時表的索引)存放的表空間,那么插入到臨時表的數(shù)據(jù)是存放在Oracle系統(tǒng)的默認(rèn)臨時表空間中(TEMP),一個系統(tǒng)可能有多個臨時表空間。臨時表的數(shù)據(jù)只能存放在臨時表空間中。

臨時表的數(shù)據(jù)只是在事務(wù)期間存在,對于會話類型的臨時表,數(shù)據(jù)在會話期間存在,會話的數(shù)據(jù)對于當(dāng)前會話私有,每個會話只能看到并修改自己的數(shù)據(jù)。DML鎖不會加到臨時表的數(shù)據(jù)上??梢詫εR時表創(chuàng)建索引、視圖、觸發(fā)器,可以用exp和imp工具導(dǎo)入導(dǎo)出表的定義,但是不能導(dǎo)出數(shù)據(jù)。

(1)臨時表的特點

1)多用戶操作的獨立性:對于使用同一張臨時表的不同用戶,Oracle都會分配一個獨立的TEMPSEGMENT,這樣就避免了多個用戶在對同一張臨時表操作時發(fā)生交叉,從而保證了多個用戶操作的并發(fā)性和獨立性。

2)數(shù)據(jù)的臨時性:既然是臨時表,顧名思義,存放在該表中的數(shù)據(jù)是臨時性的。Oracle根據(jù)創(chuàng)建臨時表時指定的參數(shù)(ONCOMMITDELETEROWS/ONCOMMITPRESERVEROWS),自動將數(shù)據(jù)TRUNCATE掉。

(2)臨時表的分類

Oracle數(shù)據(jù)庫根據(jù)I臨時表的性質(zhì)不同,可以分為事務(wù)臨時表(ONCOMMITDELETEROWS)與會話臨時表(ONCOMMITPRESERVEROWS)。

1)事務(wù)臨時表。事務(wù)臨時表是指數(shù)據(jù)只有在當(dāng)前事務(wù)內(nèi)有效,該臨時表與事務(wù)相關(guān),當(dāng)進行事務(wù)提交或者事務(wù)回滾的時候,臨時表中的數(shù)據(jù)將自動被清空,其他的內(nèi)容和會話級的臨時表一致(包括退出SESSION的時候,事務(wù)級的臨時表的數(shù)據(jù)也會被清空)。一般情況下,如果在創(chuàng)建數(shù)據(jù)表的時候,沒有特殊指明表是會話臨時表的話,那么該表默認(rèn)為事務(wù)臨時表。所以,事務(wù)臨時表中的數(shù)據(jù)就被清空的情況包括:①提交事務(wù)(COMMIT);②回滾事務(wù)(ROLLBACK);③退出SESSION。

創(chuàng)建事務(wù)臨時表的語法如下:

2)會話臨時表。會話臨時表,顧名思義,是指數(shù)據(jù)只在當(dāng)前會話內(nèi)是有效的臨時表。關(guān)閉當(dāng)前會話或者進行新的連接之后,數(shù)據(jù)表中的內(nèi)容就會被清除。

查看一張表是否臨時表,可以從DBA_TABLES視圖的DURATION列來查詢:

會話臨時表與事務(wù)臨時表主要的差異就在于刪除數(shù)據(jù)的時機不同。事務(wù)臨時表是在事務(wù)提交或回滾的時候清除數(shù)據(jù),而會話臨時表則是在關(guān)閉當(dāng)前會話的時候清除數(shù)據(jù)。只要當(dāng)前會話沒有關(guān)閉,即使事務(wù)完成了,會話臨時表中的數(shù)據(jù)仍然存在,不會被清除。

(3)臨時表的統(tǒng)計信息

臨時表默認(rèn)是不收集統(tǒng)計信息的,但是可以使用DBMS_STATS.GATHER_SCHEMA_STATS在SCHEMA級別收集,需要設(shè)置GATHER_TEMP為TRUE(默認(rèn)為FALSE);也可以和普通表一樣使用GATHER_TABLE_STATS在表級別來收集。需要注意的是,只能收集會話臨時表的統(tǒng)計信息,不能收集事務(wù)臨時表的統(tǒng)計信息。會話臨時表的統(tǒng)計信息是被所有的會話所共享的,所以,在一般情況下,不建議收集臨時表的統(tǒng)計信息,否則可能會導(dǎo)致很嚴(yán)重的數(shù)據(jù)庫性能問題。臨時表的統(tǒng)計信息在生成執(zhí)行計劃時一般是被動態(tài)采樣的。

4.

什么是外部表?正確答案:外部表是指不存在于數(shù)據(jù)庫中的表。通過向Oracle提供描述外部表的元數(shù)據(jù),可以把一個操作系統(tǒng)文件當(dāng)成一個只讀的數(shù)據(jù)庫表,就像這些數(shù)據(jù)存儲在一個普通數(shù)據(jù)庫表中一樣來進行訪問。外部表是對數(shù)據(jù)庫表的延伸。外部表只能在Oracle9i之后的版本來使用。

Oracle外部表用來存取數(shù)據(jù)庫以外的文本文件(TextFile)或Oracle專屬格式文件。因此,建立外部表時不會產(chǎn)生段、區(qū)、數(shù)據(jù)塊等存儲結(jié)構(gòu),只有與表相關(guān)的定義放在數(shù)據(jù)字典中。外部表僅供查詢,不能對外部表的內(nèi)容進行修改(例如INSERT、UPDATE、DELETE等操作)。不能在外部表上建立索引。因為創(chuàng)建索引就意味著要存在對應(yīng)的索引記錄,而其實外部表的數(shù)據(jù)沒有存儲在數(shù)據(jù)庫中,故在外部表上是無法建立索引的。

如果外部表采用PARALLEL的方式加載的話,那么加載的數(shù)據(jù)是無序的。所以,這種情況需要綜合考慮,尤其是在使用該方式來查看告警日志文件內(nèi)容的時候需要特別注意。

1)外部表有如下幾點特性:

①外部表的數(shù)據(jù)位于文件系統(tǒng)之中,并按一定格式分割。文本文件或者其他類型的表可以作為外部表。操作系統(tǒng)文件在數(shù)據(jù)庫中的標(biāo)志是通過一個邏輯目錄來映射的,所以外部表需要在Oracle數(shù)據(jù)庫“服務(wù)端”創(chuàng)建目錄,這些OS文件必須放在這些目錄中。

②對外部表的訪問可以通過SQL語句來完成,而不需要先將外部表中的數(shù)據(jù)裝載進數(shù)據(jù)庫中。

③外部表是只讀的,因此,只能對外部表進行SELECT操作,不能對外部表執(zhí)行DML(DELETE、UPDATE和INSERT等)操作,也不能創(chuàng)建索引,但是可以創(chuàng)建視圖,也可以創(chuàng)建同義詞。

④ANALYZE語句不支持采集外部表的統(tǒng)計數(shù)據(jù),應(yīng)該使用DMBS_STATS包來采集外部表的統(tǒng)計數(shù)據(jù)。

⑤可以對外部表執(zhí)行查詢、連接和并行操作。

⑥外部表不支持LOB對象。

2)與外部表相關(guān)的幾個視圖如下:

5.

Oracle的表可以分為哪幾類?正確答案:從理論上來講,不存在一種能夠滿足所有讀取要求的數(shù)據(jù)存儲方式,所以,Oracle設(shè)計了大約5種數(shù)據(jù)的存儲格式,詳見表。

從上表中可以看出,沒有最好的技術(shù),只有最合適的技術(shù)。

6.

物化視圖(MaterializedViews)的作用是什么?正確答案:物化視圖(MaterializedViews)是包括一個查詢結(jié)果的數(shù)據(jù)庫對象,用于減少那些匯總、集合和分組的信息的集合數(shù)量。它們通常適合于數(shù)據(jù)倉庫和DSS系統(tǒng)(DecisionSupportSystem,決策支持系統(tǒng))。物化視圖在以前的Oracle版本中稱為快照。物化視圖可以查詢表,視圖和其他的物化視圖。物化視圖有如下的一些特點:

1)視圖并不真正地包含數(shù)據(jù),但是物化視圖則真正地包含數(shù)據(jù)。

2)物化視圖等于是對其基表的一種預(yù)處理。

3)物化視圖中的數(shù)據(jù)可以隨基表的變化而變化。

4)物化視圖可以加快某些查詢操作的速度,但它

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論