5年前面试题引发的“血案”(番外篇)(总结和乱侃)
這貨是說好的番外篇……
所謂的番外篇其實就是對前面的各個知識點做一些總結。
血案(1)中的兩個內容主要是日志切換時的檢查點和表空間管理。
日志切換其實遠遠沒有簡單,有關于檢查點和日志文件的內容太多了,這題也牽涉到了進程之間的協作以及管理方式,不是一篇文章能說清楚的,那這里主要補充關于日志文件狀態的一些理解。
日志文件分三個常用狀態,current,active和inactive,還有unused,clearing,clearing_current,invalidated。
那關于日志的狀態可以查看v$log這個視圖:
current:當前的日志文件,也就是說當前正在被使用的日志文件,顯然如果要完全恢復的話那是必須要使用的。
active:活動的日志文件,也就是說雖然當前的日志文件沒有被使用,但是它所對應的臟數據尚未完全被寫入,那在完全恢復的時候當然也是需要的。
inactive:所有的臟數據塊都寫入了以后那日志就會變成inactive的狀態,也就是說完全恢復的時候是用不到的,但是如果是在做不完全恢復的時候還是需要用到的。在o小白學ocp的時代,常常把這些狀態和歸檔搞起來,但是現在看來,兩者是毫無關系的。
unused :也就是說從來沒有被寫入過的日志文件,剛剛添加的日志文件或者在restlogs以后可能會出現這個狀態。
clearing:發出alter database clear log file的時候出現的狀態,之后立刻會變為unused,應該不常見到。
clearing_current:如果在對當前日志進行操作的時候由于磁盤io或者是寫入文件頭失敗的時候會出現的狀態。
invalidate:當前日志在被歸檔但是卻沒有引起日志的切換出現的狀態,比較詭異,通常是由于歸檔日志文件出錯而導致的狀態(沒有實驗過,o小白看別人的提問得出的結論)
表空間管理也可以說很多,根據面試題的原作者的話,如果你能答出DMT和LMT,那他會繼續問類似于LMT extent有哪些分配方式(自動Automatic和統一Uniform)之類更深層次的題目,以后面試dba的時候是不是也會被大牛給qj掉……
血案(2)單獨一篇說的是oracle的分區表和他的索引,那關于分區表說得還是比較詳細了,篇幅也比較長,本想就索引再開一篇的,但是貌似太理論了,索引目前還講不出清楚,所以留待下次吧。
血 案(3)關鍵的部分是rowid,那需要注意的是rowid在實際的表中是以偽列的形式存在的,雖然你可以查閱到,但是他并不占用表的空間,這個概念要搞 清楚。另外rownum和rowid要分清楚,rownum就是類似于行號,用于top分析的時候用,rowid則是oracle定位一條數據的唯一標 識,具體組成以后有空和大家分享,如果大家等不及的話可以去搜一下,有個被莊老師說成圈圈的大牛寫得很詳細了。
血案(4)的東西蠻多的,有 關于nested loop和hash join不知道o小白說清楚了沒有……wait event相信通過數據庫的簡單監控和血案(4)大家應該有個模糊的印象了,其實o小白也只是知道一個理論,調優涉及得太少。最后那題應用題被pub上很 多人說很經典(注意……是5年前……),那o小白也是看別人看來的,實戰經驗神馬的對我們還沒工作的人來說最討厭了……
血案(5)開放題也 只能這樣了,能力不足,這種都是經驗的積累,你說自己做做實驗也能把數據庫給跑慢么……就算跑慢了也頂多就是重裝一次……有關于raid再抱歉一次,確實 是對raid的理解有了偏差,幸好羊習習提醒,最后應該是……改對了吧……不過也好,這樣也不會忘記了,犯錯不可怕,還堅持以為自己是對的就尷尬了。另外 么raid3啊神馬的大家有興趣也可以去看看,對于讀寫效率啊,容錯啊這些自己做個總結,這塊無論是做什么應該都要知道的吧,自己動動手列張表格沒壞處 的。
番外篇也就總結一下吧,把那些因為篇幅或者比較偏的東西放出來了,不算是偷懶吧……
轉載于:https://blog.51cto.com/oxiaobai/631015
總結
以上是生活随笔為你收集整理的5年前面试题引发的“血案”(番外篇)(总结和乱侃)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 烦人的橙子中文版(烦人的橙子)
- 下一篇: 养牛的前景分析(养牛的前景)