這些問題,你能回答多少
編者注:這些問題來著阿里巴巴DBA面試,你能回答多少呢?也許你能回答出來,距離DBA,你又進了一步。下面也請你來試試吧,問題后面會附上該題的一份答案,不一定完全正確,僅供參考。
***輪:SQL tuning 類
1:列舉幾種表連接方式
答:merge join,hash join,nested loop
2:不借助第三方工具,怎樣查看sql的執行計劃?
答:sqlplus、set autotrace ...、utlxplan.sql 創建 plan_table 表
3:如何使用CBO,CBO與RULE的區別?
答:在初始化參數里面設置 optimizer_mode=choose/all_rows/first_row 等可以使用 cbo。rbo會選擇不合適的索引,cbo需要統計信息。
4:如何定位重要(消耗資源多)的SQL?
答:根據v$sqlarea 中的邏輯讀/disk_read。以及尋找CPU使用過量的session,查出當前session的當前SQL語句,或者:監控WIN平臺Oracle的運行
5:如何跟蹤某個session的SQL?
答:先找出對應的’sid,serial’,然后調用system_system.set_sql_trace_in_session(sid,serial,true);參考:跟蹤某個會話
6:SQL調整最關注的是什么?
答:邏輯讀。IO量
7:說說你對索引的認識(索引的結構、對dml影響、對查詢影響、為什么提高查詢性能)
答:默認的索引是b-tree。對insert的影響:分裂,要保證tree的平衡。對delete的影響:刪除行的時候要標記改節點為刪除。對update的影響:如果更新表中的索引字段,則要相應的更新索引中的鍵值。查詢中包含索引字段的鍵值和行的物理地址。
8:使用索引查詢一定能提高查詢的性能嗎?為什么?
答:不能。如果返回的行數目較大,使用全表掃描的性能較好。
9:Array:綁定變量是什么?綁定變量有什么優缺點?
答:通俗的說,綁定變量就是變量的一個占位符,使用綁定變量可以減少只有變量值不同的語句的解析。
10:如何穩定(固定)執行計劃?
答:使用stored outline。
11:和排序相關的內存在8i和Arrayi分別怎樣調整,臨時表空間的作用是什么?
答:8i:使用sort_area_size,hash_area_size,每個session分配相同的值,不管有無使用。Arrayi:使用pga_aggregate來統一管理。臨時表空間的作用:在sort_area_size中不能完成的部分在臨時表空間完成,臨時表空間在重建索引,創建臨時表等都要用到。還有hash join不能完成的也在臨時表空間中做。
12:存在表T(a,b,c,d),要根據字段c排序后取第21-30條記錄顯示,請給出sql
- select a,b,c,d from (select a,b,c,d from T order by c) where rownum<=30
- minus
- select a,b,c,d from (select a,b,c,d from T order by c) where rownum <=20;
- 或者:
- select * from (select rownum rn,a.* from (select a,b,c,d from T order by c) a )where rn between 21 and 30;
#p#
第二輪:數據庫基本概念類
1:pctused and pctfree 表示什么含義有什么作用?
答:表示數據塊什么時候移入和移出freelist。pctused:如果數據塊的使用率小于pctused的值,則該數據塊重新加入到fresslist中。ctfree:如果數據塊的使用率高于pctfree的值,則該數據塊從freelist中移出。
2:簡單描述table / segment / extent / block之間的關系
答:一個table至少是一個segment,如果分區表,則每個分區是一個segment,table可以看成是一個邏輯上的概 念,segment可以看成是這個邏輯概念的物理實現;segment由一個或多個extents組成,segment不可以跨表空間但可以跨數據文件;extent由多個連續的blocks組成,不可以跨數據文件;block由1-多個os塊組成,是oracle i/o的最小存儲單位。
3:描述tablespace和datafile之間的關系
答:tablespace是邏輯上的概念,datafile是物理上的概念。一個tablespace可以由多個datafile組成,一個datafile不能跨越多個tablespace。
4:本地管理表空間和字典管理表空間的特點,ASSM有什么特點?
答:一個使用freelist管理,一個使用位圖管理。
5:回滾段的作用是什么?
答:保存數據的前像,保證數據讀取的時間點一致性。Oracle里數據的多版本特性就是通過回滾段來實現的,正因為此,Oracle數據庫實現了讀寫不競爭的性能優勢!
6:日志的作用是什么?
答:記錄對數據庫的操作,便于恢復。
7:SGA主要有那些部分,主要作用是什么?
答:db_cache(緩存數據塊),shared_pool(緩存sql,執行計劃,數據字典信息 等),large_pool(MTS模式、parallel 、rman等要用到),java pool(java程序如SQLJ存儲過程運行時要用到)。
8:Oracle系統進程主要有哪些,作用是什么?
答:smon(合并空間,實例恢復),pmon(清理失敗的進程),歸檔進程(負責在日志切換的時候歸 檔日志文件),lgmr(日志書寫器進程,負責寫日志),ckpt(檢查點進程,觸發檢查點),dbwr(數據庫寫入器,負責把數據寫入導 datafile)。
#p#
第三輪:備份恢復類
1:備份如何分類?
答:邏輯備份(exp)與物理備份。或者冷備份與熱備份。
2:歸檔是什么含義?
答:把日志文件放到另一個地方。
3:如果一個表在2004-08-04 10:30:00 被drop,在有完善的歸檔和備份的情況下,如何恢復?
答:拷貝備份,recover database until time 2004-08-04 10:30:00 alter database open resetlogs;
4:rman是什么,有何特點?
答:rman叫恢復管理器。特點很多。可以在線備份,到少目標數據庫是mount狀態。1)熱備份。2)可以存儲腳本。3)可以增量備份。4)自動管理備份集
5:standby的特點
答:利用傳輸重做日志來達到同步的目的。可以設定多個保護級別,Arrayi后支持邏輯standbyDB。
6:對于一個要求恢復時間比較短的系統(數據庫50G,每天歸檔5G),你如何設計備份策略
答:每天一個全備份。
#p#
第四輪:系統管理類
1:對于一個存在系統性能的系統,說出你的診斷處理思路
答:做一個statspack,根據top 5,system load,top sql等來做相應的調整。
2:列舉幾種診斷IO、CPU、性能狀況的方法
答:hp-unix:iostat -x 1 5;top/vmstat/glance
3:對statspack有何認識?
答:一個性能診斷工具而已,其本質就是在兩個時間點采樣兩個系統數據。(動態性能視圖),然后根據兩個snapshot,產生一個報告。
4:如果系統現在需要在一個很大的表上創建一個索引,你會考慮那些因素,如何做以盡量減小對應用的影響
答:1)增大sort_area_size(8i)/pga_aggregate_target(Arrayi)值。2)如果表有分區(一般大表都要用到分區的),按分區逐個建索引,如果是本地索引的話。3)系統空閑的時候建。
5:對raid10 和raid5有何認識?
答:raid10是先鏡像后條帶,適合對寫入速度要求較高的數據庫系統,特別是online redolog文件,raid5適合大部分的數據庫系統和數據倉庫系統,讀性能優于寫性能。
原文鏈接:http://www.cnblogs.com/Lostman/archive/2011/05/09/2041302.html
【編輯推薦】