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

下載本文檔

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

文檔簡(jiǎn)介

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

OS級(jí)別刪除了數(shù)據(jù)文件后如何恢復(fù)?正確答案:若使用了“ALTERDATABASEDATAFILENOFFLINEDROP;”命令,則并不會(huì)刪除數(shù)(江南博哥)據(jù)文件,這個(gè)時(shí)候可以先ONLINE后再用“ALTERTABLESPACEXXXDROPDATAFILEN;”刪除。如果執(zhí)行“ALTERDATABASEDATAFILENOFFLINEDROP;”后并在OS級(jí)別刪除了數(shù)據(jù)文件,那么首先需要使用“ALTERDATABASECREATEDATAFILENAS'/tmp/ts_dd_lhr02.dbf';”來(lái)添加一個(gè)數(shù)據(jù)文件,然后再執(zhí)行RECOVER并ONLINE后再用“ALTERTABLESPACEXXXDROPDATAFILEN:”命令刪除。如果產(chǎn)生的日志文件已經(jīng)丟失,那么目標(biāo)文件就不能再恢復(fù)了,這個(gè)時(shí)候只能刪除表空間了,命令為“DROPTABLESPACEXXXINCLUDINGCONTENTSANDDATAFILES;”。[考點(diǎn)]RMAN

2.

存儲(chǔ)過(guò)程和函數(shù)的區(qū)別是什么?正確答案:存儲(chǔ)過(guò)程和函數(shù)都是存儲(chǔ)在數(shù)據(jù)庫(kù)中的程序,可由用戶直接或間接調(diào)用,它們都可以有輸出參數(shù),都是由一系列的SQL語(yǔ)句組成。

具體而言,存儲(chǔ)過(guò)程和函數(shù)的不同點(diǎn)如下:

1)標(biāo)識(shí)符不同。函數(shù)的標(biāo)識(shí)符為FUNCTION,存儲(chǔ)過(guò)程為PROCEDURE。

2)函數(shù)必須有返回值,且只能返回一個(gè)值,而存儲(chǔ)過(guò)程可以有多個(gè)返回值。

3)存儲(chǔ)過(guò)程無(wú)返回值類(lèi)型,不能將結(jié)果直接賦值給變量;函數(shù)有返回值類(lèi)型,在調(diào)用函數(shù)時(shí),除了用在SELECT語(yǔ)句中,在其他情況下必須將函數(shù)的返回值賦給一個(gè)變量。

4)函數(shù)可以在SELECT語(yǔ)句中直接使用,而存儲(chǔ)過(guò)程不能。例如,假設(shè)已有函數(shù)FUN_GETAVG()返回NUMBER類(lèi)型絕對(duì)值,那么,SQL語(yǔ)句“SELECTFUN_GETAVG(COL_A)FROMTABLE”是合法的。[考點(diǎn)]存儲(chǔ)過(guò)程

3.

在Oracle中,創(chuàng)建視圖的語(yǔ)法形式是怎樣的?正確答案:在Oracle中創(chuàng)建視圖的語(yǔ)法如下:

CREATE[ORREPLACE][FORCE]

VIEW

[SCHEMA.]VIEW_NAME

[(COLUMN1,COLUMN2,...)]AS

SELECT...

[WITHCHECKOPTION][CONSTRAINTCONSTRAINT_NAME]

[WITHREADONLY];[考點(diǎn)]視圖

4.

tkprof的作用是什么?正確答案:tkprof是一個(gè)調(diào)優(yōu)工具,用于格式化10046事件和SQL_TRACE生成的trace文件。需要注意的是,不能使用tkprof工具來(lái)處理10053事件產(chǎn)生的trace文件。在OS命令行中直接輸入tkprof就可以獲得一個(gè)完整的參數(shù)列表。tkprof的格式如下:

tkprof

tracefile

outputfile

[options][考點(diǎn)]性能診斷

5.

什么是存儲(chǔ)過(guò)程?正確答案:存儲(chǔ)過(guò)程是用戶定義的一系列sOL語(yǔ)句的集合,涉及特定表或其他對(duì)象的任務(wù),用戶可以調(diào)用存儲(chǔ)過(guò)程,而函數(shù)通常是數(shù)據(jù)庫(kù)已定義的方法,它接收參數(shù)并返回某種類(lèi)型的值,并且不涉及特定用戶表。

