版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫基礎(chǔ)(面試常見題)一、數(shù)據(jù)庫基礎(chǔ)1.數(shù)據(jù)抽象:物理抽象、概念抽象、視圖級抽象,內(nèi)模式、模式、外模式2.SQL語言涉及數(shù)據(jù)定義、數(shù)據(jù)操縱(Dat(yī)aManipulat(yī)ion),數(shù)據(jù)控制(DataControl)數(shù)據(jù)定義:Creat(yī)eTable,AlterTable,DropTable,Craete/DropIndex等數(shù)據(jù)操縱:Select,insert,updat(yī)e,delete,數(shù)據(jù)控制:grant,revoke3.SQL常用命令:CREATETABLEStudent(IDNUMBERPRIMARYKEY,NAMEVARCHAR2(50)NOTNULL);//建表CREATEVIEWview_nameASSelect*FROMTable_name;//建視圖CreateUNIQUEINDEXindex_nameONTableName(col_name);//建索引INSERTINTO(shè)tablename{column1,column2,…}values(exp1,exp2,…);//插入INSERTINTOViewname{column1,column2,…}values(exp1,exp2,…);//插入視圖實際影響表UPDATEtablenameSETname=’zang3’condition;//更新數(shù)據(jù)DELETEFROMTablenameWHEREcondition;//刪除GRANT(Select,delete,…)ON(對象)TOUSER_NAME[WITHGRANTO(shè)PTION];//授權(quán)REVOKE(權(quán)限表)ON(對象)FROMUSER_NAME[WITHREVOKEOPTION]//撤權(quán)列出工作人員及其領(lǐng)導(dǎo)的名字:SelectE.NAME,S.NAMEFROMEMPLOYEEESWHEREE.SUPERName=S.Name4.視圖:5.完整性約束:實體完整性、參照完整性、用戶定義完整性6.第三范式:1NF:每個屬性是不可分的。2NF:若關(guān)系R是1NF,且每個非主屬性都完全函數(shù)依賴于R的鍵。例SLC(SID#,CourceID#,SNAME,Grade),則不是2NF;3NF:若R是2NF,且它的任何非鍵屬性都不傳遞依賴于任何候選鍵。7.ER(實體/聯(lián)系)模型8.索引作用9.事務(wù):是一系列的數(shù)據(jù)庫操作,是數(shù)據(jù)庫應(yīng)用的基本邏輯單位。事務(wù)性質(zhì):原子性、?原子性。即不可分割性,事務(wù)要么所有被執(zhí)行,要么就所有不被執(zhí)行。?一致性或可串性。事務(wù)的執(zhí)行使得數(shù)據(jù)庫從一種對的狀態(tài)轉(zhuǎn)換成另一種對的狀態(tài)?隔離性。在事務(wù)對的提交之前,不允許把該事務(wù)對數(shù)據(jù)的任何改變提供應(yīng)任何其他事務(wù),?持久性。事務(wù)對的提交后,其結(jié)果將永久保存在數(shù)據(jù)庫中,即使在事務(wù)提交后有了其他故障,事務(wù)的解決結(jié)果也會得到保存。10.鎖:共享鎖、互斥鎖兩段鎖協(xié)議:階段1:加鎖階段階段2:解鎖階段11.死鎖及解決:事務(wù)循環(huán)等待數(shù)據(jù)鎖,則會死鎖。死鎖解決:防止死鎖協(xié)議,死鎖恢復(fù)機制12.存儲過程:存儲過程就是編譯好了的一些sql語句。1.存儲過程由于SQL語句已經(jīng)預(yù)編繹過了,因此運營的速度比較快。2.可保證數(shù)據(jù)的安全性和完整性。通過存儲過程可以使沒有權(quán)限的用戶在控制之下間接地存取數(shù)據(jù)庫,從而保證數(shù)據(jù)的安全。通過存儲過程可以使相關(guān)的動作在一起發(fā)生,從而可以維護數(shù)據(jù)庫的完整性。3.可以減少網(wǎng)絡(luò)的通信量。存儲過程重要是在服務(wù)器上運營,減少對客戶機的壓力。4:存儲過程可以接受參數(shù)、輸出參數(shù)、返回單個或多個結(jié)果集以及返回值??梢韵虺绦蚍祷劐e誤因素5:存儲過程可以包含程序流、邏輯以及對數(shù)據(jù)庫的查詢。同時可以實體封裝和隱藏了數(shù)據(jù)邏輯。
13.觸發(fā)器:當(dāng)滿足觸發(fā)器條件,則系統(tǒng)自動執(zhí)行觸發(fā)器的觸發(fā)體。觸發(fā)時間:有before,after.觸發(fā)事件:有insert,update,delete三種。觸發(fā)類型:有行觸發(fā)、語句觸發(fā)14.內(nèi)聯(lián)接,外聯(lián)接區(qū)別?內(nèi)連接是保證兩個表中所有的行都要滿足連接條件,而外連接則不然。在外連接中,某些不滿條件的列也會顯示出來,也就是說,只限制其中一個表的行,而不限制另一個表的行。分左連接、右連接、全連接三種
SQL試題2
一、教師號星期號是否有課12有13有21有32有`12有寫一條sql語句讓你變?yōu)檫@樣的表教師號星期一星期二星期三1212131各星期下的數(shù)字表達:相應(yīng)的教師在星期幾已經(jīng)排的課數(shù)
二、書表(books)book_id,book_name,creatdat(yī)e,Lastmodifydate,decription001,三個人的世界,2023-02-02,2023-07-07,NULL作者表(authors)A_id,A_name01,王紛02,李尚03,泰和部門表(depts)d_id,d_name001,編輯一部002,編輯二部003,編輯三部書和作者關(guān)聯(lián)表(bookmap)book_id,A_id001,01001,02001,03部門和作者關(guān)聯(lián)表(depmap)d_id,a_id001,01002,02003,03找出每個部門的所寫的總書兩,比如,一本書有3個人寫,假如三個人在不同的部門,則每個部門的總數(shù)量就是1.最后結(jié)果如下:部門,書量編輯一部,1編輯二部,1編輯三部,1三、兩個表情況表名:wu_planID
plan
model
corp_code
plannum
prixis1
00001
exx22
nokia
2023
02
00002
lc001
sony
3000
0表名:wu_bomID
plan
pact
amount
1
00001
aa1
3002
00001
aa2
2003
00002
bb1
5004
00002
bb2
8005
00002
bb3
400查詢這兩個表中plan唯一,每一個plan中,amount最少的,plannum大于prixis的記錄結(jié)果是:ID
plan
model
corp_code
plannum
prixis
pact
amount1
00001
exx22
nokia
2023
0
a2
2002
00002
lc001
sony
3000
0
bb3
400四、表1結(jié)構(gòu)如下:部門條碼品名銷售額銷售數(shù)量銷售日期表2結(jié)構(gòu)如下課別部門規(guī)定:先按部門排序,再按銷售額、銷售數(shù)量排序檢索出某個課別每個部門一個時期內(nèi)的商品銷售額的前三名,如查詢01課別2023年4月15日到2023年4月22日每個部門一個周內(nèi)的商品銷售額合計的前三名
SQL面試題目匯總1.觸發(fā)器的作用?
答:觸發(fā)器是一中特殊的存儲過程,重要是通過事件來觸發(fā)而被執(zhí)行的。它可以強化約束,來維護數(shù)據(jù)的完整性和一致性,可以跟蹤數(shù)據(jù)庫內(nèi)的操作從而不允許未經(jīng)許可的更新和變化??梢月?lián)級運算。如,某表上的觸發(fā)器上包含對另一個表的數(shù)據(jù)操作,而該操作又會導(dǎo)致該表觸發(fā)器被觸發(fā)。2。什么是存儲過程?用什么來調(diào)用?答:存儲過程是一個預(yù)編譯的SQL語句,優(yōu)點是允許模塊化的設(shè)計,就是說只需創(chuàng)建一次,以后在該程序中就可以調(diào)用多次。假如某次操作需要執(zhí)行多次SQL,使用存儲過程比單純SQL語句執(zhí)行要快??梢杂靡粋€命令對象來調(diào)用存儲過程。3。索引的作用?和它的優(yōu)點缺陷是什么?答:索引就一種特殊的查詢表,數(shù)據(jù)庫的搜索引擎可以運用它加速對數(shù)據(jù)的檢索。它很類似與現(xiàn)實生活中書的目錄,不需要查詢整本書內(nèi)容就可以找到想要的數(shù)據(jù)。索引可以是唯一的,創(chuàng)建索引允許指定單個列或者是多個列。缺陷是它減慢了數(shù)據(jù)錄入的速度,同時也增長了數(shù)據(jù)庫的尺寸大小。3。什么是內(nèi)存泄漏?答:一般我們所說的內(nèi)存泄漏指的是堆內(nèi)存的泄漏。堆內(nèi)存是程序從堆中為其分派的,大小任意的,使用完后要顯示釋放內(nèi)存。當(dāng)應(yīng)用程序用關(guān)鍵字new等創(chuàng)建對象時,就從堆中為它分派一塊內(nèi)存,使用完后程序調(diào)用free或者delete釋放該內(nèi)存,否則就說該內(nèi)存就不能被使用,我們就說該內(nèi)存被泄漏了。4。維護數(shù)據(jù)庫的完整性和一致性,你喜歡用觸發(fā)器還是自寫業(yè)務(wù)邏輯?為什么?答:我是這樣做的,盡也許使用約束,如check,主鍵,外鍵,非空字段等來約束,這樣做效率最高,也最方便。另一方面是使用觸發(fā)器,這種方法可以保證,無論什么業(yè)務(wù)系統(tǒng)訪問數(shù)據(jù)庫都可以保證數(shù)據(jù)的完整新和一致性。最后考慮的是自寫業(yè)務(wù)邏輯,但這樣做麻煩,編程復(fù)雜,效率低下。5。什么是事務(wù)?什么是鎖?答:事務(wù)就是被綁定在一起作為一個邏輯工作單元的SQL語句分組,假如任何一個語句操作失敗那么整個操作就被失敗,以后操作就會回滾到操作前狀態(tài),或者是上有個節(jié)點。為了保證要么執(zhí)行,要么不執(zhí)行,就可以使用事務(wù)。要將有組語句作為事務(wù)考慮,就需要通過ACID測試,即原子性,一致性,隔離性和持久性。
鎖:在所以的DBMS中,鎖是實現(xiàn)事務(wù)的關(guān)鍵,鎖可以保證事務(wù)的完整性和并發(fā)性。與現(xiàn)實生活中鎖同樣,它可以使某些數(shù)據(jù)的擁有者,在某段時間內(nèi)不能使用某些數(shù)據(jù)或數(shù)據(jù)結(jié)構(gòu)。當(dāng)然鎖還分級別的。6。什么叫視圖?游標(biāo)是什么?答:視圖是一種虛擬的表,具有和物理表相同的功能??梢詫σ晥D進行增,改,查,操作,試圖通常是有一個表或者多個表的行或列的子集。對視圖的修改不影響基本表。它使得我們獲取數(shù)據(jù)更容易,相比多表查詢。
游標(biāo):是對查詢出來的結(jié)果集作為一個單元來有效的解決。游標(biāo)可以定在該單元中的特定行,從結(jié)果集的當(dāng)前行檢索一行或多行。可以對結(jié)果集當(dāng)前行做修改。一般不使用游標(biāo),但是需要逐條解決數(shù)據(jù)的時候,游標(biāo)顯得十分重要。7。為管理業(yè)務(wù)培訓(xùn)信息,建立3個表:
S(S#,SN,SD,SA)S#,SN,SD,SA分別代表學(xué)號,學(xué)員姓名,所屬單位,學(xué)員年齡
C(C#,CN)C#,CN分別代表課程編號,課程名稱
SC(S#,C#,G)S#,C#,G分別代表學(xué)號,所選的課程編號,學(xué)習(xí)成績
(1)使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修課程名稱為’稅收基礎(chǔ)’的學(xué)員學(xué)號和姓名?
答案:selects#,snfromswhereS#in(selectS#fromc,scwherec.c#=sc.c#andcn=’稅收基礎(chǔ)’)
(2)使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修課程編號為’C2’的學(xué)員姓名和所屬單位?答:selectsn,sdfroms,scwheres.s#=sc.s#andsc.c#=’c2’
(3)使用標(biāo)準(zhǔn)SQL嵌套語句查詢不選修課程編號為’C5’的學(xué)員姓名和所屬單位?答:selectsn,sdfromswheres#notin(selects#fromscwherec#=’c5’)
(4)查詢選修了課程的學(xué)員人數(shù)答:select學(xué)員人數(shù)=count(distincts#)fromsc
(5)查詢選修課程超過5門的學(xué)員學(xué)號和所屬單位?答:selectsn,sdfromswheres#in(selects#fromscgroupbys#havingcount(distinctc#)>5)目前在職場中很難找到非常合格的數(shù)據(jù)庫開發(fā)人員。有人說:“SQL開發(fā)是一門語言,它很容易學(xué),但是很難掌握?!比A為在面試過程中多次碰到兩道SQL查詢的題目,一是查詢A(ID,Name)表中第31至40條記錄,ID作為主鍵也許是不是連續(xù)增長的列,完整的查詢語句如下:
selecttop10*fromAwhereID>(selectmax(ID)from(selecttop30IDfromAorderbyA)T)orderbyA
此外一道題目的規(guī)定是查詢表A中存在ID反復(fù)三次以上的記錄,完整的查詢語句如下:select*from(selectcount(ID)ascountfromtablegroupbyID)TwhereT.count>3
以上兩道題目非常有代表意義,望各位把自己碰到的有代表的查詢都貼上來。createtabletesttable1(idintIDENTITY,departmentvarchar(12))select*fromtesttable1insertintotesttable1values('設(shè)計')insertintotesttable1values('市場')insertintotesttable1values('售后')/*結(jié)果iddepartment1
設(shè)計2
市場3
售后*/creat(yī)etabletesttable2(idintIDENTITY,dptIDint,namevarchar(12))insertintotesttable2values(1,'張三')insertintotesttable2values(1,'李四')insertintotesttable2values(2,'王五')insertintotesttable2values(3,'彭六')insertintotesttable2values(4,'陳七')/*用一條SQL語句,怎么顯示如下結(jié)果iddptIDdepartmentname1
1
設(shè)計
張三2
1
設(shè)計
李四3
2
市場
王五4
3
售后
彭六5
4
黑人
陳七*/答案是:SELECTtesttable2.*,ISNULL(department,'黑人')FROMtesttable1rightjointesttable2ontesttable2.dptID=testtable1.ID在面試應(yīng)聘的SQLServer數(shù)據(jù)庫開發(fā)人員時,我運用了一套標(biāo)準(zhǔn)的基準(zhǔn)技術(shù)問題。下面這些問題是我覺得可以真正有助于淘汰不合格應(yīng)聘者的問題。它們按照從易到難的順序排列。當(dāng)你問到關(guān)于主鍵和外鍵的問題時,后面的問題都十分有難度,由于答案也許會更難解釋和說明,特別是在面試的情形下。你能向我簡要敘述一下SQLServer2023中使用的一些數(shù)據(jù)庫對象嗎?你希望聽到的答案涉及這樣一些對象:表格、視圖、用戶定義的函數(shù),以及存儲過程;假如他們還可以提到像觸發(fā)器這樣的對象就更好了。假如應(yīng)聘者不能回答這個基本的問題,那么這不是一個好兆頭。NULL是什么意思?NULL(空)這個值是數(shù)據(jù)庫世界里一個非常難纏的東西,所以有不少應(yīng)聘者會在這個問題上跌跟頭您也不要覺得意外。NULL這個值表達UNKNOWN(未知):它不表達“”(空字符串)。假設(shè)您的SQLServer數(shù)據(jù)庫里有ANSI_NULLS,當(dāng)然在默認(rèn)情況下會有,對NULL這個值的任何比較都會生產(chǎn)一個NULL值。您不能把任何值與一個UNKNOWN值進行比較,并在邏輯上希望獲得一個答案。您必須使用ISNULL操作符。什么是索引?SQLServer2023里有什么類型的索引?任何有經(jīng)驗的數(shù)據(jù)庫開發(fā)人員都應(yīng)當(dāng)可以很容易地回答這個問題。一些經(jīng)驗不太多的開發(fā)人員可以回答這個問題,但是有些地方會說不清楚。簡樸地說,索引是一個數(shù)據(jù)結(jié)構(gòu),用來快速訪問數(shù)據(jù)庫表格或者視圖里的數(shù)據(jù)。在SQLServer里,它們有兩種形式:聚集索引和非聚集索引。聚集索引在索引的葉級保存數(shù)據(jù)。這意味著不管聚集索引里有表格的哪個(或哪些)字段,這些字段都會按順序被保存在表格。由于存在這種排序,所以每個表格只會有一個聚集索引。非聚集索引在索引的葉級有一個行標(biāo)記符。這個行標(biāo)記符是一個指向磁盤上數(shù)據(jù)的指針。它允許每個表格有多個非聚集索引。什么是主鍵?什么是外鍵?主鍵是表格里的(一個或多個)字段,只用來定義表格里的行;主鍵里的值總是唯一的。外鍵是一個用來建立兩個表格之間關(guān)系的約束。這種關(guān)系一般都涉及一個表格里的主鍵字段與此外一個表格(盡管也許是同一個表格)里的一系列相連的字段。那么這些相連的字段就是外鍵。什么是觸發(fā)器?SQLServer2023有什么不同類型的觸發(fā)器?讓未來的數(shù)據(jù)庫開發(fā)人員知道可用的觸發(fā)器類型以及如何實現(xiàn)它們是非常有益的。觸發(fā)器是一種專用類型的存儲過程,它被捆綁到SQLServer2023的表格或者視圖上。在SQLServer2023里,有INSTEAD-OF和AFTER兩種觸發(fā)器。INSTEAD-OF觸發(fā)器是替代數(shù)據(jù)操控語言(DataManipulationLanguage,DML)語句對表格執(zhí)行語句的存儲過程。例如,假如我有一個用于TableA的INSTEAD-OF-UPDATE觸發(fā)器,同時對這個表格執(zhí)行一個更新語句,那么INSTEAD-OF-UPDATE觸發(fā)器里的代碼會執(zhí)行,而不是我執(zhí)行的更新語句則不會執(zhí)行操作。AFTER觸發(fā)器要在DML語句在數(shù)據(jù)庫里使用之后才執(zhí)行。這些類型的觸發(fā)器對于監(jiān)視發(fā)生在數(shù)據(jù)庫表格里的數(shù)據(jù)變化十分好用。您如何確一個帶有名為Fld1字段的TableB表格里只具有Fld1字段里的那些值,而這些值同時在名為TableA的表格的Fld1字段里?這個與關(guān)系相關(guān)的問題有兩個也許的答案。第一個答案(并且是您希望聽到的答案)是使用外鍵限制。外鍵限制用來維護引用的完整性。它被用來保證表格里的字段只保存有已經(jīng)在不同的(或者相同的)表格里的另一個字段里定義了的值。這個字段就是候選鍵(通常是此外一個表格的主鍵)。此外一種答案是觸發(fā)器。觸發(fā)器可以被用來保證以此外一種方式實現(xiàn)與限制相同的作用,但是它非常難設(shè)立與維護,并且性能一般都很糟糕。由于這個因素,微軟建議開發(fā)人員使用外鍵限制而不是觸發(fā)器來維護引用的完整性。對一個投入使用的在線事務(wù)解決表格有過多索引需要有什么樣的性能考慮?你正在尋找進行與數(shù)據(jù)操控有關(guān)的應(yīng)聘人員。對一個表格的索引越多,數(shù)據(jù)庫引擎用來更新、插入或者刪除數(shù)據(jù)所需要的時間就越多,由于在數(shù)據(jù)操控發(fā)生的時候索引也必須要維護。你可以用什么來保證表格里的字段只接受特定范圍里的值?這個問題可以用多種方式來回答,但是只有一個答案是“好”答案。您希望聽到的回答是Check限制,它在數(shù)據(jù)庫表格里被定義,用來限制輸入該列的值。觸發(fā)器也可以被用來限制數(shù)據(jù)庫表格里的字段可以接受的值,但是這種辦法規(guī)定觸發(fā)器在表格里被定義,這也許會在某些情況下影響到性能。因此,微軟建議使用Check限制而不是其他的方式來限制域的完整性。假如應(yīng)聘者可以對的地回答這個問題,那么他的機會就非常大了,由于這表白他們具有使用存儲過程的經(jīng)驗。返回參數(shù)總是由存儲過程返回,它用來表達存儲過程是成功還是失敗。返回參數(shù)總是INT數(shù)據(jù)類型。OUTPUT參數(shù)明確規(guī)定由開發(fā)人員來指定,它可以返回其他類型的數(shù)據(jù),例如字符型和數(shù)值型的值。(可以用作輸出參數(shù)的數(shù)據(jù)類型是有一些限制的。)您可以在一個存儲過程里使用多個OUTPUT參數(shù),而您只可以使用一個返回參數(shù)。什么是相關(guān)子查詢?如何使用這些查詢?經(jīng)驗更加豐富的開發(fā)人員將可以準(zhǔn)確地描述這種類型的查詢。相關(guān)子查詢是一種包含子查詢的特殊類型的查詢。查詢里包含的子查詢會真正請求外部查詢的值,從而形成一個類似于循環(huán)的狀況。
數(shù)據(jù)庫面試一:SQLtuning類1.
列舉幾種表連接方式Answer:等連接(內(nèi)連接)、非等連接、自連接、外連接(左、右、全)Orhashjoin/mergejoin/nestloop(clusterjoin)/indexjoin??ORACLE8i,9i表連接方法。一般的相等連接:select*froma,bwherea.id=b.id;這個就屬于內(nèi)連接。對于外連接:Oracle中可以使用“(+)”來表達,9i可以使用LEFT/RIGHT/FULLOUTERJOINLEFTOUTERJOIN:左外關(guān)聯(lián)SELECTe.last_name,e.department_id,d.department_nameFROMemployeeseLEFTOUTERJOINdepartmentsdON(e.department_id=d.department_id);等價于SELECTe.last_name,e.department_id,d.department_nameFROMemployeese,departmentsdWHEREe.department_id=d.department_id(+)結(jié)果為:所有員工及相應(yīng)部門的記錄,涉及沒有相應(yīng)部門編號department_id的員工記錄。RIGHTOUTERJOIN:右外關(guān)聯(lián)SELECTe.last_name,e.department_id,d.department_nameFROMemployeeseRIGHTO(shè)UTERJOINdepartmentsdON(e.department_id=d.department_id);等價于SELECTe.last_name,e.department_id,d.department_nameFROMemployeese,departmentsdWHEREe.department_id(+)=d.department_id結(jié)果為:所有員工及相應(yīng)部門的記錄,涉及沒有任何員工的部門記錄。FULLOUTERJOIN:全外關(guān)聯(lián)SELECTe.last_name,e.department_id,d.department_nameFROMemployeeseFULLOUTERJOINdepartmentsdON(e.department_id=d.department_id);結(jié)果為:所有員工及相應(yīng)部門的記錄,涉及沒有相應(yīng)部門編號department_id的員工記錄和沒有任何員工的部門記錄。ORACLE8i是不直接支持完全外連接的語法,也就是說不能在左右兩個表上同時加上(+),下面是在ORACLE8i可以參考的完全外連接語法selectt1.id,t2.idfromtable1t1,tablet2wheret1.id=t2.id(+)unionselectt1.id,t2.idfromtable1t1,tablet2wheret1.id(+)=t2.id連接類型定義圖示例子
內(nèi)連接只連接匹配的行
selectA.c1,B.c2fromAjoinBonA.c3=B.c3;
左外連接包含左邊表的所有行(不管右邊的表中是否存在與它們匹配的行)以及右邊表中所有匹配的行
selectA.c1,B.c2fromAleftjoinBonA.c3=B.c3;
右外連接包含右邊表的所有行(不管左邊的表中是否存在與它們匹配的行)以及左邊表中所有匹配的行
selectA.c1,B.c2fromArightjoinBonA.c3=B.c3;
全外連接包含左、右兩個表的所有行,不管在另一邊的表中是否存在與它們匹配的行
selectA.c1,B.c2fromAfulljoinBonA.c3=B.c3;
(theta)連接使用等值以外的條件來匹配左、右兩個表中的行
selectA.c1,B.c2fromAjoinBonA.c3!=B.c3;
交叉連接生成笛卡爾積——它不使用任何匹配或者選取條件,而是直接將一個數(shù)據(jù)源中的每個行與另一個數(shù)據(jù)源的每個行一一匹配selectA.c1,B.c2fromA,B;2.
不借助第三方工具,如何查看sql的執(zhí)行計劃I)使用ExplainPl(wèi)an,查詢PLAN_TABLE;
EXPLAIN
PLAN
SETSTATEMENT_ID='QUERY1'
FOR
SELECT*
FROMa
WHEREaa=1;
SELECT
operation,options,object_name,object_type,ID,parent_id
FROMplan_table
WHERESTATEMENT_ID='QUERY1'
ORDERBYID;II)SQLPLUS中的SETTRACE即可看到ExecutionPlanStatistics
SETAUTOTRACEON;3.
如何使用CBO,CBO與RULE的區(qū)別
IF初始化參數(shù)OPTIMIZER_MODE=CHOOSETHEN
--(8IDEFAULT)
IF做過表分析
THEN優(yōu)化器Optimizer=CBO(COST);
/*高效*/
ELSE
優(yōu)化器Optimizer=RBO(RULE);
/*高效*/
ENDIF;
ENDIF;
區(qū)別:
RBO根據(jù)規(guī)則選擇最佳執(zhí)行途徑來運營查詢。
CBO根據(jù)表記錄找到最低成本的訪問數(shù)據(jù)的方法擬定執(zhí)行計劃。
使用CBO需要注意:
I)
需要經(jīng)常對表進行ANALYZE命令進行分析記錄;
II)需要穩(wěn)定執(zhí)行計劃;
III)需要使用提醒(Hint);
使用RULE需要注意:I)
選擇最有效率的表名順序II)優(yōu)化SQL的寫法;在optimizer_mode=choose時,假如表有記錄信息(分區(qū)表外),優(yōu)化器將選擇CBO,否則選RBO。RBO遵循簡樸的分級方法學(xué),使用15種級別要點,當(dāng)接受到查詢,優(yōu)化器將評估使用到的要點數(shù)目,然后選擇最佳級別(最少的數(shù)量)的執(zhí)行途徑來運營查詢。CBO嘗試找到最低成本的訪問數(shù)據(jù)的方法,為了最大的吞吐量或最快的初始響應(yīng)時間,計算使用不同的執(zhí)行計劃的成本,并選擇成本最低的一個,關(guān)于表的數(shù)據(jù)內(nèi)容的記錄被用于擬定執(zhí)行計劃。4.
如何定位重要(消耗資源多)的SQL使用CPU多的用戶sessionSELECTa.SID,spid,stat(yī)us,SUBSTR(a.program,1,40)prog,a.terminal,a.SQL_TEXT,osuser,VALUE/60/100VALUEFROMv$sessiona,v$processb,v$sesstatcWHEREc.statistic#=12ANDc.SID=a.SIDANDa.paddr=b.addrORDERBYVALUEDESC;selectsql_textfromv$sqlwheredisk_reads>1000or(executions>0andbuffer_gets/executions>30000);5.
如何跟蹤某個session的SQL運用TRACE跟蹤
ALTERSESSIONSETSQLTRACEON;
COLUMNSQLformata200;
SELECT
machine,sql_textSQL
FROMv$sqltexta,v$sessionb
WHEREaddress=sql_address
ANDmachine='&A'
ORDERBYhash_value,piece;execdbms_system.set_sql_trace_in_session(sid,serial#,&sql_trace);selectsid,serial#fromv$sessionwheresid=(selectsidfromv$mystatwhererownum=1);execdbms_system.set_ev(&sid,&;serial#,&event_10046,&level_12,'');6.
SQL調(diào)整最關(guān)注的是什么檢查系統(tǒng)的I/O問題sar-d能檢查整個系統(tǒng)的iostat(IOstatistics)查看該SQL的responsetime(dbblockgets/consistentgets/physicalreads/sorts(disk))7.
說說你對索引的結(jié)識(索引的結(jié)構(gòu)、對dml影響、對查詢影響、為什么提高查詢性能)索引有B-TREE、BIT、CLUSTER等類型。ORACLE使用了一個復(fù)雜的自平衡B-tree結(jié)構(gòu);通常來說,在表上建立恰當(dāng)?shù)乃饕?查詢時會改善查詢性能。但在進行插入、刪除、修改時,同時會進行索引的修改,在性能上有一定的影響。有索引且查詢條件能使用索引時,數(shù)據(jù)庫會先度取索引,根據(jù)索引內(nèi)容和查詢條件,查詢出ROWID,再根據(jù)ROWID取出需要的數(shù)據(jù)。由于索引內(nèi)容通常比全表內(nèi)容要少很多,因此通過先讀索引,能減少I/O,提高查詢性能。b-treeindex/bitmapindex/functionindex/patitionalindex(local/global)索引通常能提高select/update/delete的性能,會減少insert的速度,8.
使用索引查詢一定能提高查詢的性能嗎?為什么通常,通過索引查詢數(shù)據(jù)比全表掃描要快.但是我們也必須注意到它的代價.索引需要空間來存儲,也需要定期維護,每當(dāng)有記錄在表中增減或索引列被修改時,索引自身也會被修改.這意味著每條記錄的INSERT,DELETE,UPDATE將為此多付出4,5次的磁盤I/O.由于索引需要額外的存儲空間和解決,那些不必要的索引反而會使查詢反映時間變慢.使用索引查詢不一定能提高查詢性能,索引范圍查詢(INDEXRANGESCAN)合用于兩種情況:基于一個范圍的檢索,一般查詢返回結(jié)果集小于表中記錄數(shù)的30%宜采用;基于非唯一性索引的檢索索引就是為了提高查詢性能而存在的,假如在查詢中索引沒有提高性能,只能說是用錯了索引,或者講是場合不同9.
綁定變量是什么?綁定變量有什么優(yōu)缺陷?綁定變量是指在SQL語句中使用變量,改變變量的值來改變SQL語句的執(zhí)行結(jié)果。優(yōu)點:使用綁定變量,可以減少SQL語句的解析,能減少數(shù)據(jù)庫引擎消耗在SQL語句解析上的資源。提高了編程效率和可靠性。減少訪問數(shù)據(jù)庫的次數(shù),就能事實上減少ORACLE的工作量。缺陷:經(jīng)常需要使用動態(tài)SQL的寫法,由于參數(shù)的不同,也許SQL的執(zhí)行效率不同;綁定變量是相對文本變量來講的,所謂文本變量是指在SQL直接書寫查詢條件,這樣的SQL在不同條件下需要反復(fù)解析,綁定變量是指使用變量來代替直接書寫條件,查詢bindvalue在運營時傳遞,然后綁定執(zhí)行。優(yōu)點是減少硬解析,減少CPU的爭用,節(jié)?。螅瑁幔騟d_pool缺陷是不能使用histogram,sql優(yōu)化比較困難10.
如何穩(wěn)定(固定)執(zhí)行計劃可以在SQL語句中指定執(zhí)行計劃。使用HINTS;query_rewrite_enabled=truestar_transformation_enabled=trueoptimizer_features_enable=9.2.0創(chuàng)建并使用storedoutline11.
和排序相關(guān)的內(nèi)存在8i和9i分別如何調(diào)整,臨時表空間的作用是什么SORT_AREA_SIZE在進行排序操作時,假如排序的內(nèi)容太多,內(nèi)存里不能所有放下,則需要進行外部排序,此時需要運用臨時表空間來存放排序的中間結(jié)果。8i中sort_area_size/sort_area_retained_size決定了排序所需要的內(nèi)存,假如排序操作不能在sort_area_size中完畢,就會用到temp表空間9i中假如workarea_size_policy=auto時,排序在pga內(nèi)進行,通常pga_aggregate_target的1/20可以用來進行disksort;假如workarea_size_policy=manual時,排序需要的內(nèi)存由sort_area_size決定,在執(zhí)行orderby/groupby/distinct/union/createindex/indexrebuild/minus等操作時,假如在pga或sort_area_size中不能完畢,排序?qū)⒃谂R時表空間進行(disksort),臨時表空間重要作用就是完畢系統(tǒng)中的disksort.12.
存在表T(a,b,c,d),要根據(jù)字段c排序后取第21—30條記錄顯示,請給出sql
SELECT
*
FROM(SELECTROWNUMASrow_num,tmp_tab.*
FROM(SELECT
a,b,c,d
FROMT
ORDERBYc)tmp_tab
WHEREROWNUM<=30)
WHERErow_num>=20ORDERBYrow_num;createtablet(anumber(,bnumber(,cnumber(,dnumber();/beginforiin1..300l(fā)oopinsertintotvalues(mod(i,2),i/2,dbms_random.value(1,300),i/4);endloop;end;/select*from(selectc.*,rownumasrnfrom(select*fromtorderbycdesc)c)wherernbetween21and30;/select*from(select*fromtestorderbycdesc)xwhererownum<30minusselect*from(select*fromtestorderbycdesc)ywhererownum&lt;20orderby3desc相比之minus性能較差二:數(shù)據(jù)庫基本概念類1Pctusedandpctfree表達什么含義有什么作用pctused與pctfree控制數(shù)據(jù)塊是否出現(xiàn)在freelist中,
pctfree控制數(shù)據(jù)塊中保存用于update的空間,當(dāng)數(shù)據(jù)塊中的freespace小于pctfree設(shè)立的空間時,該數(shù)據(jù)塊從freelist中去掉,當(dāng)塊由于dml操作freespace大于pct_used設(shè)立的空間時,該數(shù)據(jù)庫塊將被添加在freelist鏈表中。2簡樸描述tablespace/segment/extent/block之間的關(guān)系tablespace:一個數(shù)據(jù)庫劃分為一個或多個邏輯單位,該邏輯單位成為表空間;每一個表空間也許包含一個或多個Segment;Segments:Segment指在tablespace中為特定邏輯存儲結(jié)構(gòu)分派的空間。每一個段是由一個或多個extent組成。涉及數(shù)據(jù)段、索引段、回滾段和臨時段。Extents:一個extent由一系列連續(xù)的Oracleblocks組成.ORACLE為通過extent來給segment分派空間。DataBlocks:Oracle數(shù)據(jù)庫最小的I/O存儲單位,一個datablock相應(yīng)一個或多個分派給dat(yī)afile的操作系統(tǒng)塊。table創(chuàng)建時,默認(rèn)創(chuàng)建了一個datasegment,每個datasegment具有minextents指定的extents數(shù),每個extent據(jù)據(jù)表空間的存儲參數(shù)分派一定數(shù)量的blocks3描述tablespace和datafile之間的關(guān)系一個表空間可包含一個或多個數(shù)據(jù)文獻。表空間運用增長或擴展數(shù)據(jù)文獻擴大表空間,表空間的大小為組成該表空間的數(shù)據(jù)文獻大小的和。一個datafile只能屬于一個表空間;一個tablespace可以有一個或多個datafile,每個datafile只能在一個tablespace內(nèi),table中的數(shù)據(jù),通過hash算法分布在tablespace中的各個datafile中,tablespace是邏輯上的概念,datafile則在物理上儲存了數(shù)據(jù)庫的種種對象。4本地管理表空間和字典管理表空間的特點,ASSM有什么特點本地管理表空間:(9i默認(rèn))空閑塊列表存儲在表空間的數(shù)據(jù)文獻頭。特點:減少數(shù)據(jù)字典表的競爭,當(dāng)分派和收縮空間時會產(chǎn)生回滾,不需要合并。字典管理表空間:(8i默認(rèn))空閑塊列表存儲在數(shù)據(jù)庫中的字典表里.特點:片由數(shù)據(jù)字典管理,也許導(dǎo)致字典表的爭用。存儲在表空間的每一個段都會有不同的存儲字句,需要合并相鄰的塊;本地管理表空間(LocallyManagedTablespace簡稱LMT)8i以后出現(xiàn)的一種新的表空間的管理模式,通過位圖來管理表空間的空間使用。字典管理表空間(Dictionary-ManagedTablespace簡稱DMT)8i以前涉及以后都還可以使用的一種表空間管理模式,通過數(shù)據(jù)字典管理表空間的空間使用。動段空間管理(ASSM),它初次出現(xiàn)在Oracle920里有了ASSM,鏈接列表freelist被位圖所取代,它是一個二進制的數(shù)組,可以迅速有效地管理存儲擴展和剩余區(qū)塊(freeblock),因此可以改善分段存儲本質(zhì),ASSM表空間上創(chuàng)建的段尚有此外一個稱呼喊BitmapManagedSegments(BMB段)。5回滾段的作用是什么回滾段用于保存數(shù)據(jù)修改前的映象,這些信息用于生成讀一致性數(shù)據(jù)庫信息、在數(shù)據(jù)庫恢復(fù)和Rollback時使用。一個事務(wù)只能使用一個回滾段。事務(wù)回滾:當(dāng)事務(wù)修改表中數(shù)據(jù)的時候,該數(shù)據(jù)修改前的值(即前影像)會存放在回滾段中,當(dāng)用戶回滾事務(wù)(ROLLBACK)時,ORACLE將會運用回滾段中的數(shù)據(jù)前影像來將修改的數(shù)據(jù)恢復(fù)到本來的值。事務(wù)恢復(fù):當(dāng)事務(wù)正在解決的時候,例程失敗,回滾段的信息保存在undo表空間中,ORACLE將在下次打開數(shù)據(jù)庫時運用回滾來恢復(fù)未提交的數(shù)據(jù)。讀一致性:當(dāng)一個會話正在修改數(shù)據(jù)時,其他的會話將看不到該會話未提交的修改。當(dāng)一個語句正在執(zhí)行時,該語句將看不到從該語句開始執(zhí)行后的未提交的修改(語句級讀一致性)當(dāng)ORACLE執(zhí)行SELECT語句時,ORACLE依照當(dāng)前的系統(tǒng)改變號(SYSTEMCHANGENUMBER-SCN)來保證任何前于當(dāng)前SCN的未提交的改變不被該語句解決。可以想象:當(dāng)一個長時間的查詢正在執(zhí)行時,若其他會話改變了該查詢要查詢的某個數(shù)據(jù)塊,ORACLE將運用回滾段的數(shù)據(jù)前影像來構(gòu)造一個讀一致性視圖6日記的作用是什么日記文獻(LogFile)記錄所有對數(shù)據(jù)庫數(shù)據(jù)的修改,重要是保護數(shù)據(jù)庫以防止故障,以及恢復(fù)數(shù)據(jù)時使用。其特點如下:
a)每一個數(shù)據(jù)庫至少包含兩個日記文獻組。每個日記文獻組至少包含兩個日記文獻成員。
b)日記文獻組以循環(huán)方式進行寫操作。
c)每一個日記文獻成員相應(yīng)一個物理文獻。記錄數(shù)據(jù)庫事務(wù),最大限度地保證數(shù)據(jù)的一致性與安全性
重做日記文獻:含對數(shù)據(jù)庫所做的更改記錄,這樣萬一出現(xiàn)故障可以啟用數(shù)據(jù)恢復(fù),一個數(shù)據(jù)庫至少需要兩個重做日記文獻歸檔日記文獻:是重做日記文獻的脫機副本,這些副本也許對于從介質(zhì)失敗中進行恢復(fù)很必要。7SGA重要有那些部分,重要作用是什么系統(tǒng)全局區(qū)(SGA):是ORACLE為實例分派的一組共享緩沖存儲區(qū),用于存放數(shù)據(jù)庫數(shù)據(jù)和控制信息,以實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的管理和操作。SGA重要涉及:a)共享池(sharedpool):用來存儲最近執(zhí)行的SQL語句和最近使用的數(shù)據(jù)字典的數(shù)據(jù)。b)數(shù)據(jù)緩沖區(qū)(databasebuffercache):用來存儲最近從數(shù)據(jù)文獻中讀寫過的數(shù)據(jù)。c)重作日記緩沖區(qū)(redologbuffer):用來記錄服務(wù)或后臺進程對數(shù)據(jù)庫的操作。此外在SGA中尚有兩個可選的內(nèi)存結(jié)構(gòu):d)javapool:
用來存儲Java代碼。e)Largepool:用來存儲不與SQL直接相關(guān)的大型內(nèi)存結(jié)構(gòu)。備份、恢復(fù)使用。GA:db_cache/shared_pool/large_pool/java_pooldb_cache:數(shù)據(jù)庫緩存(BlockBuffer)對于Oracle數(shù)據(jù)庫的運轉(zhuǎn)和性能起著非常關(guān)鍵的作用,它占據(jù)Oracle數(shù)據(jù)庫SGA(系統(tǒng)共享內(nèi)存區(qū))的重要部分。Oracle數(shù)據(jù)庫通過使用LRU算法,將最近訪問的數(shù)據(jù)塊存放到緩存中,從而優(yōu)化對磁盤數(shù)據(jù)的訪問.shared_pool:共享池的大小對于Oracle性能來說都是很重要的。共享池中保存數(shù)據(jù)字典高速緩沖和完全解析或編譯的的PL/SQL塊和SQL語句及控制結(jié)構(gòu)large_pool:使用MTS配置時,由于要在SGA中分派UGA來保持用戶的會話,就是用Large_pool來保持這個會話內(nèi)存使用RMAN做備份的時候,要使用Large_pool這個內(nèi)存結(jié)構(gòu)來做磁盤I/O緩存器java_pool:為javaprocedure預(yù)備的內(nèi)存區(qū)域,假如沒有使用javaproc,java_pool不是必須的8Oracle系統(tǒng)進程重要有哪些,作用是什么數(shù)據(jù)寫進程(DBWR):負(fù)責(zé)將更改的數(shù)據(jù)從數(shù)據(jù)庫緩沖區(qū)高速緩存寫入數(shù)據(jù)文獻日記寫進程(LGWR):將重做日記緩沖區(qū)中的更改寫入在線重做日記文獻系統(tǒng)監(jiān)控
(SMON):檢查數(shù)據(jù)庫的一致性如有必要還會在數(shù)據(jù)庫打開時啟動數(shù)據(jù)庫的恢復(fù)進程監(jiān)控
(PMON):負(fù)責(zé)在一個Oracle進程失敗時清理資源檢查點進程(CKPT):負(fù)責(zé)在每當(dāng)緩沖區(qū)高速緩存中的更改永久地記錄在數(shù)據(jù)庫中時,更新控制文獻和數(shù)據(jù)文獻中的數(shù)據(jù)庫狀態(tài)信息。歸檔進程
(ARCH):在每次日記切換時把已滿的日記組進行備份或歸檔恢復(fù)進程
(RECO):保證分布式事務(wù)的一致性,在分布式事務(wù)中,要么同時commit,要么同時rollback;作業(yè)調(diào)度器(CJQ):
負(fù)責(zé)將調(diào)度與執(zhí)行系統(tǒng)中已定義好的job,完畢一些預(yù)定義的工作.三:備份恢復(fù)類1備份如何分類邏輯備份:exp/imp指定表的邏輯備份物理備份:熱備份:altertablespacebegin/endbackup;冷備份:脫機備份(dat(yī)abaseshutdown)RMAN備份fullbackup/incrementalbackup(累積/差異)物理備份物理備份是最重要的備份方式。用于保證數(shù)據(jù)庫在最小的數(shù)據(jù)庫丟失或沒有數(shù)據(jù)丟失的情況下得到恢復(fù)。冷物理冷物理備份提供了最簡樸和最直接的方法保護數(shù)據(jù)庫因物理損壞丟失。建議在以下幾種情況中使用。對一個已經(jīng)存在大最數(shù)據(jù)量的數(shù)據(jù)庫,在晚間數(shù)據(jù)庫可以關(guān)閉,此時應(yīng)用冷物理備份。對需對數(shù)據(jù)庫服務(wù)器進行升級,(如更換硬盤),此時需要備份數(shù)據(jù)庫信息,并在新的硬盤中恢復(fù)這些數(shù)據(jù)信息,建議采用冷物理備份。熱物理重要是指備份過程在數(shù)據(jù)庫打開并且用戶可以使用的情況下進行。需要執(zhí)行熱物理備份的情況有:由于數(shù)據(jù)庫性質(zhì)規(guī)定不間斷工作,因而此時只能采用熱物理備份。由于備份的規(guī)定的時間過長,而數(shù)據(jù)庫只能短時間關(guān)閉時。邏輯備份(EXP/IMP)邏輯備份用于實現(xiàn)數(shù)據(jù)庫對象的恢復(fù)。但不是基于時間點可完全恢復(fù)的備份策略。只能作為聯(lián)機備份和脫機備份的一種補充。完全邏輯備份完全邏輯備份是將整個數(shù)據(jù)庫導(dǎo)出到一個數(shù)據(jù)庫的格式文獻中,該文獻可以在不同的數(shù)據(jù)庫版本、操作系統(tǒng)和硬件平臺之間進行移植。指定表的邏輯備份通過備份工具,可以將指定的數(shù)據(jù)庫表備份出來,這可以避免完全邏輯備份所帶來的時間和財力上的浪費。2歸檔是什么含義關(guān)于歸檔日記:Oracle要將填滿的在線日記文獻組歸檔時,則要建立歸檔日記(archivedredolog)。其對數(shù)據(jù)庫備份和恢復(fù)有下列用處:數(shù)據(jù)庫后備以及在線和歸檔日記文獻,在操作系統(tǒng)和磁盤故障中可保證所有提交的事物可被恢復(fù)。在數(shù)據(jù)庫打開和正常系統(tǒng)使用下,假如歸檔日記是永久保存,在線后備可以進行和使用。數(shù)據(jù)庫可運營在兩種不同方式下:NOARCHIVELOG方式或ARCHIVELOG方式數(shù)據(jù)庫在NOARCHIVELOG方式下使用時,不能進行在線日記的歸檔,數(shù)據(jù)庫在ARCHIVELOG方式下運營,可實行在線日記的歸檔歸檔是歸檔當(dāng)前的聯(lián)機redo日記文獻。SVRMGR>altersystemarchivelogcurrent;數(shù)據(jù)庫只有運營在ARCHIVELOG模式下,并且可以進行自動歸檔,才可以進行聯(lián)機備份。有了聯(lián)機備份才有也許進行完全恢復(fù)。3假如一個表在2023-08-0410:30:00被drop,在有完善的歸檔和備份的情況下,如何恢復(fù)9i新增的FLASHBACK應(yīng)當(dāng)可以;Logminer應(yīng)當(dāng)可以找出DML。有完善的歸檔和備份,先歸檔當(dāng)前數(shù)據(jù),然后可以先恢復(fù)到刪除的時間點之前,把DROP的表導(dǎo)出來,然后再恢復(fù)到最后歸檔時間;手工拷貝回所有備份的數(shù)據(jù)文獻Sql〉startupmount;sql〉alterdatabaserecoverautomat(yī)icuntiltime'2023-08-04:10:30:00';sql〉alterdatabaseopenresetlogs;4rman是什么,有何特點RMAN(RecoveryManager)是DBA的一個重要工具,用于備份、還原和恢復(fù)oracle數(shù)據(jù)庫,RMAN可以用來備份和恢復(fù)數(shù)據(jù)庫文獻、歸檔日記、控制文獻、系統(tǒng)參數(shù)文獻,也可以用來執(zhí)行完全或不完全的數(shù)據(jù)庫恢復(fù)。RMAN有三種不同的用戶接口:COMMANDLINE方式、GUI方式(集成在OEM中的備份管理器)、API方式(用于集成到第三方的備份軟件中)。具有如下特點:1)功能類似物理備份,但比物理備份強大N倍;2)可以壓縮空塊;3)可以在塊水平上實現(xiàn)增量;4)可以把備份的輸出打包成備份集,也可以按固定大小分割備份集;5)備份與恢復(fù)的過程可以自動管理;6)可以使用腳本(存在Recoverycatalog中)7)可以做壞塊監(jiān)測5standby的特點備用數(shù)據(jù)庫(standbydatabase):ORACLE推出的一種高可用性(HIGHAVAILABLE)數(shù)據(jù)庫方案,在主節(jié)點與備用節(jié)點間通過日記同步來保證數(shù)據(jù)的同步,備用節(jié)點作為主節(jié)點的備份,可以實現(xiàn)快速切換與劫難性恢復(fù),從920開始,還開始支持物理與邏輯備用服務(wù)器。9i中的三種數(shù)據(jù)保護模式分別是:1)、MAXIMIZEPROTECTION:最大數(shù)據(jù)保護與無數(shù)據(jù)分歧,LGWR將同時傳送到備用節(jié)點,在主節(jié)點事務(wù)確認(rèn)之前,備用節(jié)點也必須完全收到日記數(shù)據(jù)。假如網(wǎng)絡(luò)不好,引起LGWR不能傳送數(shù)據(jù),將引起嚴(yán)重的性能問題,導(dǎo)致主節(jié)點DOWN機。2)、MAXIMIZEAVAILABILITY:無數(shù)據(jù)丟失模式,允許數(shù)據(jù)分歧,允許異步傳送。正常情況下運營在最大保護模式,在主節(jié)點與備用節(jié)點的網(wǎng)絡(luò)斷開或連接不正常時,自動切換到最大性能模式,主節(jié)點的操作還是可以繼續(xù)的。在網(wǎng)絡(luò)不好的情況下有較大的性能影響。3)、MAXIMIZEPERFORMANCE:這種模式應(yīng)當(dāng)可以說是從8i繼承過來的備用服務(wù)器模式,異步傳送,無數(shù)據(jù)同步檢查,也許丟失數(shù)據(jù),但是能獲得主節(jié)點的最大性能。9i在配置DATAGUARD的時候默認(rèn)就是MAXIMIZEPERFORMANCE6對于一個規(guī)定恢復(fù)時間比較短的系統(tǒng)(數(shù)據(jù)庫50G,天天歸檔5G),你如何設(shè)計備份策略數(shù)據(jù)庫比較大邏輯備份沒什么必要,天天歸檔5G,每周三/周六自動歸檔10G,每月RMAN歸檔全庫。應(yīng)當(dāng)有standby。rman/每月一號level0每周末/周三level1其它天天level2四:系統(tǒng)管理類1.
對于一個存在系統(tǒng)性能的系統(tǒng),說出你的診斷解決思緒ü
做stat(yī)spack收集系統(tǒng)相關(guān)信息
了解系統(tǒng)大體情況/擬定是否存在參數(shù)設(shè)立不合適的地方/查看top5event/查看topsql等ü
查v$system_event/v$session_event/v$session_wait從v$system_event開始,擬定需要什么資源(dbfilesequentialread)等,進一步研究v$session_event,擬定等待事件涉及的會話,從v$session_wait擬定具體的資源爭用情況(p1-p3的值:file_id/block_id/blocks等)ü
通過v$sql/v$sqltext/v$sqlarea表擬定disk_reads、(buffer_gets/executions)值較大的SQL2.
列舉幾種診斷IO、CPU、性能狀況的方法top
uptime
vmstat
iostat(yī)
statspack
sql_trace/tkprof查v$system_event/v$session_event/v$session_wait查v$sqlarea(disk_reads或buffer_gets/executions較大的SQL)或者第三方的監(jiān)視工具,TO(shè)AD就不錯。3.
對stat(yī)spack有何結(jié)識結(jié)識不深。僅限了解。StapSpack是Oracle公司提供的一個收集數(shù)據(jù)庫運營性能指標(biāo)的軟件包??梢宰鰯?shù)據(jù)庫健康檢查報告。StapSpack是Oracle公司提供的一個收集數(shù)據(jù)庫運營性能指標(biāo)的軟件包,該軟件包從8i起,在9i、10g都有顯著的增強該軟件包的輔助表(存儲相關(guān)參數(shù)與收集的性能指標(biāo)的表)由最初的25個增長到43個收集級別參數(shù)由本來的3個(0、5、10)增長到5個(0、5、6、7、10)通過度析收集的性能指標(biāo),數(shù)據(jù)庫管理員可以具體地了解數(shù)據(jù)庫目前的運營情況,對數(shù)據(jù)庫實例、等待事件、SQL等進行優(yōu)化調(diào)整運用statspack收集的snapshot,可以記錄制作數(shù)據(jù)庫的各種性能指標(biāo)的記錄趨勢圖表。4.
假如系統(tǒng)現(xiàn)在需要在一個很大的表上創(chuàng)建一個索引,你會考慮那些因素,如何做以盡量減小相應(yīng)用的影響可以先表分析一下,然后測試創(chuàng)建索引前后相應(yīng)用的性能影響;需要考慮的是該索引列不經(jīng)常更新,不是有很多反復(fù)值的情況時,在大表中使用索引特別有效.創(chuàng)建的索引可以跟數(shù)據(jù)表分不同表空間存儲。在系統(tǒng)比較空閑時nologging選項(假如有dataguard則不可以使用nologging)大的sort_ared_size或pga_aggregat(yī)e_target較大5.
對raid10和raid5有何結(jié)識RAID10(或稱RAID1+0)與RAID0+1不同,它是用硬盤驅(qū)動器先組成RAID1陣列,然后在RAID1陣列之間再組成RAID0陣列。RAID10模式同RAID0+1模式同樣具有良好的數(shù)據(jù)傳輸性能,但卻比RAID0+1具有更高的可靠性。RAID10陣列的實際容量為M×n/2,磁盤運用率為50%。RAID10也需要至少4個硬盤驅(qū)動器構(gòu)成,因而價格昂貴。RAID10的可靠性同RAID1同樣,但由于RAID10硬盤驅(qū)動器之間有數(shù)據(jù)分割,因而數(shù)據(jù)傳輸性能優(yōu)良。
RAID5與RAID3很相似,不同之處在于RAID5的奇偶校驗信息也同數(shù)據(jù)同樣被分割保存到所有的硬盤驅(qū)動器,而不是寫入一個指定的硬盤驅(qū)動器,從而消除了單個奇偶校驗硬盤驅(qū)動器的瓶頸問題。RAID5磁盤陣列的性能比RAID3有所提高,但仍然需要至少3塊硬盤驅(qū)動器。其實際容量為M×(n-1),磁盤運用率為(n-1)/n。
五:綜合隨意類1.
你最擅長的是oracle哪部分?pl/sql及sql優(yōu)化2.
喜歡oracle嗎?喜歡上論壇嗎?或者偏好oracle的哪一部分?喜歡。PL/SQL比較得心應(yīng)手。3.
隨意說說你覺得oracle最故意思的部分或者最困難的部分我對數(shù)據(jù)庫的備份/恢復(fù)和性能調(diào)優(yōu)經(jīng)驗明顯局限性,自然覺得有些困難。基于ORACLE的研究應(yīng)當(dāng)是個寬廣的領(lǐng)域,所以我覺得還是故意思的。4.
為什么要選擇做DBA呢?我對數(shù)據(jù)庫的備份/恢復(fù)和性能調(diào)優(yōu)經(jīng)驗明顯局限性,重要是缺少環(huán)境和交流。因此,算不上什么DBA。但是因此我更需要這樣的機會。但是就整個ORACLE來說,一直從事與它相關(guān)的工作,感情還是頗深的。放棄可惜。并且就技術(shù)自身而言我覺得自己還是有學(xué)習(xí)和創(chuàng)新的能力,它的諸如數(shù)據(jù)倉庫,數(shù)據(jù)挖掘之類的領(lǐng)域也很廣。數(shù)據(jù)庫面試筆試題集
第一套一.選擇題1.下面敘述對的的是______。A、算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)B、算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)C、算法的有窮性是指算法必須能在執(zhí)行有限個環(huán)節(jié)之后終止D、以上三種描述都不對2.以下數(shù)據(jù)結(jié)構(gòu)中不屬于線性數(shù)據(jù)結(jié)構(gòu)的是______。A、隊列B、線性表C、二叉樹D、棧3.在一棵二叉樹上第5層的結(jié)點數(shù)最多是______。A、8B、16C、32D、154.下面描述中,符合結(jié)構(gòu)化程序設(shè)計風(fēng)格的是______。A、使用順序、選擇和反復(fù)(循環(huán))三種基本控制結(jié)構(gòu)表達程序的控制邏輯B、模塊只有一個入口,可以有多個出口C、注重提高程序的執(zhí)行效率D、不使用goto語句5.下面概念中,不屬于面向?qū)ο蠓椒ǖ氖牵撸撸撸撸達。A、對象B、繼承C、類D、過程調(diào)用6.在結(jié)構(gòu)化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開發(fā)階段是______。A、可行性分析B、需求分析C、具體設(shè)計D、程序編碼7.在軟件開發(fā)中,下面任務(wù)不屬于設(shè)計階段的是______。A、數(shù)據(jù)結(jié)構(gòu)設(shè)計B、給出系統(tǒng)模塊結(jié)構(gòu)C、定義模塊算法D、定義需求并建立系統(tǒng)模型8.數(shù)據(jù)庫系統(tǒng)的核心是______。A、數(shù)據(jù)模型B、數(shù)據(jù)庫管理系統(tǒng)C、軟件工具D、數(shù)據(jù)庫9.下列敘述中對的的是______。A、數(shù)據(jù)庫是一個獨立的系統(tǒng),不需要操作系統(tǒng)的支持B、數(shù)據(jù)庫設(shè)計是指設(shè)計數(shù)據(jù)庫管理系統(tǒng)C、數(shù)據(jù)庫技術(shù)的主線目的是要解決數(shù)據(jù)共享的問題D、數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致10.下列模式中,可以給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是______。A、內(nèi)模式B、外模式C、概念模式D、邏輯模式11.VisualFoxPro數(shù)據(jù)庫文獻是______。A、存放用戶數(shù)據(jù)的文獻B、管理數(shù)據(jù)庫對象的系統(tǒng)文獻C、存放用戶數(shù)據(jù)和系統(tǒng)的文獻D、前三種說法都對12.SQL語句中修改表結(jié)構(gòu)的命令是______。A、MODIFYTABLEB、MODIFYSTRUCTUREC、ALTERTABLED、ALTERSTRUCTURE13.假如要創(chuàng)建一個數(shù)據(jù)組分組報表,第一個分組表達式是"部門",第二個分組表達式是"性別",第三個分組表達式是"基本工資",當(dāng)前索引的索引表達式應(yīng)當(dāng)是______。A、部門+性別+基本工資B、部門+性別+STR(基本工資)C、STR(基本工資)+性別+部門D、性別+部門+STR(基本工資)14.把一個項目編譯成一個應(yīng)用程序時,下面的敘述對的的是______。A、所有的項目文獻將組合為一個單一的應(yīng)用程序文獻B、所有項目的包含文獻將組合為一個單一的應(yīng)用程序文獻C、所有項目排除的文獻將組合為一個單一的應(yīng)用程序文獻D、由用戶選定的項目文獻將組合為一個單一的應(yīng)用程序文獻15.?dāng)?shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS三者之間的關(guān)系是______。A、DBS涉及DB和DBMSB、DBMS涉及DB和DBSC、DB涉及DBS和DBMSD、DBS就是DB,也就是DBMS16.在"選項"對話框的"文獻位置"選項卡中可以設(shè)立______。A、表單的默認(rèn)大小B、默認(rèn)目錄C、日期和時間的顯示格式D、程序代碼的顏色17.要控制兩個表中數(shù)據(jù)的完整性和一致性可以設(shè)立"參照完整性",規(guī)定這兩個表______。A、是同一個數(shù)據(jù)庫中的兩個表B、不同數(shù)據(jù)庫中的兩個表C、兩個自由表D、一個是數(shù)據(jù)庫表另一個是自由表18.定位第一條記錄上的命令是______。A、GOTOPB、GOBOTTOMC、GO6D、SKIP19.在關(guān)系模型中,實現(xiàn)"關(guān)系中不允許出現(xiàn)相同的元組"的約束是通過______。A、候選鍵B、主鍵C、外鍵D、超鍵20.設(shè)當(dāng)前數(shù)據(jù)庫有10條記錄(記錄未進行任何索引),在下列三種情況下,當(dāng)前記錄號為1時;EOF()為真時;BOF()為真時,命令?RECN()的結(jié)果分別是______。A、1,11,1B、1,10,1C、1,11,0D、1,10,021.下列表達式中結(jié)果不是日期型的是______。A、CTOD("2023/10/01")B、{^99/10/01}+365C、VAL("2023/10/01")D、DATE()22.只有滿足聯(lián)接條件的記錄才包含在查詢結(jié)果中,這種聯(lián)接為______。A、左聯(lián)接B、右聯(lián)接C、內(nèi)部聯(lián)接D、完全聯(lián)接23.索引字段值不唯一,應(yīng)當(dāng)選擇的索引類型為______。A、主索引B、普通索引C、候選索引D、唯一索引24.執(zhí)行SELECT0選擇工作區(qū)的結(jié)果是______。A、選擇了0號工作區(qū)B、選擇了空閑的最小號工作區(qū)C、關(guān)閉選擇的工作區(qū)D、選擇已打開的工作區(qū)25.從數(shù)據(jù)庫中刪除表的命令是______。A、DROPTABLEB、ALTERTABLEC、DELETETABLED、USE26.DELETEFROMSWHERE年齡>60語句的功能是______。A、從S表中徹底刪除年齡大于60歲的記錄B、S表中年齡大于60歲的記錄被加上刪除標(biāo)記C、刪除S表D、刪除S表的年齡列27.SELECT-SQL語句是______。A、選擇工作區(qū)語句B、數(shù)據(jù)查詢語句C、選擇標(biāo)準(zhǔn)語句D、數(shù)據(jù)修改語句28.SQL語言是______語言。A、層次數(shù)據(jù)庫B、網(wǎng)絡(luò)數(shù)據(jù)庫C、關(guān)系數(shù)據(jù)庫D、非數(shù)據(jù)庫29.在SQL中,刪除視圖用______。A、DROPSCHEMA命令B、CREATETABLE命令C、DROPVIEW命令D、DROPINDEX命令30.以下屬于非容器類控件的是______。A、FormB、LabelC、pageD、Container31.將查詢結(jié)果放在數(shù)組中應(yīng)使用______短語。A、INTO(shè)CURSORB、TOARRAYC、INTOTABLED、INTOARRAY32.在命令窗口執(zhí)行SQL命令時,若命令要占用多行,續(xù)行符是______。A、冒號(:)B、分號(;)C、逗號(,)D、連字符(-)33.設(shè)有圖書管理數(shù)據(jù)庫:圖書(總編號C(6),分類號C(8),書名C(16),作者C(6),出版單位C(20),單價N(6,2))讀者(借書證號C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))借閱(借書證號C(4),總編號C(6),借書日期D(8))對于圖書管理數(shù)據(jù)庫,查詢0001號借書證的讀者姓名和所借圖書的書名。SQL語句對的的是______。SELECT姓名,書名FROM借閱,圖書,讀者WHERE;借閱.借書證號="0001"AND;____________A、圖書.總編號=借閱.總編號AND;讀者.借書證號=借閱.借書證號B、圖書.分類號=借閱.分類號AND;讀者.借書證號=借閱.借書證號C、讀者.總編號=借閱.總編號AND;讀者.借書證號=借閱.借書證號D、圖書.總編號=借閱.總編號AND;讀者.書名=借閱.書名34.設(shè)有圖書管理數(shù)據(jù)庫:圖書(總編號C(6),分類號C(8),書名C(16),作者C(6),出版單位C(20),單價N(6,2))讀者(借書證號C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))借閱(借書證號C(4),總編號C(6),借書日期D(8))對于圖書管理數(shù)據(jù)庫,分別求出各個單位當(dāng)前借閱圖書的讀者人次。下面的SQL語句對的的是______。SELECT單位,______FROM借閱,讀者WHERE;借閱.借書證號=讀者.借書證號______A、COUNT(借閱.借書證號)GROUPBY單位B、SUM(借閱.借書證號)GROUPBY單位C、COUNT(借閱.借書證號)ORDERBY單位D、COUNT(借閱.借書證號)HAVING單位35.設(shè)有圖書管理數(shù)據(jù)庫:圖書(總編號C(6),分類號C(8),書名C(16),作者C(6),出版單位C(20),單價N(6,2))讀者(借書證號C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))借閱(借書證號C(4),總編號C(6),借書日期D(8))對于圖書管理數(shù)據(jù)庫,檢索借閱了《現(xiàn)代網(wǎng)絡(luò)技術(shù)基礎(chǔ)》一書的借書證號。下面SQL語句對的的是______。SELECT借書證號FROM借閱WHERE總編號=;______A、(SELECT借書證號FROM圖書WHERE書名="現(xiàn)代網(wǎng)絡(luò)技術(shù)基礎(chǔ)")B、(SELECT總編號FROM圖書WHERE書名="現(xiàn)代網(wǎng)絡(luò)技術(shù)基礎(chǔ)")C、(SELECT借書證號FROM借閱WHERE書名="現(xiàn)代網(wǎng)絡(luò)技術(shù)基礎(chǔ)")D、(SELECT總編號FROM借閱WHERE書名="現(xiàn)代網(wǎng)絡(luò)技術(shù)基礎(chǔ)")二、填空題36.算法的復(fù)雜度重要涉及______復(fù)雜度和空間復(fù)雜度。37.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的______。38.若按功能劃分,軟件測試的方法通常分為白盒測試方法和______測試方法。39.假如一個工人可管理多個設(shè)施,而一個設(shè)施只被一個工人管理,則實體"工人"與實體"設(shè)備"之間存在______聯(lián)系。40.關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實現(xiàn)的專門關(guān)系運算涉及選擇、連接和______。41.命令?LEN("THISISMYBOOK")的結(jié)果是______。42.SQLSELECT語句為了將查詢結(jié)果存放到臨時表中應(yīng)當(dāng)使用______短語。43.多欄報表的欄目數(shù)可以通過______來設(shè)立。44.在打開項目管理器之后再打開"應(yīng)用程序生成器",可以通過按ALT+F2鍵,快捷菜單和"工具"菜單中的______。45.?dāng)?shù)據(jù)庫系統(tǒng)的核心是______。46.查詢設(shè)計器中的"聯(lián)接"選項卡,可以控制______選擇。47.設(shè)有圖書管理數(shù)據(jù)庫:圖書(總編號C(6),分類號C(8),書名C(16),作者C(6),出版單位C(20),單價N(6,2))讀者(借書證號C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))借閱(借書證號C(4),總編號C(6),借書日期D(8))用SQL的CREATE命令建立借閱表(字段順序要相同),請對下面的SQL語句填空:______48.設(shè)有圖書管理數(shù)據(jù)庫:圖書(總編號C(6),分類號C(8),書名C(16),作者C(6),出版單位C(20),單價N(6,2))讀者(借書證號C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))借閱(借書證號C(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年小學(xué)二年級班主任德育工作計劃(二篇)
- 2024年城市個人租房合同參考范文(三篇)
- 2024年商業(yè)房租賃合同范本(四篇)
- 2024年幼兒園家長社區(qū)工作計劃范文(二篇)
- 2024年導(dǎo)游工作計劃范例(二篇)
- 2024年中國兩輪電動車社區(qū)充電行業(yè)研究報告 -頭豹
- 2024年小學(xué)保安工作職責(zé)模版(三篇)
- 2024年商品房在售交易合同范本(二篇)
- 2024年大班班級工作計劃(四篇)
- 2024年工地勞務(wù)合同樣本(二篇)
- 口腔專業(yè)口腔頜面部損傷教案
- 工廠干部培訓(xùn)計劃
- 消化性潰瘍課件
- 提請法院裁定變價方案
- 山東省德州市2023-2024學(xué)年二年級上學(xué)期期中數(shù)學(xué)試卷
- 醫(yī)院拍攝視頻方案
- 小型服裝廠應(yīng)急預(yù)案范文
- 第五單元寫作《如何突出中心》公開課一等獎創(chuàng)新教學(xué)設(shè)計-統(tǒng)編版語文七年級上冊
- 江蘇省連云港市海州區(qū)新海初級中學(xué)2023-2024學(xué)年七年級上學(xué)期期中數(shù)學(xué)試題
- 完整版八、施工現(xiàn)場總平面布置圖
- 分析化學(xué)期中考試試題
評論
0/150
提交評論