數(shù)據(jù)庫程序員面試分模擬題9_第1頁
數(shù)據(jù)庫程序員面試分模擬題9_第2頁
數(shù)據(jù)庫程序員面試分模擬題9_第3頁
數(shù)據(jù)庫程序員面試分模擬題9_第4頁
數(shù)據(jù)庫程序員面試分模擬題9_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫程序員面試分模擬題9簡答題1.

等待事件有哪些分類?正確答案:Oracle的等待事件主要可以分為兩類:空閑(Idle)等待事件和非空閑(Non-Idle)等待事件。

1)空閑等待事件指(江南博哥)Oracle正等待某種工作,在診斷和優(yōu)化數(shù)據(jù)庫的時(shí)候,不用過多注意這部分事件。

2)非空閑等待事件專門針對(duì)Oracle的活動(dòng),指數(shù)據(jù)庫任務(wù)或應(yīng)用運(yùn)行過程中發(fā)生的等待,這些等待事件是在調(diào)整數(shù)據(jù)庫的時(shí)候需要關(guān)注與研究的。

通過如下的SQL語句可以查詢等待事件的類型:

SELECTWAIT_CLASS#,WAIT_CLASS_ID,WAIT_CLASS,COUNT(*)AS"COUNT"FROM

V$EVENT_NAME

GROUPBYWAIT_CLASS#,WAIT_CLASS_ID,WAIT_CLASSORDERBYWAIT_CLASS#;[考點(diǎn)]等待事件

2.

如何切換到某個(gè)特定的數(shù)據(jù)庫?正確答案:運(yùn)行命令:usedatabase_name;。[考點(diǎn)]連接數(shù)據(jù)庫

3.

什么是數(shù)據(jù)庫鏡像?它有什么用途?正確答案:數(shù)據(jù)庫鏡像即根據(jù)DBA的要求,自動(dòng)把整個(gè)數(shù)據(jù)庫或者其中的部分關(guān)鍵數(shù)據(jù)復(fù)制到另一個(gè)磁盤上。每當(dāng)主數(shù)據(jù)庫更新時(shí),DBMS自動(dòng)把更新后的數(shù)據(jù)復(fù)制過去,即DBMS自動(dòng)保證鏡像數(shù)據(jù)與主數(shù)據(jù)的一致性。

數(shù)據(jù)庫鏡像的用途有:

1)用于數(shù)據(jù)庫恢復(fù)。當(dāng)出現(xiàn)介質(zhì)故障時(shí),可由鏡像磁盤繼續(xù)提供使用,同時(shí)DBMS自動(dòng)利用鏡像磁盤數(shù)據(jù)進(jìn)行數(shù)據(jù)庫的恢復(fù),不需要關(guān)閉系統(tǒng)和重裝數(shù)據(jù)庫副本。

2)提高數(shù)據(jù)庫的可用性。在沒有出現(xiàn)故障時(shí),當(dāng)一個(gè)用戶對(duì)某個(gè)數(shù)據(jù)加排它鎖進(jìn)行修改時(shí),其他用戶可以讀鏡像數(shù)據(jù)庫上的數(shù)據(jù),而不必等待該用戶釋放鎖。[考點(diǎn)]數(shù)據(jù)庫系統(tǒng)的組成與結(jié)構(gòu)

4.

數(shù)據(jù)文件OFFLINE之后必須要做的一件事是什么?正確答案:數(shù)據(jù)文件OFFLINE之后必須要做的一件事就是立刻執(zhí)行一次RECOVER操作,這樣無論過了多久之后,在ONLINE該數(shù)據(jù)文件的時(shí)候就不需要執(zhí)行RECOVER操作了。[考點(diǎn)]RMAN

5.