存儲(chǔ)過(guò)程用于執(zhí)行特定的操作,可以接收輸入?yún)?shù)、輸出參數(shù),返回單個(gè)或多個(gè)結(jié)果集。在創(chuàng)建存儲(chǔ)過(guò)程時(shí),既可以指定輸入?yún)?shù)(IN),也可以指定輸出參數(shù)(OUT),通過(guò)在存儲(chǔ)過(guò)程中使用輸入?yún)?shù),可以將數(shù)據(jù)傳遞到執(zhí)行部分;通過(guò)使用輸出參數(shù),可以將執(zhí)行結(jié)果傳遞到應(yīng)用環(huán)境。存儲(chǔ)過(guò)程可以使對(duì)數(shù)據(jù)庫(kù)的管理、顯示數(shù)據(jù)庫(kù)及其用戶信息的工作更加容易。[考點(diǎn)]存儲(chǔ)過(guò)程

6.

NoSQL興起的原因有哪些?正確答案:大數(shù)據(jù)技術(shù)近幾年發(fā)展十分迅速,在互聯(lián)網(wǎng)公司以及傳統(tǒng)公司都得到了廣泛的應(yīng)用。傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)在應(yīng)付Web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS(SocialNetworkSite,社交網(wǎng))類(lèi)型的Web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問(wèn)題,而非關(guān)系型的數(shù)據(jù)庫(kù)NoSQL(NotOnlySQL,泛指非關(guān)系型的數(shù)據(jù)庫(kù),意即“不僅僅是SQL”)則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展,NoSQL數(shù)據(jù)庫(kù)的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合以及多重?cái)?shù)據(jù)種類(lèi)帶來(lái)的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。NoSQL的擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)據(jù)存儲(chǔ),相對(duì)于鋪天蓋地的關(guān)系型數(shù)據(jù)庫(kù)運(yùn)用,這一概念無(wú)疑是一種全新的思維的注入。NoSQL的興起原因主要是隨著Web2.0時(shí)代的到來(lái),關(guān)系型數(shù)據(jù)庫(kù)越來(lái)越不能滿足互聯(lián)網(wǎng)應(yīng)用的需求,從而產(chǎn)生了NoSQL。這些需求包括:①數(shù)據(jù)的高并發(fā)讀寫(xiě);②數(shù)據(jù)的高可用性;③海量數(shù)據(jù)存儲(chǔ);④海量數(shù)據(jù)的實(shí)時(shí)分析等。[考點(diǎn)]NoSQL

7.

什么是自連接?正確答案:自連接(SelfJoin)是SQL語(yǔ)句中的一種特殊連接方式,使用自連接可以將自身表的一個(gè)鏡像當(dāng)作另一個(gè)表來(lái)對(duì)待,從而能夠得到一些特殊的數(shù)據(jù)。

例如,在SCOTT.EMP中的每一個(gè)員工都有自己的MGR(經(jīng)理),并且每一個(gè)經(jīng)理自身也是公司的員工,自身也有自己的經(jīng)理。如果需要將每一個(gè)員工自己的名字及其經(jīng)理的名字都查詢出來(lái),SQL語(yǔ)句應(yīng)該如何寫(xiě)呢?這個(gè)時(shí)候就可以用到自連接了。最終SQL如下:

SELECTA.ENAMEWORKER,B.ENAMEMANAGERFROMSCOTT.EMPA,SCOTT.EMPBWHEREA.MGR=B.EMPNOORDERBYA.ENAME;

對(duì)于非等值連接,理解起來(lái)比較簡(jiǎn)單,即表和表之間是通過(guò)非等值運(yùn)算符來(lái)連接的,例如,<>、BETWEEN...AND...等,如下:

SELECT

EMP.EMPNO,EMP.ENAME,DEPT.LOCFROMSCOTT.EMPINNERJOINSCOTT.DEPTONEMP.DEPTNO<>DEPT.DEPTNO

WHEREEMPNO=7788ORDERBYEMPNO;

8.

MySQL有哪些命令可以查看鎖?正確答案:有如下幾個(gè)命令:

(1)showprocesslist

“showprocesslist;”顯示哪些線程正在運(yùn)行。如果有SUPER權(quán)限,那么就可以看到所有線程。如果有線程在UPDATE或者INSERT某個(gè)表,此時(shí)進(jìn)程的status為updating或者sendingdata?!皊howprocesslist;”只列出前100條,如果想全列出,那么可以使用“showfullprocesslist;”。

