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