什么是OGG?它有哪些優(yōu)缺點(diǎn)?正確答案:OGG(OracleGoldenGate)屬于OracleFusionMiddleware產(chǎn)品線,2009年被Oracle收購,它是OracleStream的替代者。OGG軟件是一種基于日志的結(jié)構(gòu)化數(shù)據(jù)復(fù)制備份軟件,它通過解析源數(shù)據(jù)庫在線日志或歸檔日志獲得數(shù)據(jù)的增量變化,再將這些變化應(yīng)用到目標(biāo)數(shù)據(jù)庫,從而實(shí)現(xiàn)源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫的同步。OGG可以在異構(gòu)的IT(InformarionTechnology,信息技術(shù))基礎(chǔ)結(jié)構(gòu)(包括幾乎所有常用操作系統(tǒng)平臺(tái)和數(shù)據(jù)庫平臺(tái))之間實(shí)現(xiàn)大量數(shù)據(jù)亞秒級(jí)的實(shí)時(shí)復(fù)制,從而可以在應(yīng)急系統(tǒng)、在線報(bào)表、實(shí)時(shí)數(shù)據(jù)倉庫供應(yīng)、交易跟蹤、數(shù)據(jù)同步、集中/分發(fā)、容災(zāi)、數(shù)據(jù)庫升級(jí)和移植、雙業(yè)務(wù)中心等多個(gè)場景下應(yīng)用。同時(shí),OGG可以實(shí)現(xiàn)一對(duì)一、廣播(一對(duì)多)、聚合(多對(duì)一)、雙向復(fù)制、層疊、點(diǎn)對(duì)點(diǎn)、級(jí)聯(lián)等多種靈活的拓?fù)浣Y(jié)構(gòu)。

OGG能夠?qū)崿F(xiàn)大量交易數(shù)據(jù)的實(shí)時(shí)捕捉、變換和投遞,實(shí)現(xiàn)源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫的數(shù)據(jù)同步,保持亞秒級(jí)的數(shù)據(jù)延遲。和傳統(tǒng)的邏輯復(fù)制一樣,OGG的實(shí)現(xiàn)原理是首先通過抽取源端的Redo日志或者ArchiveLog,然后通過TCP/IP投遞到目標(biāo)端,最后解析還原應(yīng)用到目標(biāo)端,使目標(biāo)端實(shí)現(xiàn)同源端的數(shù)據(jù)同步。[考點(diǎn)]OGG

6.

會(huì)話游標(biāo)的含義是什么?共享游標(biāo)和會(huì)話游標(biāo)的區(qū)別有哪些?正確答案:會(huì)話游標(biāo)(SessionCursor)是當(dāng)前會(huì)話(Session)解析和執(zhí)行SQL的載體,即會(huì)話游標(biāo)用于在當(dāng)前會(huì)話中解析和執(zhí)行SQL,會(huì)話游標(biāo)是以哈希表的方式緩存在PGA中(共享游標(biāo)是緩存在SGA的庫緩存里)。在目標(biāo)SQL的執(zhí)行過程中,會(huì)話游標(biāo)起承上啟下的作用。因?yàn)镺racle依靠會(huì)話游標(biāo)來將目標(biāo)SQL所涉及的數(shù)據(jù)從BufferCache的對(duì)應(yīng)數(shù)據(jù)塊讀到PGA里,然后在PGA里做后續(xù)的排序、表連接等處理,最后將最終的處理結(jié)果返回給用戶,所以,會(huì)話游標(biāo)是當(dāng)前會(huì)話解析和執(zhí)行SQL的載體。

共享游標(biāo)和會(huì)話游標(biāo)的對(duì)比見下表。