下面是一些常見(jiàn)的狀態(tài)。狀態(tài)含義Checkingtable正在檢查數(shù)據(jù)表(這是自動(dòng)的)Closingtables正在將表中修改的數(shù)據(jù)刷新到磁盤(pán)中,同時(shí)正在關(guān)閉已經(jīng)用完的表。這是一個(gè)很快的操作,如果不是這樣的話,那么就應(yīng)該確認(rèn)磁盤(pán)空間是否已經(jīng)滿了或者磁盤(pán)是甭正處于重負(fù)中Connectout復(fù)制從服務(wù)器正在連接主服務(wù)器Copyingtotmptableondisk由于臨時(shí)結(jié)果集大于map_table_size,正在將臨時(shí)表從內(nèi)存存儲(chǔ)轉(zhuǎn)為磁盤(pán)存儲(chǔ),以此節(jié)省內(nèi)存Creatingtmptable正在創(chuàng)建臨時(shí)表以存放部分查詢結(jié)果Deletingfrommaintable服務(wù)器正在執(zhí)行多表刪除中的第一部分,剛刪除第一個(gè)表Deletingfromreferencetables服務(wù)器正在執(zhí)行多表刪除中的第二部分,正在刪除其他表的記錄Flushingtables正在執(zhí)行FLUSHTABLES,等待其他線程關(guān)閉數(shù)據(jù)表Kilied發(fā)送了一個(gè)kill請(qǐng)求給某線程,那么這個(gè)線程將會(huì)檢查kill標(biāo)志位,同時(shí)會(huì)放棄下一個(gè)kill請(qǐng)求。MySQL會(huì)在每次的主循環(huán)中檢查kill標(biāo)志位,不過(guò)有些情況下該線程可能會(huì)過(guò)一小段才能死掉。如果該線程被其他線程鎖住了,那么kill請(qǐng)求會(huì)在鎖釋放時(shí)馬上生效Locked被其他查詢鎖住了Sendingdata正在處理SELECT查詢的記錄,同時(shí)正在把結(jié)果發(fā)送給客戶端Sortingforgroup正在為GROUPBY做排序Sortingfororder正在為ORDERBY做排序Openingtables這個(gè)過(guò)程應(yīng)該會(huì)很快,除非受到其他因素的干擾。例如,在執(zhí)行完ALTERTABLE或LOCKTABLE語(yǔ)句以前,數(shù)據(jù)表無(wú)法被其他線程打開(kāi)。正嘗試打開(kāi)一個(gè)表Removingduplicates正在執(zhí)行一個(gè)SELECTDISTINCT方式的查詢,但是MySQL無(wú)法在前一個(gè)階段優(yōu)化掉那些重復(fù)的記錄。因此,MySQL需要再次去掉重復(fù)的記錄,然后再把結(jié)果發(fā)送給客戶端Reopentable獲得了對(duì)一個(gè)表的鎖,但是必須在表結(jié)構(gòu)修改之后才能獲得這個(gè)鎖。已經(jīng)釋放鎖,關(guān)閉數(shù)據(jù)表,正嘗試重新打開(kāi)數(shù)據(jù)表Repairbysorting修復(fù)指令正在排序以創(chuàng)建索引Repairwithkeycache修復(fù)指令正在利用索引緩存一個(gè)一個(gè)地創(chuàng)建新索引。它會(huì)比Repairbysorting慢些Searchingrowsforupdate正在將符合條件的記錄找出來(lái)以備更新。它必須在UPDATE要修改相關(guān)的記錄之前就完成了Sleeping正在等待客戶端發(fā)送新請(qǐng)求Systemlock正在等待取得一個(gè)外部的系統(tǒng)鎖。如果當(dāng)前沒(méi)有運(yùn)行多個(gè)mysqld服務(wù)器同時(shí)請(qǐng)求同一個(gè)表,那么可以通過(guò)增加--skip-extemal-locking參數(shù)來(lái)禁止外部系統(tǒng)鎖UpgradinglockINSERTDELAYED正在嘗試取得一個(gè)鎖表以插入新記錄Updating正在搜索匹配的記錄,并且修改它們Userlock正在等待GET_LOCK()Waitingfortables該線程得到通知,數(shù)據(jù)表結(jié)構(gòu)已經(jīng)被修改了,需要重新打開(kāi)數(shù)據(jù)表以取得新的結(jié)構(gòu)。然后,為了能重新打開(kāi)數(shù)據(jù)表,必須等到所有其他線程關(guān)閉這個(gè)表。以下幾種情況下會(huì)產(chǎn)生這個(gè)通知:FLUSHTABLEStb1_name,ALTERTABLE,RENAMETABLE,REPAIRTABLE,ANALYZETABLE或OPTIMIZETABLEWaitingforhandlerinsertINSERTDELAYED已經(jīng)處理完了所有待處理的插入操作,正在等待新的請(qǐng)求

