《數(shù)據(jù)庫中事務(wù)與數(shù)據(jù)恢復(fù)》由會員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)庫中事務(wù)與數(shù)據(jù)恢復(fù)(21頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、事 務(wù) 與 數(shù) 據(jù) 恢 復(fù) 了 解 SQL語 句 的 特 點 理 解 事 務(wù) 的 概 念 熟 悉 事 務(wù) 的 特 性 及 應(yīng) 用 范 圍 掌 握 事 務(wù) 控 制 的 基 本 語 句 及 功 能 掌 握 Oracle中 事 務(wù) 的 實 現(xiàn) 及 應(yīng) 用 了 解 數(shù) 據(jù) 庫 恢 復(fù) 原 理 了 解 數(shù) 據(jù) 庫 的 故 障 種 類 及 恢 復(fù) 策 略 了 解 Oracle數(shù) 據(jù) 庫 的 備 份 和 恢 復(fù) 1 目 標(biāo) 事 務(wù) 的 概 念 事 務(wù) ( transaction) 是 訪 問 并 可 能 操 作 各 種 數(shù) 據(jù) 項 的 一 個數(shù) 據(jù) 庫 操 作 序 列 , 這 些 操 作 要 么 全 部 執(zhí)
2、 行 , 要 么 全 部 不 執(zhí)行 , 是 一 個 不 可 分 割 的 工 作 單 位 。 事 務(wù) 由 事 務(wù) 開 始 與 事 務(wù)結(jié) 束 之 間 執(zhí) 行 的 全 部 數(shù) 據(jù) 庫 操 作 組 成 。 p結(jié) 構(gòu) 簡 潔 p功 能 強(qiáng) 大 p簡 單 易 學(xué) 2 事 務(wù) 具 有 以 下 性 質(zhì) : p 原 子 性 ( atomicity) : 事 務(wù) 中 的 全 部 操 作 在 數(shù) 據(jù) 庫 中 是 不 可 分 割 的 ,要 么 全 部 完 成 , 要 么 均 不 執(zhí) 行 ;p 一 致 性 ( consistency) : 幾 個 并 行 執(zhí) 行 的 事 務(wù) , 其 執(zhí) 行 結(jié) 果 必 須 與按 某 一
3、 順 序 串 行 執(zhí) 行 的 結(jié) 果 相 一 致 ;p 隔 離 性 ( isolation) : 事 務(wù) 的 執(zhí) 行 不 受 其 他 事 務(wù) 的 干 擾 , 事 務(wù) 執(zhí) 行 的中 間 結(jié) 果 對 其 他 事 務(wù) 必 須 是 透 明 的 ;p 持 久 性 ( durability) : 對 于 任 意 已 提 交 事 務(wù) , 系 統(tǒng) 必 須 保 證 該 事 務(wù)對 數(shù) 據(jù) 庫 的 改 變 不 被 丟 失 , 即 使 數(shù) 據(jù) 庫 出 現(xiàn) 故 障 。事 務(wù) 的 性 質(zhì) 事 務(wù) 的 狀 態(tài) 為 了 確 保 數(shù) 據(jù) 庫 中 數(shù) 據(jù) 的 正 確 性 , 事 務(wù) 必 須 處 于 以 下 狀態(tài) 之 一 :p 在
4、 表 中 插 入 、 修 改 和 刪 除 記 錄p 活 動 狀 態(tài) ( active) : 事 務(wù) 在 執(zhí) 行 時 的 狀 態(tài) ;p 部 分 提 交 狀 態(tài) ( partially committed) : 事 務(wù) 中 最 后 一 條 語 句 執(zhí)行 后 的 狀 態(tài) ;p 失 敗 狀 態(tài) ( failed) : 事 務(wù) 不 能 正 常 的 執(zhí) 行 時 的 狀 態(tài) ;p 中 止 狀 態(tài) (aborted): 事 務(wù) 回 滾 并 且 數(shù) 據(jù) 庫 已 恢 復(fù) 到 事 務(wù) 開 始 執(zhí)行 前 的 狀 態(tài) ;p 提 交 狀 態(tài) : ( committed) : 事 務(wù) 成 功 完 成 后 的 狀 態(tài) 。 是
5、 所 有 關(guān)系 數(shù) 據(jù) 庫 的 公 共 語 言 3 搭 建 事 務(wù) 演 示 環(huán) 境 字段名說明customerid顧客編號主鍵customername開戶名必填pid身份證號必填18位 telephone聯(lián)系電話必填11位address居住地址可選4 為 便 于 演 示 和 說 明 事 務(wù) 控 制 , 首 先 構(gòu) 建 一 個 簡 易 銀 行 數(shù) 據(jù) 庫 系 統(tǒng) , 為 這 個 數(shù) 據(jù)庫 系 統(tǒng) 設(shè) 計 了 用 戶 信 息 表 ( userinfo) 和 銀 行 卡 信 息 表 ( cardinfo) 字段名稱說明cardid卡號必填 16位curtype貨幣種類必填 默認(rèn)為RMBsavingt
6、ype存款類型必填 0:活期;1:定期;2:定活兩便opendate開戶日期必填 默認(rèn)系統(tǒng)日期openmoney開戶金額必填balance余額必填password密碼必填 6位 默認(rèn)000000isreportloss是否掛失必填 默認(rèn)Ncustomerid顧客編號必填 外鍵 搭 建 事 務(wù) 演 示 環(huán) 境 5 創(chuàng) 建 兩 張 數(shù) 據(jù) 表 的 代 碼 如 下 :create table USERINFO( CUSTOMERID NUMBER(10) not null, CUSTOMERNAME VARCHAR2(16) not null, PID VARCHAR2(18) not null,
7、TELEPHONE VARCHAR2(11) not null, ADDRESS VARCHAR2(200); alter table USERINFO add primary key (CUSTOMERID); create table CARDINFO( CARDID VARCHAR2(16) not null, CURTYPE CHAR(3) default RMB not null, SAVINGTYPE CHAR(3) not null, OPENDATE DATE default sysdate, OPENMONEY FLOAT not null, BALANCE FLOAT no
8、t null, PASS VARCHAR2(6) default 000000 not null, OSREPORTLOSS CHAR(1) default N not null, CUTOMERID NUMBER(10) not null);alter table CARDINFO add primary key (CARDID); alter table CARDINFO add foreign key (CUTOMERID) references USERINFO (CUSTOMERID); 事 務(wù) 的 開 始 與 結(jié) 束 6 Oracle中 不 需 要 使 用 專 門 的 語 句 來
9、顯 式 的 表 示 事 務(wù) 的 開 始 。 事 務(wù) 會 在 修改 數(shù) 據(jù) 的 第 一 條 語 句 處 隱 式 的 開 始 。 在 Oracle中 也 可 以 使 用 SET TRANSACTION或 DBMS_TRANSACTION語 句 來 顯 式 的 開 始 一 個 事 務(wù) 。顯 示 開 始 事 務(wù) 的 語 法 格 式 如 下 : SET TRANSACTION READ ONLY | USE ROLLBACK SEGMENT segment在 Oracle中 執(zhí) 行 SQL語 句 時 , 一 定 要 顯 式 的 使 用 COMMIT或 者ROLLBACK語 句 來 結(jié) 束 事 務(wù) 。 如
10、 果 正 常 的 退 出 Oracle的 SQL*Plus時 ,沒 有 使 用 COMMIT或 者 ROLLBACK語 句 結(jié) 束 事 務(wù) , 則 SQL*Plus會 認(rèn) 為用 戶 希 望 提 交 前 面 所 做 的 工 作 , 并 自 動 為 用 戶 完 成 提 交 。 但 不 要 過 分 的依 賴 這 種 隱 式 提 交 方 式 , 建 議 顯 式 的 使 用 COMMIT或 ROLLBACK語 句來 結(jié) 束 事 務(wù) 。 事 務(wù) 的 提 交在 Oracle中 , 事 務(wù) 有 顯 式 提 交 和 隱 式 提 交 兩 種 方 式 , 但 在實 際 使 用 時 建 議 使 用 COMMIT語 句
11、 來 顯 式 提 交 事 務(wù) 。COMMIT語 句 的 語 法 格 式 如 下 : COMMIT WORK COMMENT text| FORCE text , integer; 其 中 , COMMIT或 者 COMMIT WORK語 句 都 可 以 用 來 提 交事 務(wù) 。 COMMIT語 句 還 可 以 擴(kuò) 展 用 于 分 布 式 事 務(wù) 中 。 在 這些 擴(kuò) 展 中 , 允 許 增 加 一 些 有 意 義 的 注 釋 作 為 COMMIT的 標(biāo)簽 務(wù) 。 事 務(wù) 的 回 滾 與 保 存 點在 Oracle中 , 回 滾 事 務(wù) 使 用 的 是 ROLLBACK語 句 。ROLLBACK
12、語 句 的 語 法 格 式 如 下 : ROLLBACK WORK TO SAVEPOINT savepoint|FORCE text 直 接 使 用 ROLLBACK或 ROLLBACk WORK語 句 都 可 以 回滾 事 務(wù) , 撤 銷 上 次 正 常 提 交 后 的 所 有 操 作 。 其 中 ,SAVEPOINT表 示 允 許 在 事 務(wù) 中 創(chuàng) 建 一 個 “ 標(biāo) 記 點 ” , 以 便只 撤 銷 整 個 事 務(wù) 過 程 中 的 部 分 操 作 , 在 一 個 事 務(wù) 中 可 以 有多 個 SAVEPOINT。 事 務(wù) 隔 離 級 別 對 于 并 發(fā) 運(yùn) 行 的 多 個 事 務(wù) ,
13、 當(dāng) 這 些 事 務(wù) 操 作 數(shù) 據(jù) 庫 中 相同 的 數(shù) 據(jù) 時 , 如 果 沒 有 采 取 必 要 的 隔 離 機(jī) 制 , 就 會 導(dǎo) 致各 種 并 發(fā) 問 題 , 這 些 并 發(fā) 問 題 主 要 可 以 歸 納 為 以 下 幾 類 : p 更 新 丟 失 ( lost update) p 臟 讀 ( dirty read) p 不 可 重 復(fù) 讀 ( non-repeatableread) p 幻 讀 ( phantom read) 3 事 務(wù) 隔 離 級 別 為 了 避 免 這 些 并 發(fā) 問 題 的 出 現(xiàn) , 以 保 證 數(shù) 據(jù) 的 完 整 性 和一 致 性 , 必 須 實 現(xiàn) 事
14、 務(wù) 的 隔 離 性 。 事 務(wù) 的 隔 離 級 別 用 來定 義 事 務(wù) 與 事 務(wù) 之 間 的 隔 離 程 度 。 ANSI/ISO SQL92標(biāo)準(zhǔn) 定 義 了 一 些 數(shù) 據(jù) 庫 操 作 的 隔 離 級 別 :p 序 列 化 級 別 ( serializable) p 可 重 復(fù) 讀 ( repeatable read) p 讀 已 提 交 ( read committed) p 讀 未 提 交 ( read uncommitted) 3 事 務(wù) 隔 離 級 別 隔 離 級 別 及 其 對 應(yīng) 的 可 能 出 現(xiàn) 或 不 可 能 出 現(xiàn) 的 現(xiàn) 象 如 表所 示 : 3 隔離級別更新丟失
15、臟讀不可重復(fù)讀幻讀讀未提交N Y Y Y讀已提交N N Y Y可重復(fù)讀N N N Y序列化N N N N 數(shù) 據(jù) 恢 復(fù) 概 述 盡 管 數(shù) 據(jù) 庫 系 統(tǒng) 采 取 了 各 種 保 護(hù) 措 施 來 防 止 數(shù) 據(jù) 庫 的 一 致 性 、 安 全 性和 完 整 性 遭 到 破 壞 , 但 是 計 算 機(jī) 系 統(tǒng) 中 硬 件 的 故 障 、 軟 件 的 錯 誤 、 操作 者 的 失 誤 以 及 來 自 外 部 的 惡 意 破 壞 仍 是 不 可 避 免 的 , 這 些 故 障 輕 則造 成 正 在 運(yùn) 行 的 事 務(wù) 非 正 常 中 斷 , 從 而 影 響 數(shù) 據(jù) 庫 中 數(shù) 據(jù) 的 正 確 性
16、,重 則 破 壞 數(shù) 據(jù) 庫 , 使 數(shù) 據(jù) 庫 中 的 數(shù) 據(jù) 全 部 或 部 分 丟 失 , 因 此 數(shù) 據(jù) 庫 管理 系 統(tǒng) 必 須 具 有 把 數(shù) 據(jù) 庫 從 錯 誤 狀 態(tài) 恢 復(fù) 到 某 一 已 知 的 正 確 狀 態(tài) 的 功能 , 這 就 是 數(shù) 據(jù) 庫 恢 復(fù) 技 術(shù) 。 2 數(shù) 據(jù) 轉(zhuǎn) 儲 數(shù) 據(jù) 轉(zhuǎn) 儲 是 數(shù) 據(jù) 庫 恢 復(fù) 中 最 經(jīng) 常 采 用 的 技 術(shù) 。 所謂 轉(zhuǎn) 儲 即 將 整 個 數(shù) 據(jù) 復(fù) 制 到 磁 帶 或 另 一 個 磁 盤 上保 存 起 來 的 過 程 。 這 些 備 用 的 數(shù) 據(jù) 文 本 稱 為 后 備副 本 或 后 援 副 本 。 p靜 態(tài) 轉(zhuǎn)
17、 儲 p動 態(tài) 轉(zhuǎn) 儲 2 日 志 文 件 日 志 文 件 是 用 來 記 錄 事 務(wù) 對 數(shù) 據(jù) 庫 的 更 新 操 作 的文 件 。 日 志 文 件 在 數(shù) 據(jù) 庫 恢 復(fù) 中 起 著 非 常 重 要 的作 用 。 可 以 用 來 進(jìn) 行 事 務(wù) 故 障 恢 復(fù) 和 系 統(tǒng) 故 障 恢復(fù) , 并 協(xié) 助 后 備 副 本 進(jìn) 行 介 質(zhì) 故 障 恢 復(fù) 。 不 同 數(shù) 據(jù) 庫 系 統(tǒng) 采 用 的 日 志 文 件 格 式 并 不 完 全 一樣 。 概 括 起 來 日 志 文 件 主 要 有 兩 種 格 式 : 以 記 錄為 單 位 的 日 志 文 件 和 以 數(shù) 據(jù) 塊 為 單 位 的 日 志
18、 文 件 。 2 數(shù) 據(jù) 庫 故 障 種 類 數(shù) 據(jù) 庫 系 統(tǒng) 中 可 能 發(fā) 生 各 種 各 樣 的 故 障 , 這 些 故障 大 致 可 以 分 以 下 幾 類 : p事 務(wù) 內(nèi) 部 的 故 障 p系 統(tǒng) 故 障p介 質(zhì) 故 障p計 算 機(jī) 病 毒 2 故 障 恢 復(fù) 機(jī) 制 當(dāng) 系 統(tǒng) 運(yùn) 行 過 程 中 發(fā) 生 故 障 時 , 利 用 數(shù) 據(jù) 庫 后 備 副 本 和 日志 文 件 可 以 將 數(shù) 據(jù) 庫 恢 復(fù) 到 故 障 前 的 某 個 一 致 性 狀 態(tài) , 根據(jù) 故 障 類 型 的 不 同 , 恢 復(fù) 的 策 略 和 方 法 也 不 一 樣 。p事 務(wù) 故 障 的 恢 復(fù) p系
19、 統(tǒng) 故 障 的 恢 復(fù)p介 質(zhì) 故 障 的 恢 復(fù) 2 Oracle數(shù) 據(jù) 庫 的 備 份 與 恢 復(fù) Oracle數(shù) 據(jù) 庫 有 三 種 標(biāo) 準(zhǔn) 的 備 份 方 法 : 導(dǎo) 出 導(dǎo)入 、 熱 備 份 和 冷 備 份 。 其 中 , 導(dǎo) 出 備 件 是 一 種 邏輯 備 份 , 冷 備 份 和 熱 備 份 都 是 物 理 備 份 。p導(dǎo) 出 /導(dǎo) 入 ( Export/Import) p冷 備 份p熱 備 份 2 事 務(wù) 是 用 戶 定 義 的 數(shù) 據(jù) 庫 操 作 序 列 事 務(wù) 的 基 本 操 作 包 括 事 務(wù) 開 始 、 事 務(wù) 讀 寫 、 事 務(wù) 結(jié) 束 和 事 務(wù) 提 交 事 務(wù) 特 性 包 括 原 子 性 、 一 致 性 、 隔 離 性 和 持 久 性 , 簡 稱 ACID 事 務(wù) 開 始 前 可 以 通 過 語 句 設(shè) 置 當(dāng) 前 事 務(wù) 的 執(zhí) 行 屬 性 , 如 : 是 否 可 讀 、是 否 可 寫 、 隔 離 級 別 等 數(shù) 據(jù) 恢 復(fù) 的 基 本 單 位 是 事 務(wù) 可 能 發(fā) 生 的 故 障 大 致 分 為 : 事 務(wù) 故 障 、 系 統(tǒng) 故 障 、 介 質(zhì) 故 障 數(shù) 據(jù) 恢 復(fù) 的 基 本 策 略 是 : 轉(zhuǎn) 存 數(shù) 據(jù) 庫 、 日 志 文 件 等 31 小 結(jié) 謝 謝 !