共享游標(biāo)會(huì)話游標(biāo)緩存位置緩存在SGA中的共享池里的庫緩存中緩存在每個(gè)會(huì)話的PGA中共享共享游標(biāo)在所有會(huì)話之間共享會(huì)話游標(biāo)與會(huì)話是一一對(duì)應(yīng)的,不同會(huì)話的會(huì)話游標(biāo)之間不能共享,這是與共享游標(biāo)的本質(zhì)區(qū)別。生命周期共享游標(biāo)無生命周期,會(huì)進(jìn)行緩存會(huì)話游標(biāo)是有生命周期的,每個(gè)會(huì)話游標(biāo)在使用的過程中都至少會(huì)經(jīng)歷一次Open、Parse、Bind、Execute、Fetch和Close中的一個(gè)或多個(gè)階段。Oracle會(huì)根據(jù)參數(shù)SESSION_CACHED_CURSORS的值來決定是否將已經(jīng)用過的會(huì)話游標(biāo)緩存在對(duì)應(yīng)會(huì)話的PGA中聯(lián)系1)會(huì)話游標(biāo)足以哈希表的方式緩存在PGA中,意味著Oracle會(huì)通過棚關(guān)的哈希運(yùn)算來存儲(chǔ)和訪問在當(dāng)前會(huì)話的PGA中的對(duì)應(yīng)會(huì)話游標(biāo)。這種訪問機(jī)制和共享游標(biāo)是一樣的,可以簡單地認(rèn)為Oracle是根據(jù)目標(biāo)SQL的SQL文本的哈希值去PGA中的相應(yīng)HashBucket中找匹配的會(huì)話游標(biāo)。由于在緩存會(huì)話游標(biāo)的哈希表的對(duì)應(yīng)HashBucket中,Oracle會(huì)存儲(chǔ)目標(biāo)SQL對(duì)應(yīng)的父游標(biāo)的庫緩存對(duì)象句柄地址,所以,Oracle可以通過會(huì)話游標(biāo)找到對(duì)應(yīng)的父游標(biāo),進(jìn)而就可以找到對(duì)應(yīng)子游標(biāo)中目標(biāo)SQL的解析樹和執(zhí)行計(jì)劃,然后Oracle就可以重用目標(biāo)SQL的解析樹和執(zhí)行計(jì)劃來執(zhí)行SQL語句了2)一個(gè)會(huì)話游標(biāo)只能對(duì)應(yīng)一個(gè)共享游標(biāo),而一個(gè)共享游標(biāo)卻可以同時(shí)對(duì)應(yīng)多個(gè)會(huì)話游標(biāo)[考點(diǎn)]游標(biāo)

7.

使用哪個(gè)數(shù)據(jù)字典可以查詢序列的定義信息?正確答案:可以通過查詢數(shù)據(jù)字典視圖DBA_SEQUENCES獲取序列的定義信息,NEXTVAL返回序列中下一個(gè)有效的值,任何用戶都可以引用CURRVAL中存放的序列的當(dāng)前值。當(dāng)序列值不符合實(shí)際需求時(shí),可以執(zhí)行ALTERSEQUENCE命令修改序列,需要注意的是,啟動(dòng)序列號(hào)不可以修改(STARTWITHN)。修改序列的語法和序列的創(chuàng)建語法一樣,只是將CREATE修改為ALTER即可。

8.

分區(qū)表有什么優(yōu)點(diǎn)?正確答案:分區(qū)表有如下的優(yōu)點(diǎn):

1)增強(qiáng)可用性。如果表的一個(gè)分區(qū)由于系統(tǒng)故障而不能使用,那么表的其余好的分區(qū)仍可以使用。

2)減少關(guān)閉時(shí)間。如果系統(tǒng)故障只影響表的一部分分區(qū),那么只有這部分分區(qū)需要修復(fù),可能比整個(gè)大表修復(fù)花的時(shí)間更少。

3)維護(hù)輕松。單獨(dú)管理每個(gè)分區(qū)比管理單個(gè)大表要輕松得多。

4)均衡I/O??梢园驯淼牟煌謪^(qū)分配到不同的磁盤來平衡I/O,改善性能。

5)改善性能。對(duì)大表的查詢、增加、修改等操作可以分解到表的不同分區(qū)來并行執(zhí)行,可使運(yùn)行速度更快。

