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

下載本文檔

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

文檔簡(jiǎn)介

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

在Oracle中,數(shù)據(jù)塊、Redo日志塊及控制文件數(shù)據(jù)塊的大小分別是多少?如何查詢(xún)?正確答案:這3種數(shù)據(jù)塊分別介紹如下:

1)數(shù)據(jù)塊(DataBloc(江南博哥)k),是讀寫(xiě)數(shù)據(jù)文件的最小單位,默認(rèn)是8KB,可以通過(guò)SQL語(yǔ)句“SELECTFILE#,NAME,BLOCK_SIZEFROMV$DATAFILE;”查詢(xún),單位為BYTE。

2)Redo日志數(shù)據(jù)塊(RedoLogBlock),其大小一般等于操作系統(tǒng)的系統(tǒng)塊的大小,一般為512B或4096B,可以通過(guò)SQL語(yǔ)句“SELECTBLOCKSIZEFROMV$LOG;”或“SELECTLEBSZFROMX$KCCLE;”查詢(xún),單位為BYTE。

3)控制文件數(shù)據(jù)塊(ControlFileBlock),默認(rèn)為16KB,可以通過(guò)SQL語(yǔ)句“SELECTBLOCK_SIZEFROMV$CONTROLFILE;”查詢(xún),單位為BYTE。[考點(diǎn)]邏輯結(jié)構(gòu)

2.

如何查詢(xún)到數(shù)據(jù)庫(kù)的增長(zhǎng)情況?正確答案:可以通過(guò)視圖DBA_HIST_TBSPC_SPACE_USAGE來(lái)獲取數(shù)據(jù)庫(kù)的增長(zhǎng)情況。[考點(diǎn)]性能診斷

3.

怎樣收集表的統(tǒng)計(jì)信息?怎樣收集分區(qū)表的統(tǒng)計(jì)信息?正確答案:主要采用DBMS_STATS.GATHER_TABLE_STATS包進(jìn)行統(tǒng)計(jì)信息的收集,如下:

DBMS_STATS.GATHER_TABLE_STATS(USER,'TB_NAME',CASCADE=>TRUE);--普通表

DBMS_STATS.GATHER_TABLE_STATS(USER,'TB_NAME',PARTNAME=>'PT_PART_NAME',GRANULARITY=>'PARTITION',CASCADE=>TRUE);--針對(duì)分區(qū)表的單個(gè)分區(qū)進(jìn)行收集統(tǒng)計(jì)信息

除此之外,還有一些其他的用法,如下:

1)EXECDBMS_STATS.GATHER_DATABASE_STATS(USER);——收集當(dāng)前數(shù)據(jù)庫(kù)下所有用戶(hù)的統(tǒng)計(jì)信息。

2)EXECDBMS_STATS.GATHER_SCHEMA_STATS(USER);——收集當(dāng)前數(shù)據(jù)庫(kù)用戶(hù)下所有對(duì)象的統(tǒng)計(jì)信息。

當(dāng)系統(tǒng)的分區(qū)表數(shù)據(jù)量很大時(shí),如果每次都收集全部的分區(qū)必然會(huì)導(dǎo)致統(tǒng)計(jì)信息的收集非常慢,在Oracle11g之后可以通過(guò)設(shè)置INCREMENTAL來(lái)只針對(duì)數(shù)據(jù)有變動(dòng)的分區(qū)做收集:

EXECDBMS_STATS.SET_TABLE_PREFS(USER,'TABLE_NAME','INCREMENTAL','TRUE');--只收集數(shù)據(jù)變動(dòng)的分區(qū)

SELECTDBMS_STATS.GET_PREFS('INCREMENTAL',NULL,'TABLE_NAME')FROMDUAL;

--查看分區(qū)表INCREMENTAL的值[考點(diǎn)]統(tǒng)計(jì)信息

4.

如何批量刪除JOB?正確答案:可以采用SQL來(lái)生成刪除JOB的語(yǔ)句,首先執(zhí)行以下語(yǔ)句,可以根據(jù)情況對(duì)結(jié)果進(jìn)行過(guò)濾:

SELECT'EXECDBMS_SCHEDULER.DROP_JOB('''||JOB_NAME||''',TRUB);FROM

USER_SCHEDULER_JOBST1;

將以上SQL生成的結(jié)果復(fù)制到命令窗口就可以批量執(zhí)行了。[考點(diǎn)]JOB

5.

DBMS_OUTPUT提示緩沖區(qū)不夠,怎么增加?正確答案:采用命令“DBMS_OUTPUT.ENABLE(20000);”,另外,如果DBMS_OUTPUT的信息不能顯示,那么需要設(shè)置SETSERVEROUTPUTON。[考點(diǎn)]系統(tǒng)包

6.

如何監(jiān)控索引的使用狀況?正確答案:在開(kāi)發(fā)應(yīng)用程序時(shí),可能會(huì)建立很多索引,那么這些索引的使用到底怎么樣,是否有些索引一直都沒(méi)有用到過(guò),在這種情況下就需要對(duì)這些索引進(jìn)行監(jiān)控,以便確定它們的使用情況,并為是否可以清除它們給出依據(jù)。

監(jiān)控索引有兩種方式:

(1)直接監(jiān)控索引的使用情況

1)設(shè)置所要監(jiān)控的索引:ALTERINDEXIDX_T_XXMONITORINGUSAGE;

2)查看該索引有沒(méi)有被使用:SELECT*FROMV$OBJECT_USAGE;

3)關(guān)閉監(jiān)控:ALTERINDEXIDX_T_XXNOMONITORINGUSAGE;

查詢(xún)V$OBJECT_USAGE就可以知道數(shù)據(jù)庫(kù)對(duì)索引的使用情況。通過(guò)一段時(shí)間的監(jiān)控,就可以確定哪些是無(wú)用的索引。另外,為了避免使用V$OBJECT_USAGE只能查詢(xún)到當(dāng)前用戶(hù)下索引的監(jiān)控情況,可以使用如下語(yǔ)句查詢(xún)數(shù)據(jù)庫(kù)中所有被監(jiān)控索引的使用情況:

SELECTU.NAMEOWNER,IO.NAMEINDEX_NAME,T.NAMETABLE_NAME,DECODE(BITAND(I.FLAGS,65536),0,'NO','YES')MONITORING,

DECODE(BITAND(OU.FLAGS,1),0,'NO','YES')USED,

OU.START_MONITORINGSTART_MONITORING,

OU.END_MONITORINGEND_MONITORING

FROMSYS.USERSU,

SYS.OBJ$IO,

SYS.OBJ$

T.

SYS.IND$I,

SYS.OBJECT_USAGEOU

WHEREI.OBJ#=OU.OBJ#

ANDIO.OBJ#=OU.OBJ#

ANDT.OBJ#=I.BO#

ANDU.USER#=IO.OWNER#;

(2)通過(guò)查看歷史的執(zhí)行計(jì)劃,分析索引的使用情況

可以從視圖DBA_HIST_SQL_PLAN中獲取到數(shù)據(jù)庫(kù)中所有索引的掃描次數(shù)情況,然后根據(jù)掃描次數(shù)和開(kāi)發(fā)人員溝通是否需要保留索引。[考點(diǎn)]索引

7.

Oracle如何刪除歸檔日志文件?正確答案:在RMAN工具里刪除歸檔日志文件:

1.rmantarget/

2.CROSSCHECKARCHIVELOGALL;

3.LISTEXPIREDARCHIVELOGALL;

4.DELETEEXPIREDARCHIVELOGALL;[考點(diǎn)]RMAN

8.

用一條SQL語(yǔ)句查詢(xún)出每門(mén)課都大于80分的學(xué)生姓名:

namekechengfenshu

張三語(yǔ)文81

張三數(shù)學(xué)75

李四語(yǔ)文76

李四數(shù)學(xué)90

王五語(yǔ)文81

王五數(shù)學(xué)100

王五英語(yǔ)90正確答案:SELECTDISTINCTNAMEFROMTABLEWHERENAMENOTIN(SELECTDISTINCTNAMEFROMTABLEWHEREFENSHU<=80);。[考點(diǎn)]SQL部分

9.

如何固定SQL執(zhí)行計(jì)劃?正確答案:在實(shí)際項(xiàng)目中,通常在開(kāi)發(fā)環(huán)境下,一些SQL執(zhí)行沒(méi)有任何功能問(wèn)題,而當(dāng)生產(chǎn)環(huán)境或生產(chǎn)環(huán)境的數(shù)據(jù)量發(fā)生較大的變化時(shí),其SQL的執(zhí)行效率非常低。此時(shí)如果更改SQL,那么可能需要重新修改源程序以及重新編譯程序。如果修改源程序的成本比較大,那么可以使用一些方法在不改變?cè)磻?yīng)用程序的情況下更改特定SQL的執(zhí)行計(jì)劃并固定下來(lái)。因?yàn)樵赟QL語(yǔ)句的執(zhí)行計(jì)劃發(fā)生更改時(shí),可能存在性能風(fēng)險(xiǎn)。SQL計(jì)劃發(fā)生更改的原因有很多,如優(yōu)化程序版本、優(yōu)化程序統(tǒng)計(jì)信息、優(yōu)化程序參數(shù)、方案定義、系統(tǒng)設(shè)計(jì)和SQL概要文件創(chuàng)建等。有4種方式可以固定和控制執(zhí)行計(jì)劃,分別是使用Hint(提示)、OUTLINE(存儲(chǔ)概要)、SQLPROFILE(SQL概要文件)和SPM(SQLPlanManagemem,SQL計(jì)劃管理)。[考點(diǎn)]執(zhí)行計(jì)劃

10.

索引的優(yōu)缺點(diǎn)有哪些?正確答案:創(chuàng)建索引可以大大提高系統(tǒng)的性能,總體來(lái)說(shuō),索引的優(yōu)點(diǎn)如下:

1)大大加快數(shù)據(jù)的檢索速度,這也是創(chuàng)建索引的最主要的原因。

2)索引可以加速表和表之間的連接。

3)索引在實(shí)現(xiàn)數(shù)據(jù)的參照完整性方面特別有意義,例如,在外鍵列上創(chuàng)建索引可以有效地避免死鎖的發(fā)生,也可以防止當(dāng)更新父表主鍵時(shí),數(shù)據(jù)庫(kù)對(duì)子表的全表鎖定。

4)索引是減少磁盤(pán)I/O的許多有效手段之一。

5)當(dāng)使用分組(GROUPBY)和排序(ORDERBY)子句進(jìn)行數(shù)據(jù)檢索時(shí),可以顯著減少查詢(xún)中分組和排序的時(shí)間,大大加快數(shù)據(jù)的檢索速度。

6)創(chuàng)建唯一性索引,可以保證數(shù)據(jù)庫(kù)表中每一行數(shù)據(jù)的唯一性。

7)通過(guò)使用索引,可以在查詢(xún)的過(guò)程中,使用優(yōu)化隱藏器,提高系統(tǒng)的性能。

索引的缺點(diǎn)如下:

1)索引必須創(chuàng)建在表上,不能創(chuàng)建在視圖上。

2)創(chuàng)建索引和維護(hù)索引要耗費(fèi)時(shí)間,這種時(shí)間隨著數(shù)據(jù)量的增加而增加。

3)建立索引需要占用物理空間,如果要建立聚簇索引,那么需要的空間會(huì)很大。

4)當(dāng)對(duì)表中的數(shù)據(jù)進(jìn)行增加、刪除和修改的時(shí)候,系統(tǒng)必須要有額外的時(shí)間來(lái)同時(shí)對(duì)索引進(jìn)行更新維護(hù),以維持?jǐn)?shù)據(jù)和索引的一致性,所以,索引降低了數(shù)據(jù)的維護(hù)速度。[考點(diǎn)]基本概念

11.

后臺(tái)進(jìn)程、服務(wù)器進(jìn)程和用戶(hù)進(jìn)程之間的區(qū)別是什么?正確答案:后臺(tái)進(jìn)程、服務(wù)器進(jìn)程和用戶(hù)進(jìn)程間的關(guān)系如下圖所示。

(1)USERPROCESS(用戶(hù)進(jìn)程)

用戶(hù)進(jìn)程指的是Oracle客戶(hù)端進(jìn)程。例如,常用的Oracle的SQL*Plus就是最常用的客戶(hù)端進(jìn)程。

(2)SERVERPROCESS(服務(wù)器進(jìn)程)

服務(wù)器進(jìn)程指的是與客戶(hù)端連接的服務(wù)器端的后臺(tái)進(jìn)程。對(duì)于每個(gè)前臺(tái)的用戶(hù)進(jìn)程,后臺(tái)都有一個(gè)服務(wù)器進(jìn)程與之對(duì)應(yīng)。服務(wù)器主要是通過(guò)它和用戶(hù)進(jìn)程進(jìn)行聯(lián)系、溝通及進(jìn)行數(shù)據(jù)的交換。

(3)BACKGROUNDPROCESSES(后臺(tái)進(jìn)程)

后臺(tái)進(jìn)程是Oracle的程序,在Oracle實(shí)例啟動(dòng)的時(shí)候啟動(dòng),用來(lái)管理數(shù)據(jù)庫(kù)的讀寫(xiě)、恢復(fù)和監(jiān)視等工作,例如PMON、SMON等進(jìn)程。后臺(tái)進(jìn)程是Oracle實(shí)例的核心。

在UNIX操作系統(tǒng)上,Oracle的后臺(tái)進(jìn)程對(duì)應(yīng)于操作系統(tǒng)進(jìn)程,也就是說(shuō),一個(gè)Oracle后臺(tái)進(jìn)程將啟動(dòng)一個(gè)操作系統(tǒng)進(jìn)程;在Windows操作系統(tǒng)上,Oracle的后臺(tái)進(jìn)程對(duì)應(yīng)于操作系統(tǒng)線程,打開(kāi)任務(wù)管理器,只能看到一個(gè)ORACLE.EXE的進(jìn)程,但是通過(guò)另外的工具,就可以看到包含在ORACLE.EXE進(jìn)程中的線程。[考點(diǎn)]后臺(tái)進(jìn)程

12.

分區(qū)表有哪幾類(lèi)?如何選擇用哪種類(lèi)型的分區(qū)表?正確答案:Oracle的分區(qū)可以分為范圍分區(qū)(RANGEPARTITION)、哈希分區(qū)(HASHPARTITION)、列表分區(qū)(IISTPARTITION)、復(fù)合分區(qū)(組合分區(qū))、INTERVAL分區(qū)(間隔分區(qū))和系統(tǒng)分區(qū)。其中,INTERVAL分區(qū)和系統(tǒng)分區(qū)是Oracle11g的新特性,尤其INTERVAL分區(qū)在生產(chǎn)環(huán)境中還是比較實(shí)用的。對(duì)于海量數(shù)據(jù)的數(shù)據(jù)庫(kù)設(shè)計(jì),分區(qū)的設(shè)計(jì)非常重要。例如,對(duì)于一個(gè)大表,應(yīng)該采用哪種類(lèi)型的分區(qū),對(duì)于以后數(shù)據(jù)庫(kù)的性能和管理至關(guān)重要。其實(shí),范圍分區(qū)、哈希分區(qū)和列表分區(qū)這三種分區(qū)的特點(diǎn)都非常明顯:

1)如果需要進(jìn)行數(shù)據(jù)的過(guò)期化處理,那么范圍分區(qū)基本上是唯一的選擇。

2)如果需要數(shù)據(jù)的均勻分布,那么可以考慮使用哈希分區(qū)。

3)如果數(shù)據(jù)的值可以很好地對(duì)應(yīng)于某個(gè)分區(qū),那么就可以考慮使用列表分區(qū)。

在上面的原則基礎(chǔ)上,再結(jié)合性能的影響因素,來(lái)最終確定使用哪種類(lèi)型的分區(qū)。

如果選擇的分區(qū)不能確保各分區(qū)內(nèi)數(shù)據(jù)量的基本平均,那么這種分區(qū)方式有可能是不恰當(dāng)?shù)?。比如?duì)于RANGE分區(qū),假設(shè)分了10個(gè)分區(qū),而其中一個(gè)分區(qū)中的記錄數(shù)占總記錄數(shù)的90%,其他9個(gè)分區(qū)只占總記錄數(shù)的10%,則這個(gè)分區(qū)方式就起不到數(shù)據(jù)平衡的作用。[考點(diǎn)]分區(qū)表

13.

Oracle數(shù)據(jù)庫(kù)在物理上是由哪些文件組成的?正確答案:Oracle數(shù)據(jù)庫(kù)物理結(jié)構(gòu)如下圖所示。

Oracle數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)由控制文件(ControlFiles)、數(shù)據(jù)文件(DataFiles)、聯(lián)機(jī)Redo日志文件(OnlineRedoLogFiles)、參數(shù)文件(ParameterFile)、歸檔日志文件(ArchiveLogFiles)和密碼文件(PasswordFile)組成。

1)控制文件:包含維護(hù)和驗(yàn)證數(shù)據(jù)庫(kù)完整性的必要信息,其中記錄了數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)。例如,控制文件用于識(shí)別數(shù)據(jù)文件和Redo日志文件。每個(gè)Oracle數(shù)據(jù)庫(kù)都有相應(yīng)的控制文件,一個(gè)數(shù)據(jù)庫(kù)至少需要一個(gè)控制文件,控制文件屬于二進(jìn)制文件??刂莆募拿袷酵ǔ閏tr*.ctl。

2)數(shù)據(jù)文件:存儲(chǔ)數(shù)據(jù)的文件。

3)聯(lián)機(jī)Redo日志文件:包含對(duì)數(shù)據(jù)庫(kù)所做的更改記錄,一個(gè)數(shù)據(jù)庫(kù)至少需要兩組聯(lián)機(jī)Redo日志文件。聯(lián)機(jī)Redo日志文件也叫在線重做日志文件或聯(lián)機(jī)重做日志文件。

4)參數(shù)文件:定義Oracle實(shí)例的特性,分為SPFILE和PFILE兩種類(lèi)型的參數(shù)文件。

5)歸檔文件:歸檔文件是聯(lián)機(jī)Redo日志文件的脫機(jī)副本,這些歸檔文件對(duì)于介質(zhì)恢復(fù)很重要。

6)密碼文件:認(rèn)證哪些用戶(hù)有權(quán)限啟動(dòng)和關(guān)閉Oracle實(shí)例。

Oracle中邏輯結(jié)構(gòu)包括表空間(TABLESPACE)、段(SEGMENT)、區(qū)(EXTENT)和塊(BLOCK)。數(shù)據(jù)庫(kù)由表空間構(gòu)成,而表空間又由段構(gòu)成,段又由區(qū)構(gòu)成,區(qū)又由Oracle塊構(gòu)成,即塊→區(qū)→段→表空間→數(shù)據(jù)庫(kù)。[考點(diǎn)]物理結(jié)構(gòu)

14.

假定一個(gè)部門(mén)的數(shù)據(jù)庫(kù)包括以下信息。

1)職工的信息:職工號(hào)、姓名、地址和所在部門(mén)。

2)部門(mén)的信息:部門(mén)所有職工、部門(mén)名、經(jīng)理和銷(xiāo)售的產(chǎn)品。

3)產(chǎn)品的信息:產(chǎn)品名、制造商、價(jià)格、型號(hào)及產(chǎn)品的內(nèi)部編號(hào)。

4)制造商的信息:制造商名稱(chēng)、地址、生產(chǎn)的產(chǎn)品名和價(jià)格。

試畫(huà)出這個(gè)數(shù)據(jù)庫(kù)的E-R圖。正確答案:本題對(duì)應(yīng)的E-R圖如下圖所示。

[考點(diǎn)]E-R模型

15.

在表中建立了索引以后,導(dǎo)入大量數(shù)據(jù)為什么會(huì)很慢?正確答案:對(duì)已經(jīng)建立了索引的表中插入數(shù)據(jù)時(shí),插入一條數(shù)據(jù)就要對(duì)該記錄按索引排序。因此,導(dǎo)入大量數(shù)據(jù)的時(shí)候速度會(huì)很慢。解決這種情況的辦法是,在沒(méi)有任何索引的情況插入數(shù)據(jù),然后建立索引。[考點(diǎn)]索引

16.

如何格式化輸出結(jié)果?正確答案:可以使用column命令。[考點(diǎn)]SHELL腳本系列

17.

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

SELECT*FROM(SELECT*FROMSCOTT.EMPORDERBYSYS_GUID())WHEREROWNUM<=5;

SELECT*FROM(SELECT*FROMSCOTT.EMPORDERBYDBMS_RANDOM.VALUE)WHEREROWNUM<=5;

18.

軟件生存期有哪幾個(gè)階段?正確答案:軟件定義時(shí)期、軟件開(kāi)發(fā)時(shí)期、軟件維護(hù)時(shí)期。[考點(diǎn)]數(shù)據(jù)庫(kù)系統(tǒng)的組成與結(jié)構(gòu)

19.

RMAN是什么?RMAN的特點(diǎn)有哪些?正確答案:為了更好地實(shí)現(xiàn)數(shù)據(jù)庫(kù)的備份和恢復(fù)工作,Oracle提供了恢復(fù)管理器(RecoveryManager,RMAN)。RMAN是一個(gè)可以用來(lái)備份、恢復(fù)和還原數(shù)據(jù)庫(kù)的應(yīng)用程序,是隨Oracle服務(wù)器軟件一同安裝的Oracle工具軟件,通過(guò)執(zhí)行相應(yīng)的RM

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論