- 相關(guān)推薦
oracle數據庫筆試題
1. 數據庫 數據庫切換日志的時(shí)候,為什么一定要發(fā)生檢查點(diǎn)?這個(gè)檢查點(diǎn)有什么意義? 答:觸發(fā) dbwr 的執行,dbwr 會(huì )把和這個(gè)日志相關(guān)的所有臟隊列寫(xiě)到數據文件里,縮短實(shí)例恢復所需要的 時(shí)間。
2. 表空間管理 管理方式有哪幾種,各有什么優(yōu)劣. 管理 答:字典管理方式和本地管理方式,本地管理方式采用位圖管理 extent,減少字典之間的競爭,同時(shí)避免了 碎片. 本地管理表空間與字典管理表空間相比,其優(yōu)點(diǎn)如下:
1).減少了遞歸空間管理;
2).系統自動(dòng)管理 extents 大小或采用統一 extents 大小;
3).減少了數據字典之間的競爭;
4).不產(chǎn)生回退信息;
5).不需合并相鄰的剩余空間;
6).減少了空間碎片;
7).對臨時(shí)表空間提供了更好的管理.
3. 本地索引與全局索引的差別與適用情況. 答:對于 local 索引,每一個(gè)表分區對應一個(gè)索引分區,當表的分區發(fā)生變化時(shí),索引的維護由 Oracle 自動(dòng) 進(jìn)行.對于 global 索引,可以選擇是否分區,而且索引的分區可以不與表分區相對應.當對分區進(jìn)行維護 操作時(shí),通常會(huì )導致全局索引的 INVALDED,必須在執行完操作后 REBUILD.Oracle9i 提供了 UPDATE GLOBAL INDEXES 語(yǔ)句,可以使在進(jìn)行分區維護的同時(shí)重建全局索引.
4. 一個(gè)表 a varchar2(
1),b number(
1),c
2),有 100000 條記錄,創(chuàng )建 B-Tree 索引在字段 a 上,那么 表與索引誰(shuí)大?為什么? 答:這個(gè)要考慮到 rowid 所占的字節數,假設 char 總是占用 2 字節的情況,比較 rowid,另外,table 和 index 在 segment free block 的管理也有差別.
5. Oracle9i 的 data guard 有幾種模式,各有什么差別. 答:三種模式: 最大性能(maximize performance):這是 data guard 默認的保護模式.primay 上的事務(wù) commit 前不需要從 standby 上收到反饋信息.該模式在 primary 故障時(shí)可能丟失數據,但 standby 對 primary 的性能影響最 小. 最大可用(maximize availability):在正常情況下,最大可用模式和最大保護模式一樣;在 standby 不可用時(shí), 最大可用模式自動(dòng)最大性能模式,所以 standby 故障不會(huì )導致 primay 不可用.只要至少有一個(gè) standby 可
用的情況下,即使 primarydown 機,也能保證不丟失數據. 最大保護(maximize protection):最高級別的保護模式.primay 上的事務(wù)在 commit 前必須確認 redo 已經(jīng)傳 遞到至少一個(gè) standby 上,如果所有 standby 不可用,則 primary 會(huì )掛起.該模式能保證零數據丟失.
6. 執行計劃是什么,查看執行計劃一般有哪幾種方式. 答:執行計劃是數據庫內部的執行步驟: set autotrace on select * from table alter session set event 10046 trace name context forever,level 12 ; SYS.DBMS\_SYSTEM.SET\_SQL\_TRACE\_IN\_SESSION=(SID,SERIAL#,TRUE); 一般采用 pl/sql developer,再加個(gè) explain plan , v$sql\_plan.
7. 簡(jiǎn)單描述一下 nest loop 與 hash join 的差別. 答:nest loop 適用于返回結果比較小的情況. for in
1...n loop 對小表進(jìn)行遍歷 根據小表的結果遍歷大表(大表需要索引) end loop hash join 適用在返回大結果集的情況.
8. db file sequential read 與 db file scattered read 等待的差別,如果以上等待比較多,證明了什么問(wèn)題? 答:db file sequential read-DB 文件順序讀取,這一事件通常顯示與單個(gè)數據塊相關(guān)的讀取操作(如索引讀 取).如果這個(gè)等待事件比較顯著(zhù),可能表示在多表連接中,表的連接順序存在問(wèn)題,可能沒(méi)有正確的使用 驅動(dòng)表;或者可能說(shuō)明不加選擇地進(jìn)行索引.在大多數情況下我們說(shuō),通過(guò)索引可以更為快速的獲取記錄, 所以對于一個(gè)編碼規范,調整良好的數據庫,這個(gè)等待很大是很正常的.但是在很多情況下,使用索引并 不是最佳的選擇,比如讀取較大表中大量的數據,全表掃描可能會(huì )明顯快于索引掃描,所以在開(kāi)發(fā)中我們 就應該注意,對于這樣的查詢(xún)應該進(jìn)行避免使用索引掃描. db file sequential read-DB 檔分散讀取,這種情況通常顯示與全表掃描相關(guān)的等待. 當數據庫進(jìn)行全表掃時(shí), 基于性能的考慮,數據會(huì )分散(scattered)讀入 Buffer Cache.如果這個(gè)等待事件比較顯著(zhù),可能說(shuō)明對于 某些全表掃描的表,沒(méi)有創(chuàng )建索引或者沒(méi)有創(chuàng )建合適的索引,我們可能需要檢查這些數據表已確定是否進(jìn) 行了正確的設置.然而這個(gè)等待事件不一定意味著(zhù)性能低下,在某些條件下 Oracle 會(huì )主動(dòng)使用全表掃描 來(lái)替換索引掃描以提高性能, 這和訪(fǎng)問(wèn)的數據量有關(guān), CBO 下 Oracle 會(huì )進(jìn)行更為智能的選擇, RBO 在 在 下 Oracle 更傾向于使用索引.當這個(gè)等待事件比較顯著(zhù)時(shí),可以結合 v$session\_longops 動(dòng)態(tài)性能視圖
來(lái)進(jìn)行診斷,該視圖中記錄了長(cháng)時(shí)間(運行時(shí)間超過(guò) 6 秒的)運行的事物,可能很多是全表掃描操作(不管怎 樣,這部分信息都是值得我們注意的).
9. library cache pin 與 library cache lock 是什么地方的等待事件,一般說(shuō)明什么問(wèn)題? 答:"LIBRARY CACHE PIN"通常是發(fā)生在編譯或重新編譯 PL/SQL,VIEW,TYPES 等 object 時(shí).
10. 在一個(gè) 24*7 的應用上,需要把一個(gè)訪(fǎng)問(wèn)量很大的 1000 萬(wàn)以上數據級別的表的普通索引(a,b)修改成唯 一約束(a,b,c),你一般會(huì )選擇怎么做,請說(shuō)出具體的操作步驟與語(yǔ)句. 答:不能確定,是否可以采用先建索引后建約束: create index idx\_w1 on w\_1 (a,b,c) online ; alter table w\_1 add constraint uni\_w1 unique (a,b,c) novalidate;
11. 如果一個(gè) linux 上的 oracle 數據庫系統突然變慢,你一般從哪里去查找原因. 答:
1).用 vmstat,iostat 命令查看系統的負載(I/O 讀寫(xiě)是否嚴重,CPU 是否空閑).
2).用 top 工具查看有哪些進(jìn)程 CPU 占用率高;
3). 查詢(xún) v$session\_wait 和 v$system\_event 數據字典,找出當前比較嚴重的等待事件,并試圖優(yōu)化影響性 能的 SQL 語(yǔ)句.
12. 說(shuō)明一下對 raid5 與 raid01/10 的認識. 答:raid5 采用校驗信息,硬盤(pán)的利用率 n-1/n, 以 RAID5(4D+P)為例子來(lái)講,使用 4 塊磁盤(pán)存放數據位,使 用 1 塊磁盤(pán)存放校驗位.其基本原理是這樣的:根據條帶化的數據 4D(使用四位數據)生成一位的校驗信息, 存放在第五塊磁盤(pán)中. raid10 先采用先鏡像在進(jìn)行條帶化,是最高效的硬盤(pán)利用方式,硬盤(pán)的利用率 50\%,是一個(gè) Raid 0 與 Raid1 的組合體,它是利用奇偶校驗實(shí)現條帶集鏡像,所以它繼承了 Raid0 的快速和 Raid1 的安全.
13. 列舉 5 個(gè) 10g 的新特性. 答:
1).自動(dòng)共享內存(SGA)管理
2).自動(dòng)存儲管理(ASM)
3).ADDM 和查詢(xún)優(yōu)化器
4).閃回表(flashback table)
5).Data Pump(expdp,impdp)
14.char 與 varchar 的區別 char 是固定長(cháng)度的字符串;varchar 是可變長(cháng)度的字符串
【oracle數據庫筆試題】相關(guān)文章:
oracle 技術(shù)筆試題02-18
益和電力Oracle筆試題分享11-21
Oracle認證11-14
數據庫常見(jiàn)筆試面試題11-11
Oracle筆試,攢RP中02-18
Oracle筆試,分享筆試內容11-21
迅雷JAVA廣州站二筆筆試題目分享11-21