6)分區(qū)對(duì)用戶透明,最終用戶感覺不到分區(qū)的存在。[考點(diǎn)]分區(qū)表

9.

如何知道當(dāng)前綁定了什么裸設(shè)備?正確答案:“raw-qa”命令可以列出當(dāng)前綁定的所有裸設(shè)備。[考點(diǎn)]裸設(shè)備(RAW)

10.

如何查看邏輯DG備庫SQLApply的進(jìn)度?正確答案:[考點(diǎn)]DG

11.

InnoDB存儲(chǔ)引擎支持哪些事務(wù)類型?正確答案:對(duì)于InnoDB存儲(chǔ)引擎來說,其支持扁平事務(wù)、帶有保存點(diǎn)的扁平事務(wù)、鏈?zhǔn)聞?wù)和分布式事務(wù)。對(duì)于嵌套事務(wù),其原生不支持。因此對(duì)有并發(fā)事務(wù)需求的用戶來說,MySQL數(shù)據(jù)庫或InnoDB存儲(chǔ)引擎就顯得無能為力,然而用戶仍可以通過帶保存點(diǎn)的事務(wù)來模擬串行的嵌套事務(wù)。[考點(diǎn)]存儲(chǔ)引擎

12.

如何獲取用戶的權(quán)限?正確答案:若要獲取一個(gè)用戶的角色、系統(tǒng)權(quán)限、對(duì)象權(quán)限以及列權(quán)限,則可以通過以上介紹的數(shù)據(jù)字典視圖來獲取也可以通過DBMS_METADATA.GET_GRANTED_DDL來獲取。

SELECTDBMS_METADATA.GET_DDL('USER','LHR')DDL_SQLFROMDUAL

UNIONALL

SELECTDBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT','LHR')FROMDUAL

UNIONALL

SELECTDBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT','LHR')FROMDUAL

UNIONALL

SELECTDBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT','LHR')FROMDUAL;

將結(jié)果復(fù)制出來簡單地用文本編輯工具編輯后即可運(yùn)行。

另外還可以通過exp或expdp來獲取用戶的權(quán)限,這里不再演示。[考點(diǎn)]權(quán)限

13.

如何得到真實(shí)的執(zhí)行計(jì)劃?正確答案:在Oracle數(shù)據(jù)庫中判斷得到的執(zhí)行計(jì)劃是否準(zhǔn)確,就是看目標(biāo)SQL是否被真正執(zhí)行過,真正執(zhí)行過的SQL所對(duì)應(yīng)的執(zhí)行計(jì)劃就是準(zhǔn)確的,反之則有可能不準(zhǔn),因此,通過10046事件及如下的幾種方式得到的執(zhí)行計(jì)劃是最準(zhǔn)確的,而從其他方式獲取到的執(zhí)行計(jì)劃都有可能不準(zhǔn)確。

SELECT*FROMTABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL,NULL,'ADVANCEDALLSTATS'));

SELECT*FROMTABLE(DBMS_XPLAN.DISPLAY_CURSOR('sql_id/hash_value',CHILD_CURSOR_NUMBER,'ADVANCEDALLSTATS'));

SELECT*FROMTABLE(DBMS_XPLAN.DISPLAY_AWR('sql_id'));

這里需要注意的是,雖然SQL*Plus的AUTOTRACE功能有部分是真實(shí)執(zhí)行了SQL語句的(例如所有DML語句),但是由于該命令所顯示的執(zhí)行計(jì)劃來源于調(diào)用EXPLAINPLAN命令,所以,其得到的執(zhí)行計(jì)劃依然可能不準(zhǔn)確(特別是在使用了綁定變量的情況下)。[考點(diǎn)]執(zhí)行計(jì)劃

14.