(2)showopentables

這條命令能夠查看當(dāng)前有哪些表是打開(kāi)的。in_use列表示有多少線程正在使用某張表,name_locked表示表名是否被鎖,這一般發(fā)生在DROP或RENAME命令操作這張表時(shí)。所以這條命令不能查詢到當(dāng)前某張表是否有死鎖,誰(shuí)擁有表上的這個(gè)鎖等。常用命令如下:

showopentablefromdb_name;

showopentableswherein_use>0;

(3)showengineinnodbstatus\G;

這條命令查詢innodb引擎的運(yùn)行時(shí)信息。

(4)查看服務(wù)器的狀態(tài)

showstatuslike'%lock%';

(5)查詢INFORMATION_SCHEMA用戶下的表

通過(guò)INFORMATION_SHCEMA下的INNODB_LOCKS、INNODB_LOCK_WAITS和INNODB_TRX這三張表可以更新監(jiān)控當(dāng)前事務(wù)并且分析存在的鎖問(wèn)題。

查看當(dāng)前狀態(tài)產(chǎn)生的innodb鎖,僅在有鎖等待時(shí)有結(jié)果輸出:

SELECT*FROMINFORMATION_SCHEMA.INNODB_LOCKS;

查看當(dāng)前狀態(tài)產(chǎn)生的innodb鎖等待,僅在有鎖等待時(shí)有結(jié)果輸出:

SELECT*FROMINFORMATION_SCHEMA.INNODB_LOCK_WAITS;

當(dāng)前innodb內(nèi)核中的活躍(ACTIVE)事務(wù):

SELECT*FROMINFORMATION_SCHEMA.INNODB_TRX;[考點(diǎn)]鎖

9.

會(huì)話游標(biāo)有哪些屬性?正確答案:會(huì)話游標(biāo)有4個(gè)屬性,見(jiàn)下表。屬性類(lèi)型簡(jiǎn)介適用對(duì)象適用SQLSQL%FOUND布爾型最近的FETCH是否提取到數(shù)據(jù),表示一條SQL語(yǔ)句被執(zhí)行成功后受其影響而改變的記錄數(shù)是否大于或等于1,若是則賦值為T(mén)RUE,否則為FALSE。在一條DML語(yǔ)句被執(zhí)行前,SQL%FOUND的值是NULL隱式游標(biāo)、顯式游標(biāo)INSERT、DELETE、UPDATE、SELECT...INTO...SQL%NOTFOUND布爾型最近的FETCH是否沒(méi)有提取到數(shù)據(jù),表示一條SQL語(yǔ)句被執(zhí)行成功后受其影響而改變的記錄數(shù)是否為0,若是則賦值為T(mén)RUE,否則為FALSE。在一條DML語(yǔ)句被執(zhí)行前,SQL%NOTFOUND的值是NULL隱式游標(biāo)、顯式游標(biāo)SQL%ROWCOUNT數(shù)值型表示最近的一條SQL語(yǔ)句成功執(zhí)行后受其影響而改變的記錄的數(shù)最,后續(xù)執(zhí)行的SQL會(huì)覆蓋SQL%ROWCOUNT的值隱式游標(biāo)、顯式游標(biāo)SQL%ISOPEN布爾型游標(biāo)是否打開(kāi),當(dāng)游標(biāo)打開(kāi)時(shí)返回TRUE。對(duì)于隱式游標(biāo)而言,SQL%ISOPEN的值永遠(yuǎn)是FALSE顯式游標(biāo)

當(dāng)執(zhí)行一條DML語(yǔ)句后,DML語(yǔ)句的結(jié)果保存在這4個(gè)游標(biāo)屬性中,這些屬性用于控制程序流程或者了解程序的狀態(tài)。當(dāng)運(yùn)行DML語(yǔ)句時(shí),PL/SQL打開(kāi)一個(gè)內(nèi)建游標(biāo)并處理結(jié)果。在這些屬性中,SQL%FOUND和SOL%NOTFOUND是布爾值,SQL%ROWCOUNT是整數(shù)值。需要注意的是,若游標(biāo)屬于隱式游標(biāo),則在PL/SOL中可以直接使用上表中的屬性;若游標(biāo)屬于顯式游標(biāo),則上表中的屬性里“SQL%”需要替換為自定義顯式游標(biāo)的名稱。上表中的這4個(gè)屬性對(duì)于動(dòng)態(tài)游標(biāo)依然適用。[考點(diǎn)]游標(biāo)

10.

