【資料庫原理及應用】經典題庫附答案(14章全)——第一章:資料庫基礎知識
【資料庫原理及應用】經典題庫附答案(14章全)——第二章:關系資料庫知識
【資料庫原理及應用】經典題庫附答案(14章全)——第三章:結構化查詢語言SQL
【資料庫原理及應用】經典題庫附答案(14章全)——第四章:關系系統及其優化
【資料庫原理及應用】經典題庫附答案(14章全)——第五章:關系資料理論
【資料庫原理及應用】經典題庫附答案(14章全)——第六章:關系資料庫設計程序
【資料庫原理及應用】經典題庫附答案(14章全)——第七章:資料庫恢復技術
【資料庫原理及應用】經典題庫附答案(14章全)——第八章:資料庫并發控制
【資料庫原理及應用】經典題庫附答案(14章全)——第九章:資料庫安全性
【資料庫原理及應用】經典題庫附答案(14章全)——第十章:資料庫完整性
【資料庫原理及應用】經典題庫附答案(14章全)——第十二章:資料庫技術新發展
【資料庫原理及應用】經典題庫附答案(14章全)——第十三章:面向物件程資料庫系統
【資料庫原理及應用】經典題庫附答案(14章全)——第十四章:分布式資料庫系統
文章目錄
- 一、選擇題
- 二、簡答題
一、選擇題
-
一個事務的執行,要么全部完成,要么全部不做,一個事務中對資料庫的所有操作都是一個不可分割的操作序列的屬性是( ) .
A. 原子性 B. 一致性
C. 獨立性 D. 持久性 -
表示兩個或多個事務可以同時運行而不互相影響的是( ).
A. 原子性 B. 一致性
C. 獨立性 D. 持久性 -
事務的持續性是指( )
A.事務中包括的所有操作要么都做,要么都不做.
B.事務一旦提交,對資料庫的改變是永久的.
C.一個事務內部的操作對并發的其他事務是隔離的.
D.事務必須是使資料庫從一個一致性狀態變到另一個一致性狀態. -
SQL語言中的COMMIT陳述句的主要作用是( ).
A. 結束程式 B. 回傳系統
C. 提交事務 D. 存盤資料 -
SQL語言中用( )陳述句實作事務的回滾
A. CREATE TABLE B. ROLLBACK
C. GRANT和REVOKE D. COMMIT -
若系統在運行程序中,由于某種硬體故障,使存盤在外存上的資料部分損失或全部損失,這種情況稱為( ).
A. 介質故障 B. 運行故障
C. 系統故障 D. 事務故障 -
在DBMS中實作事務持久性的子系統是( ).
A. 安全管理子系統 B. 完整性管理子系統
C. 并發控制子系統 D. 恢復管理子系統 -
后援副本的作用是( ).
A. 保障安全性 B. 一致性控制
C. 故障后的恢復 D. 資料的轉儲 -
事務日志用于保存( ).
A. 程式運行程序 B. 程式的執行結果
C. 對資料的更新操作 D. 資料操作 -
資料庫恢復的基礎是利用轉儲的冗余資料.這些轉儲的冗余資料包括( ).
A. 資料字典,應用程式,審計檔案,資料庫后備副本
B. 資料字典,應用程式,審計檔案,日志檔案
C. 日志檔案,資料庫后備副本
D. 資料字典,應用程式,資料庫后備副本
選擇題答案:
(1) A (2) C (3) B (4) C (5) B
(6) A (7) D (8) C (9) C (10) C
二、簡答題
1.試述事務的概念及事務的四個特性.
答: 事務是用戶定義的一個資料庫操作序列,這些操作要么全做要么全不做,是一個不可分割的作業單位.
事務具有四個特性:原子性(Atomicity),一致性(Consistency),隔離性(Isolation)和持續性(Durability).這個四個特性也簡稱為ACID特性.
原子性:事務是資料庫的邏輯作業單位,事務中包括的諸操作要么都做,要么都不做.
一致性:事務執行的結果必須是使資料庫從一個一致性狀態變到另一個一致性狀態.
隔離性:一個事務的執行不能被其他事務干擾.即一個事務內部的操作及使用的資料對其他并發事務是隔離的,并發執行的各個事務之間不能互相干擾.
持續性:持續性也稱永久性(Permanence),指一個事務一旦提交,它對資料庫中資料的改變就應該是永久性的.接下來的其他操作或故障不應該對其執行結果有任何影響.
2.為什么事務非正常結束時會影響資料庫資料的正確性,請列舉一例說明之.
答: 事務執行的結果必須是使資料庫從一個一致性狀態變到另一個一致性狀態.如果資料庫系統運行中發生故障,有些事務尚未完成就被迫中斷,這些未完成事務對資料庫所做的修改有一部分已寫入物理資料庫,這時資料庫就處于一種不正確的狀態,或者說是不一致的狀態.
例如某工廠的庫存管理系統中,要把數量為Q的某種零件從倉庫1移到倉庫2存放.
則可以定義一個事務T,T包括兩個操作;Q1=Q1-Q,Q2=Q2+Q.如果T非正常終止時只做了第一個操作,則資料庫就處于不一致性狀態,庫存量無緣無故少了Q.
3.資料庫中為什么要有恢復子系統 它的功能是什么
答: 因為計算機系統中硬體的故障,軟體的錯誤,操作員的失誤以及惡意的破壞是不可避免的,這些故障輕則造成運行事務非正常中斷,影響資料庫中資料的正確性,重則破壞資料庫,使資料庫中全部或部分資料丟失,因此必須要有恢復子系統.
恢復子系統的功能是:把資料庫從錯誤狀態恢復到某一已知的正確狀態(亦稱為一致狀態或完整狀態).
4.資料庫運行中可能產生的故障有哪幾類 哪些故障影響事務的正常執行 哪些故障破壞資料庫資料
答:資料庫系統中可能發生各種各樣的故障,大致可以分以下幾類:
(1)事務內部的故障;
(2)系統故障;
(3)介質故障;
(4)計算機病毒.
事務故障,系統故障和介質故障影響事務的正常執行;介質故障和計算機病毒破壞資料
庫資料.
5.據庫恢復的基本技術有哪些
答:資料轉儲和登錄日志檔案是資料庫恢復的基本技術.
當系統運行程序中發生故障,利用轉儲的資料庫后備副本和日志檔案就可以將資料庫恢復到故障前的某個一致性狀態.
6. 資料庫轉儲的意義是什么 試比較各種資料轉儲方法.
答: 資料轉儲是資料庫恢復中采用的基本技術.所謂轉儲即DBA定期地將資料庫復制到磁帶或另一個磁盤上保存起來的程序.當資料庫遭到破壞后可以將后備副本重新裝入,將資料庫恢復到轉儲時的狀態.
靜態轉儲:在系統中無運行事務時進行的轉儲操作.靜態轉儲簡單,但必須等待正運行的用戶事務結束才能進行.同樣,新的事務必須等待轉儲結束才能執行.顯然,這會降低資料庫的可用性.
動態轉儲:指轉儲期間允許對資料庫進行存取或修改.動態轉儲可克服靜態轉儲的缺點,它不用等待正在運行的用戶事務結束,也不會影響新事務的運行.但是,轉儲結束時后援副本上的資料并不能保證正確有效.因為轉儲期間運行的事務可能修改了某些資料,使得后援副本上的資料不是資料庫的一致版本.
為此,必須把轉儲期間各事務對資料庫的修改活動登記下來,建立日志檔案(log file).這樣,后援副本加上日志檔案就能得到資料庫某一時刻的正確狀態.
轉儲還可以分為海量轉儲和增量轉儲兩種方式.
海量轉儲是指每次轉儲全部資料庫.增量轉儲則指每次只轉儲上一次轉儲后更新過的資料.從恢復角度看,使用海量轉儲得到的后備副本進行恢復一般說來更簡單些.但如果資料庫很大,事務處理又十分頻繁,則增量轉儲方式更實用更有效.
7. 什么是日志檔案 為什么要設立日志檔案
答: (1)日志檔案是用來記錄事務對資料庫的更新操作的檔案.
(2)設立日志檔案的目的是: 進行事務故障恢復;進行系統故障恢復;協助后備副本進行介質故障恢復.
8. 登記日志檔案時為什么必須先寫日志檔案,后寫資料庫
答: 把對資料的修改寫到資料庫中和把表示這個修改的日志記錄寫到日志檔案中是兩個不同的操作.有可能在這兩個操作之間發生故障,即這兩個寫操作只完成了一個.
如果先寫了資料庫修改,而在運行記錄中沒有登記這個修改,則以后就無法恢復這個修改了.如果先寫日志,但沒有修改資料庫,在恢復時只不過是多執行一次UNDO操作,并不會影響資料庫的正確性.所以一定要先寫日志檔案,即首先把日志記錄寫到日志檔案中,然后寫資料庫的修改.
9. 針對不同的故障,試給出恢復的策略和方法.(即如何進行事務故障的恢復 系統故障的恢復 介質故障恢復 )
答: 事務故障的恢復:
事務故障的恢復是由DBMS自動完成的,對用戶是透明的.
DBMS執行恢復步驟是:
(1)反向掃描檔案日志(即從最后向前掃描日志檔案),查找該事務的更新操作.
(2)對該事務的更新操作執行逆操作.即將日志記錄中"更新前的值"寫入資料庫.
(3)繼續反向掃描日志檔案,做同樣處理.
(4)如此處理下去,直至讀到此事務的開始標記,該事務故障的恢復就完成了.
答: 系統故障的恢復:
系統故障可能會造成資料庫處于不一致狀態:
一是未完成事務對資料庫的更新可能已寫入資料庫;
二是已提交事務對資料庫的更新可能還留在緩沖區,沒來得及寫入資料庫.
因此恢復操作就是要撤銷(UNDO)故障發生時未完成的事務,重做(REDO)已完成的事務.
系統的恢復步驟是:
(1)正向掃描日志檔案,找出在故障發生前已經提交的事務佇列(REDO佇列)和未完成的事務佇列(UNDO佇列).
(2)對撤銷佇列中的各個事務進行UNDO處理.
進行UNDO處理的方法是,反向掃描日志檔案,對每個UNDO事務的更新操作執行逆操作,即將日志記錄中"更新前的值"(Before Image)寫入資料庫.
(3)對重做佇列中的各個事務進行REDO處理.
進行REDO處理的方法是:正向掃描日志檔案,對每個REDO事務重新執行日志檔案登記的操作.即將日志記錄中"更新后的值"(After Image)寫入資料庫.
*決議:
在第(1)步中如何找出REDO佇列和UNDO佇列 請大家思考一下.
下面給出一個演算法:
1) 建立兩個事務佇列:
· UNDO-LIST: 需要執行undo操作的事務集合;
· REDO-LIST: 需要執行redo操作的事務集合;
兩個事務佇列初始均為空.
2) 從日志檔案頭開始,正向掃描日志檔案
· 如有新開始(遇到Begin Transaction)的事務Ti,把Ti暫時放入UNDO-LIST佇列;
· 如有提交的事務(遇到End Transaction)Tj,把Tj從UNDO-LIST佇列移到REDO-LIST佇列;
直到日志檔案結束
答: 介質故障的恢復:
介質故障是最嚴重的一種故障.
恢復方法是重裝資料庫,然后重做已完成的事務.具體程序是:
(1)DBA裝入最新的資料庫后備副本(離故障發生時刻最近的轉儲副本),使資料庫恢復到轉儲時的一致性狀態.
(2)DBA裝入轉儲結束時刻的日志檔案副本
(3)DBA啟動系統恢復命令,由DBMS完成恢復功能,即重做已完成的事務.
*決議
1)我們假定采用的是靜態轉儲,因此第(1)步裝入資料庫后備副本便可以了.
2)如果采用的是靜動態轉儲,第(1)步裝入資料庫后備副本還不夠,還需同時裝入轉儲開始時刻的日志檔案副本,經過處理后才能得到正確的資料庫后備副本.
3)第(2)步重做已完成的事務的演算法是:
a. 正向掃描日志檔案,找出故障發生前已提交的事務的標識,將其記入重做佇列
b. 再一次正向掃描日志檔案,對重做佇列中的所有事務進行重做處理.即將日志記錄中"更新后的值"寫入資料庫.
10. 具有檢查點的恢復技術有什么優點
答: 利用日志技術進行資料庫恢復時,恢復子系統必須搜索日志,確定哪些事務需要REDO,哪些事務需要UNDO.一般來說,需要檢查所有日志記錄.這樣做有兩個問題:
一是搜索整個日志將耗費大量的時間.
二是很多需要REDO處理的事務實際上已經將它們的更新操作結果寫到資料庫中了,恢復子系統又重新執行了這些操作,浪費了大量時間.
檢查點技術就是為了解決這些問題.
11. 試述使用檢查點方法進行恢復的步驟.
答: ① 從重新開始檔案中找到最后一個檢查點記錄在日志檔案中的地址,由該地址在日志檔案中找到最后一個檢查點記錄.
② 由該檢查點記錄得到檢查點建立時刻所有正在執行的事務清單ACTIVE-LIST.
這里建立兩個事務佇列:
· UNDO-LIST: 需要執行undo操作的事務集合;
· REDO-LIST: 需要執行redo操作的事務集合;
把ACTIVE-LIST暫時放入UNDO-LIST佇列,REDO佇列暫為空.
③ 從檢查點開始正向掃描日志檔案
· 如有新開始的事務Ti,把Ti暫時放入UNDO-LIST佇列;
· 如有提交的事務Tj,把Tj從UNDO-LIST佇列移到REDO-LIST佇列,直到日志檔案結束;
④ 對UNDO-LIST中的每個事務執行UNDO操作, 對REDO-LIST中的每個事務執行REDO操作.
12. 什么是資料庫鏡像 它有什么用途
答: 資料庫鏡像即根據DBA的要求,自動把整個資料庫或者其中的部分關鍵資料復制到另一個磁盤上.每當主資料庫更新時,DBMS自動把更新后的資料復制過去,即DBMS自動保證鏡像資料與主資料的一致性.
資料庫鏡像的用途有:
一是用于資料庫恢復.當出現介質故障時,可由鏡像磁盤繼續提供使用,同時DBMS自動利用鏡像磁盤資料進行資料庫的恢復,不需要關閉系統和重裝資料庫副本.
二是提高資料庫的可用性.在沒有出現故障時,當一個用戶對某個資料加排它鎖進行修改時,其他用戶可以讀鏡像資料庫上的資料,而不必等待該用戶釋放鎖.
13. 試述你了解的某一個實際的DBMS產品中采用的恢復策略.
答:
下面簡單介紹一下Oracle的恢復技術:
Oracle中恢復機制也采用了轉儲和登記日志檔案兩個技術.
Oracle向DBA提供了多種轉儲后備副本的方法,如檔案拷貝,利用Oracle的Export實用程式,用SQL命令Spool以及自己編程實作等.相應地,Oracle也提供了多種重裝后備副本的方法,如檔案拷貝,利用Oracle的Import實用程式,利用SQL*LOADER以及自己編程實作等.
在Oracle 早期版本(V.5)中,日志檔案以資料塊為單位,也就是說,Oracle的恢復操作是基于資料塊的,不是基于操作的.Oracle中記錄資料庫更新前的舊值的日志檔案稱為資料庫前像檔案(Before Image,簡稱BI檔案),記錄資料庫更新后的新值的日志檔案稱為資料庫的后像檔案(After Image,簡稱AI檔案).BI檔案是必須配置的,AI檔案是可以任選的.
Oracle7為了能夠在出現故障時更有效地恢復資料,也為了解決讀"臟"資料問題,提供了REDO日志檔案和回滾段(Rollback Segment).REDO日志檔案中記錄了被更新資料的前像和后像.回滾段記錄更新資料的前像,設在資料庫緩沖區中.在利用日志檔案進行故障恢復時,為減少掃描日志檔案的遍數,Oracle7首先掃描REDO日志檔案,重做所有操作,包括未正常提交的事務的操作,然后再根據回滾段中的資料,撤銷未正常提交的事務的操作.
詳細技術希望同學自己設法了解Oracle最新版本的介紹,例如通過INTERNET訪問Oracle公司的網站.也可以了解其他DBMS廠商的產品情況.
14. 試用恢復的基本技術設計一個恢復子系統,給出這個子系統的恢復策略,包括:
(a) 當產生某一類故障時如何恢復資料庫的方法;
(b) 日志檔案的結構;
(c) 登記日志檔案的方法;
(d) 利用日志檔案恢復事務的方法;
(e) 轉儲的型別;
(f) 轉儲的后備副本和日志檔案如何配合使用.
*決議
這是一個大作業.可以綜合復習和運用學到的知識.設計一個恢復子系統.
例如,日志檔案的結構你可以記錄為單位,也可以以資料塊為單位.不同的日志檔案結構,登記的日志內容,日志檔案恢復事務的方法也就不同了.
對于研究生,還應該上機模擬實作你設計的恢復子系統.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/276187.html
標籤:其他
上一篇:深入淺出快取和緩沖的異同