數(shù)據(jù)庫運(yùn)行中可能產(chǎn)生的故障有哪幾類?哪些故障影響事務(wù)的正常執(zhí)行?哪些故障破壞數(shù)據(jù)庫數(shù)據(jù)?正確答案:數(shù)據(jù)庫系統(tǒng)中可能發(fā)生各種各樣的故障,大致可以分為①事務(wù)內(nèi)部的故障;②系統(tǒng)故障;③介質(zhì)故障;④計(jì)算機(jī)病毒。其中,事務(wù)故障、系統(tǒng)故障和介質(zhì)故障影響事務(wù)的正常執(zhí)行;介質(zhì)故障和計(jì)算機(jī)病毒破壞數(shù)據(jù)庫數(shù)據(jù)。[考點(diǎn)]數(shù)據(jù)庫系統(tǒng)的組成與結(jié)構(gòu)

15.

MySQL數(shù)據(jù)類型有哪些屬性?正確答案:數(shù)據(jù)類型的屬性包括auto_increment、binary、default、index、notnull、null、primarykey、unique和zerofill,具體見下表。屬性列auto_increment1)auto_increment能為新插入的行賦予一個(gè)唯一的整數(shù)標(biāo)識(shí)符,該屬性只用于整數(shù)類型2)auto_increment一般從1開始,每行增加1??梢酝ㄟ^“ALTERTABLETB_NAMEAUTO_INCREMENT=n;”語句強(qiáng)制設(shè)置自動(dòng)增長列的初始值,但是該強(qiáng)制的默認(rèn)值是保留在內(nèi)存中的。如果該值在使用之前數(shù)據(jù)庫重新啟動(dòng),那么這個(gè)強(qiáng)制的默認(rèn)值就會(huì)丟失,需要在數(shù)據(jù)庫啟動(dòng)以后重新設(shè)置3)可以使用LAST_INSERT_ID()查洵當(dāng)前線程最后插入記錄使用的值。如果一次插入了多條記錄,那么返回的是第一條記錄使用的自動(dòng)增長值4)MySQL要求將auto_increment屬性用于作為主鍵的列5)每個(gè)表只允許有一個(gè)auto_increment列6)自動(dòng)增長列可以手工插入,但是插入的值如果是空或者0,那么實(shí)際插入的將是自動(dòng)增長后的值7)對(duì)于InnoDB表,自動(dòng)增長列必須是索引。如果是組合索引,也必須是組合索引的第一列,但是對(duì)于MylSAM表,自動(dòng)增長列可以是組合索引的其他列,這樣插入記錄后,自動(dòng)增長列是按照組合索引的前幾列進(jìn)行排序后遞增的binarybinary屬性只用于CHAR和VARCHAR值。當(dāng)為列指定了該屬性時(shí),將以區(qū)分大小寫的方式排序和比較defaultdefault屬性確保在沒有任何值可用的情況下,賦予某個(gè)常量值,這個(gè)值必須是常量,因?yàn)镸ySQL不允許插入函數(shù)或表達(dá)式值。此外,此屬性無法用于BLOB或TEXT列。如果已經(jīng)為此列指定了NULL屬性,那么當(dāng)沒有指定默認(rèn)值時(shí)默認(rèn)值將為NULL,否則默認(rèn)值將依賴于字段的數(shù)據(jù)類型index如果所有其他因素都相同,要加速數(shù)據(jù)庫查詢,那么使用索引通常是最重要的一個(gè)步驟。索引一個(gè)列會(huì)為該列創(chuàng)建一個(gè)有序的鍵數(shù)組,每個(gè)鍵指向其相應(yīng)的表行。以后針對(duì)輸入條件可以搜索這個(gè)有序的鍵數(shù)組,與搜索整個(gè)未索引的表相比,這將在性能方面得到極大的提升notnull如果將一個(gè)列定義為notnull,那么將不允許向該列插入null值。建議在重要情況下始終使用notnull屬性,因?yàn)樗峁┝艘粋€(gè)基本驗(yàn)證,確保已經(jīng)向奩洵傳遞了所有必要的值null為列指定null屬性時(shí),該列可以保持為空,而不論行中其他列是否已經(jīng)被填充。null精確的說法是“無”,而不是空字符串或0primarykeyprimarykey屬性用于確保指定行的唯一性。指定為主鍵的列中,值不能重復(fù),也不能為空。為指定為主鍵的列賦予auto_increment屬性是很常見的,因?yàn)榇肆胁槐嘏c行數(shù)據(jù)有任何關(guān)系,而只是作為一個(gè)唯一標(biāo)識(shí)符。主鍵又分為以下兩種:1)單字段主鍵。如果輸入數(shù)據(jù)庫中的每行都已經(jīng)有不可修改的唯一標(biāo)識(shí)符,一般會(huì)使用單字段主鍵。注意,此主鍵一旦設(shè)置就不能再修改2)多字段主鍵。如果記錄中任何一個(gè)字段都不可能保證唯一性,那么就可以使用多字段主鍵。這時(shí),多個(gè)字段聯(lián)合起來確保唯一性。如果出現(xiàn)這種情況,那么指定一個(gè)auto_increment整數(shù)作為主鍵是更好的辦法unique被賦予unique屬性的列將確保所有值都有不同的值,只是null值可以重復(fù)。一般會(huì)指定一個(gè)列為unique,以確保該列的所有值都不同zerofillzerofill屬性可用于任何數(shù)值類型,用0填充所有剩余字段空間。例如,無符號(hào)int的默認(rèn)寬度是10;因此,當(dāng)“零填充”的int值為4時(shí),將表示它為0000000004[考點(diǎn)]數(shù)據(jù)類型