什么是數(shù)據(jù)庫(kù)系統(tǒng)的型和值?正確答案:型(Type)是指一類(lèi)數(shù)據(jù)的結(jié)構(gòu)和屬性的說(shuō)明,值(Value)是型的一個(gè)具體賦值。例如:

記錄型:(學(xué)號(hào),姓名)

記錄值:(08450226,李多多)[考點(diǎn)]數(shù)據(jù)庫(kù)系統(tǒng)的組成與結(jié)構(gòu)

11.

如何生成日期格式的文件?正確答案:在Linux/Unix上,使用“'date+%y%m%d'或$(date+%y%m%d)”,如:

touchexp_table_name_'date+%y%m%d'.dmp

DATE=$(date+%y%m%d)

或者:

DATE=$(date+%Y%m%d--date'1daysago')#獲取昨天或多天前的日期

在Windows上,使用“%date:~4,10%”,其中4是開(kāi)始字符,10是提取長(zhǎng)度,表示從date生成的日期中,提取從4開(kāi)始、長(zhǎng)度是10的串。如果想得到更精確的時(shí)間,那么在Windows上面還可以使用time。[考點(diǎn)]SHELL腳本系列

12.

E-R圖向關(guān)系模型的轉(zhuǎn)換一般遵循哪些原則?正確答案:E-R圖向關(guān)系模型的轉(zhuǎn)換一般遵循如下原則:

1)一個(gè)實(shí)體型轉(zhuǎn)換為一個(gè)關(guān)系模式。實(shí)體的屬性就是關(guān)系的屬性。實(shí)體的碼就是關(guān)系的碼。

例如,學(xué)生實(shí)體可以轉(zhuǎn)換為如下關(guān)系模式,其中,學(xué)號(hào)為學(xué)生關(guān)系的碼:

學(xué)生(學(xué)號(hào),姓名,出生日期,所在系,年級(jí),平均成績(jī))。同樣,性別、宿舍、班級(jí)、檔案材料、教師、課程、教室、教科書(shū)都分別轉(zhuǎn)換為一個(gè)關(guān)系模式。

2)一個(gè)聯(lián)系轉(zhuǎn)化為一個(gè)關(guān)系模式,與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系的屬性轉(zhuǎn)化為關(guān)系的屬性。該關(guān)系的碼有如下3種情況:

①若聯(lián)系為1:1,則每個(gè)實(shí)體的碼均是該關(guān)系的候選碼。

②若聯(lián)系為1:n,則關(guān)系的碼為n端實(shí)體的碼。

③若聯(lián)系為m:n,則關(guān)系的碼為諸實(shí)體碼的組合。

下面分別來(lái)講解這3種情況。

①聯(lián)系為1:1

一個(gè)1:1聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與任意一端對(duì)應(yīng)的關(guān)系模式合并。

a)如果轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,那么與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,每個(gè)實(shí)體的碼均是該關(guān)系的候選碼。

b)如果與某一端對(duì)應(yīng)的關(guān)系模式合并,那么需要在該關(guān)系模式的屬性中加入另一個(gè)關(guān)系模式的碼和聯(lián)系本身的屬性。

②聯(lián)系為1:n

一個(gè)1:n聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與n端對(duì)應(yīng)的關(guān)系模式合并。

a)如果轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,那么與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,而關(guān)系的碼為n端實(shí)體的碼。

b)如果與n端對(duì)應(yīng)的關(guān)系模式合并,那么在n端實(shí)體對(duì)應(yīng)模式中加入1端實(shí)體所對(duì)應(yīng)關(guān)系模式的碼,以及聯(lián)系本身的屬性。而關(guān)系的碼為n端實(shí)體的碼。

③聯(lián)系為m:n

一個(gè)m:n聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式。與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,而關(guān)系的碼為各實(shí)體碼的組合。

3)同一實(shí)體集的實(shí)體間的聯(lián)系,即自聯(lián)系,也可按上述1:1、1:n和m:n三種情況分別處理。

例如,如果教師實(shí)體集內(nèi)部存在領(lǐng)導(dǎo)與被領(lǐng)導(dǎo)的1:n自聯(lián)系,那么可以將該聯(lián)系與教師實(shí)體合并,這時(shí)主鍵職工號(hào)將多次出現(xiàn),但作用不同,可用不同的屬性名加以區(qū)分。例如,在合并后的關(guān)系模式中,主鍵仍為職工號(hào),再增設(shè)一個(gè)“系主任”屬性,存放相應(yīng)系主任的職工號(hào)。