16.

什么是更新丟失?正確答案:更新丟失是指多個(gè)用戶通過應(yīng)用程序訪問數(shù)據(jù)庫時(shí),由于查詢數(shù)據(jù)并返回到頁面和用戶修改完畢單擊保存按鈕將修改后的結(jié)果保存到數(shù)據(jù)庫這個(gè)時(shí)間段(即修改數(shù)據(jù)在頁面上停留的時(shí)間)在不同用戶之間可能存在偏差,從而最先查詢數(shù)據(jù)并且最后提交數(shù)據(jù)的用戶會(huì)把其他用戶所做的修改覆蓋掉。當(dāng)兩個(gè)或多個(gè)事務(wù)選擇同一行數(shù)據(jù),然后基于最初選定的值更新該行時(shí),會(huì)發(fā)生丟失更新問題。每個(gè)事務(wù)都不知道其他事務(wù)的存在。最后的更新將重寫由其他事務(wù)所做的更新,這將導(dǎo)致數(shù)據(jù)丟失。

簡單來說,更新丟失就是兩個(gè)事務(wù)都同時(shí)更新一行數(shù)據(jù),一個(gè)事務(wù)對(duì)數(shù)據(jù)的更新把另一個(gè)事務(wù)對(duì)數(shù)據(jù)的更新覆蓋了。這是因?yàn)橄到y(tǒng)沒有執(zhí)行任何的鎖操作,因此并發(fā)事務(wù)并沒有被隔離開來。Serializable可以防止更新丟失問題的發(fā)生。其他的三個(gè)隔離級(jí)別都有可能發(fā)生更新丟失問題。Serializable雖然可以防止更新丟失,但是效率太低,通常數(shù)據(jù)庫不會(huì)用這個(gè)隔離級(jí)別,所以,需要其他的機(jī)制來防止更新丟失,例如悲觀鎖和樂觀鎖。[考點(diǎn)]基本概念

17.

給出下面語句的可能的優(yōu)化思路。

CREATETABLET_YH_20170705_LHR(XINT);

BEGIN

FORIIN1..100000LOOP

EXECUTEIMMEDIATE'INSERTI

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論