4)具有相同碼的關(guān)系模式可合并。

為了減少系統(tǒng)中的關(guān)系個(gè)數(shù),如果兩個(gè)關(guān)系模式具有相同的主鍵,那么可以考慮將它們合并為一個(gè)關(guān)系模式。合并方法是將其中一個(gè)關(guān)系模式的全部屬性加入另一個(gè)關(guān)系模式中,然后去掉其中的同義屬性(可能同名也可能不同名),并適當(dāng)調(diào)整屬性的次序。[考點(diǎn)]E-R模型

13.

MySQL和Oracle如何修改命令提示符?正確答案:MySQL的默認(rèn)提示符為“mysql”,可以使用prompt命令來(lái)修改,如下:

全局:exportMYSQL_PS1="(\u@\h)[\d]>"

蘭前會(huì)話:prompt(\u@\h)[\d]\R:\m:\s>\_

其中,“\u”代表用戶名,“\h”代表服務(wù)器地址,“\d”代表當(dāng)前數(shù)據(jù)庫(kù),“\R:\m:\s”代表時(shí)分秒,例如,23:10:10。

Oracle的默認(rèn)命令提示符為“SQL”,可以使用“SETSQLPROMPT”命令來(lái)修改,如下:

SQL>SHOWSQLPROMPT

sqlprompt"SQL>"

SQL>SETSQLPROMPT"_USEW'@'_CONNECT_IDENTIFIER>"

SYS@lhrdb>

SYS@lhrdb>SHOWSQLPROMPT

sqlprompt"_user'@'_connect_identifier>"

在以上結(jié)果中,SYS表示用戶,lhrdb表示數(shù)據(jù)庫(kù)。注意,以上提示符的“>”后有一個(gè)空格。

如果想全局生效,那么可以修改文件:$ORACLE_HOME/sqlplus/admin/glogin.sql。在glogin.sql文件中添加如下的內(nèi)容:

SETSQLPROMPT"_USER'@'_CONNECT_IDENTIFIER>"

這樣,每次登錄SQL*Plus的時(shí)候,SQL提示符就會(huì)變?yōu)樵O(shè)置的內(nèi)容。

14.

如何查詢表和索引的歷史統(tǒng)計(jì)信息?正確答案:從Oracle10g開(kāi)始,當(dāng)收集表的統(tǒng)計(jì)信息的時(shí)候,舊的統(tǒng)計(jì)數(shù)據(jù)被保留,如果因?yàn)樾碌慕y(tǒng)計(jì)信息而出現(xiàn)性能問(wèn)題,舊的統(tǒng)計(jì)信息就可以被恢復(fù)。歷史統(tǒng)計(jì)信息保存在以下幾張表中:

1)WRI$_OPTSTAT_TAB_HISTORY表的統(tǒng)計(jì)信息。

2)WRI$_OPTSTAT_IND_HISTORY索引的統(tǒng)計(jì)信息。

3)WRI$_OPTSTAT_HISTHEAD_HISTORY列的統(tǒng)計(jì)信息。

4)WRI$_OPTSTAT_HISTGRM_HISTORY直方圖的信息。

從視圖DBA_TAB_STATS_HISTORY可以查詢歷史收集統(tǒng)計(jì)信息的時(shí)間,但是不能查詢到行數(shù),所以需要結(jié)合基表來(lái)查詢,查詢的SQL語(yǔ)句如下:

SELECTB.OWNER,B,OBJECT_NAMETABLE_NAME,TO_CHAR(D.ANALYZETIME,'YYYY-MM-DDHH24:MI:SS')LAST_ANALYZETIME,

TO_CHAR(D.SAVTIME,'YYYY-MM-DDHH24:MI:SS')CURR_ANALYZETIME,D.ROWCNT

FROMSYS.WRI$_OPTSTAT_TAB_HISTORYD,DBA_OBJECTSB

WHERE

D.OBJ#=B.OBJECT_IDANDB.OBJECTNAMEIN('TEST_STAT','TPCCBOKBAL_TMP','TPCCBOKBALJN','PK_TPCCBOKBAL')

ORDERBYD.OBJ#,D.SAVTIME;

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

SELECTB.OWNER,B.OBJECT_NAMEINDEX_NAME,TO_CHAR(D.ANALYZETIME,'YYYY-MM-DDHH24:MI:SS')LAST_ANALYZEIIME,

TO_CHAR(D.SAVTIME,'YYYY-MM-DDHH24:MI:SS')CURR_ANALYZETIME,D.ROWCNT,D.BLEVEL,D.LEAFCNT,D.DISTKEY,D.CLUFAC

FROMSYS.WRIS_OPTSTAT_IND_HISTORYD,DBA_OBJECTSB

WHERED.OBJ#=B.OBJECT_IDANDB.OBJECT_NAMEIN('IND_TEST)

ORDERBYD.OBJ#,D.SAVTIME;

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

EXECUTEDBMS_STATS.ALTER_STATSHISTORY_RETENTION(XX);

--xx是保留的天數(shù)

注意:這些統(tǒng)計(jì)信息在SYSAUX表空間中占有額外的存儲(chǔ)開(kāi)銷(xiāo),所以應(yīng)該注意并防止統(tǒng)計(jì)信息將表空間填滿。

SELECTDBMS_STATS.GET_STATS_HISTORY_RETENTIONFROMDUAL;--查詢統(tǒng)計(jì)信息當(dāng)前保留的天數(shù)。[考點(diǎn)]統(tǒng)計(jì)信息

15.

哪個(gè)命令可以查看所有數(shù)據(jù)庫(kù)?正確答案:運(yùn)行命令:showdatabases;。[考點(diǎn)]連接數(shù)據(jù)庫(kù)

16.

視圖的作用有哪些?正確答案:同真實(shí)的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。但是,視圖并不在數(shù)據(jù)庫(kù)中以存儲(chǔ)的數(shù)據(jù)值集形式存在。行和列數(shù)據(jù)來(lái)自由定義視圖的查詢所引用的表,并且在引用視圖時(shí)動(dòng)態(tài)生成。對(duì)其中所引用的基礎(chǔ)表而言,視圖的作用類(lèi)似于篩選。定義視圖可以來(lái)自當(dāng)前或其他數(shù)據(jù)庫(kù)的一個(gè)或多個(gè)表,或者其他視圖。分布式查詢也可用于定義使用多個(gè)異類(lèi)源數(shù)據(jù)的視圖。如果有幾臺(tái)不同的服務(wù)器分別存儲(chǔ)不同地區(qū)的數(shù)據(jù),那么當(dāng)需要將這些服務(wù)器上相似結(jié)構(gòu)的數(shù)據(jù)組合起來(lái)的時(shí)候,這種方式就非常有用。

數(shù)據(jù)庫(kù)視圖的作用有以下幾點(diǎn):

1)隱藏了數(shù)據(jù)的復(fù)雜性,可以作為外模式,提供了一定程度的邏輯獨(dú)立性。

2)有利于控制用戶對(duì)表中某些列或某些機(jī)密數(shù)據(jù)的訪問(wèn),提高了數(shù)據(jù)的安全性。

3)能夠簡(jiǎn)化結(jié)構(gòu),執(zhí)行復(fù)雜查詢操作。

4)使用戶能以多種角度、更靈活地觀察和共享同一數(shù)據(jù)。[考點(diǎn)]視圖

17.

數(shù)據(jù)獨(dú)立性包括哪幾個(gè)方面?正確答案:數(shù)據(jù)獨(dú)立性包括物理獨(dú)立性和邏輯獨(dú)立性兩個(gè)方面。物理獨(dú)立性是指用戶的應(yīng)用程序與存儲(chǔ)在磁盤(pán)上的數(shù)據(jù)庫(kù)中的數(shù)據(jù)是相互獨(dú)立的;邏輯獨(dú)立性是指用戶的應(yīng)用程序與數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)是相互獨(dú)立的。[考點(diǎn)]數(shù)據(jù)庫(kù)安全

18.

如何捕獲存儲(chǔ)過(guò)程中出現(xiàn)異常的行號(hào)?正確答案:使用函數(shù)DBMS_UTILITY.FORMAT_ERROR_BACKTRACE可以獲取到出現(xiàn)異常時(shí)候的程序的行號(hào),而函數(shù)DBMS_UTILITY.FORMAT_ERROR_STACK可以獲取到出現(xiàn)異常時(shí)的錯(cuò)誤信息,作用和SQLERRM一樣。[考點(diǎn)]程序處理

19.

什么是ORA-01555?正確答案:在告警日志中記錄的ORA-01555(snapshottooold,快照過(guò)舊)報(bào)錯(cuò)信息類(lèi)似:

ORA-01555:snapshottooold:rollbacksegmentnumber107withname"_SYSSMU107_1253191395$"toosmall

默認(rèn)情況,ORA-01555錯(cuò)誤發(fā)生時(shí)不會(huì)自動(dòng)生成跟蹤日志文件,但是可以在系統(tǒng)里設(shè)置下面的事件,讓它在錯(cuò)誤發(fā)生的同時(shí)生成跟蹤日志文件:

altersystemsetevents'1555tracenameerrorstacklevel3';

由于回滾段是循環(huán)使用的,當(dāng)事務(wù)提交以后,該事務(wù)占用的回滾段事務(wù)會(huì)被標(biāo)記為非活動(dòng),此時(shí)的回滾段空間可以被覆蓋重用。那么問(wèn)題就出現(xiàn)了,如果一個(gè)查詢需要使用被覆蓋的回滾段構(gòu)造前鏡像(BeforeImage)實(shí)現(xiàn)一致性讀,那么此時(shí)就會(huì)出現(xiàn)Oracle著名的ORA-01555(snapshottooold,快照過(guò)舊)錯(cuò)誤。需要注意的是,ORA-01555錯(cuò)誤是一個(gè)安全的錯(cuò)誤,它不會(huì)造成數(shù)據(jù)丟失或者損壞,只是會(huì)讓收到該錯(cuò)誤的查詢無(wú)法繼續(xù)。

ORA-01555錯(cuò)誤的另外一個(gè)原因是延遲塊清除(DelayedBlockCleanout)。當(dāng)一個(gè)查詢觸發(fā)延遲塊清除時(shí),Oracle需要去查詢回滾段獲得該事務(wù)的提交SCN。如果事務(wù)的前鏡像信息已經(jīng)被覆蓋,并且查詢SCN也小于回滾段中記錄的最小提交SCN,那么Oracle將無(wú)從判斷查詢SCN和事務(wù)提交SCN的大小,此時(shí)出現(xiàn)延遲塊清除會(huì)導(dǎo)致ORA-01555錯(cuò)誤。

還有一種導(dǎo)致ORA-01555錯(cuò)誤的情況出現(xiàn)在使用SQL*Loader直接方式加載(direct=true)數(shù)據(jù)時(shí),由于不產(chǎn)生Redo和Undo信息,Oracle直接指定CACHEDCOMMITSCN進(jìn)行加載數(shù)據(jù),在訪問(wèn)這些數(shù)據(jù)時(shí),有時(shí)會(huì)產(chǎn)生ORA-01555錯(cuò)誤。

知道了ORA-01555錯(cuò)誤產(chǎn)生的原因就可以總結(jié)出以下方法來(lái)解決ORA-01555錯(cuò)誤問(wèn)題:

1)擴(kuò)大回滾段。因?yàn)榛貪L段是循環(huán)使用的,如果回滾段足夠大,那么被提交的數(shù)據(jù)信息就能保存足夠長(zhǎng)的時(shí)間,而那些大事務(wù)就可以完成一致性讀取。

2)增加UNDO_RETENTION時(shí)間。在UNDO_RETENTION規(guī)定的時(shí)間內(nèi),任何其他事務(wù)都不能覆蓋這些數(shù)據(jù)。

3)優(yōu)化相關(guān)查詢語(yǔ)句,減少一致性讀。減少查詢語(yǔ)句的一致性讀,也可以降低讀取不到回滾段數(shù)據(jù)的風(fēng)險(xiǎn)。

4)減少不必要的事務(wù)提交。提交的事務(wù)越少,產(chǎn)生的回滾段信息就越少。

5)對(duì)大事務(wù)指定回滾段。通過(guò)以下語(yǔ)句可以指定事務(wù)的回滾段:

SETTRANSACTIONUSEROLLBACKSEGMENTorllback_segment;

給大事務(wù)指定回滾段,即降低大事務(wù)回滾信息覆蓋其他事務(wù)的回滾信息的概率,又降低了它自身的回滾信息被覆蓋的概率。大事務(wù)的存在,往往是ORA-01555錯(cuò)誤產(chǎn)生的誘因。

6)使用游標(biāo)時(shí)盡量使用顯式游標(biāo),并且只在需要的時(shí)候打開(kāi)游標(biāo),同時(shí)將所有可以在游標(biāo)外做的操作從游標(biāo)循環(huán)中拿出。當(dāng)游標(biāo)打開(kāi)時(shí),查詢就開(kāi)始了,直到游標(biāo)關(guān)閉。減少游標(biāo)的打開(kāi)時(shí)間,就減少了ORA-01555錯(cuò)誤發(fā)生的概率。

7)使用回滾表空間自動(dòng)管理?;貪L表空間自動(dòng)管理是Oracle9i后的特性,Oracle自動(dòng)管理回滾段的創(chuàng)建和回收,并且Oracle1

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論