內容簡介
本書提供瞭全麵、實用的建議,以保證在復雜的生産環境中,能可靠且高效地運行Oracle 數據庫。七位主要的Oracle 專傢對Oracle 12c、11g 和其他最近版本的Oracle 數據庫匯集瞭一係列經過驗證的解決方案、實踐的例子以及循序漸進的技巧。每一個解決方案都是精心設計的,以幫助有經驗的Oracle DBA和DMA 盡可能快地理解和修復嚴重的問題。本書不僅涵蓋瞭LOB 段、undo 錶空間、高GC 緩衝區等待事件、糟糕的查詢響應時間、閂鎖爭用、索引、XA 分布式事務、RMAN 備份/ 恢復等內容,還深入地講解瞭DDL 優化、VLDB 調優、數據庫取證、自適應遊標共享、數據泵、數據遷移、SSD、索引等內容,並介紹瞭如何解決Oracle RAC 問題。
作者簡介
Tariq Farooq 是一名Oracle 技術專傢、架構師和問題解決者,在世界上*大的一些組織得非常復雜的環境中從事各種Oracle 技術工作已經超過24 年。Mike Ault 於1980 年開始使用計算機,自1990 年以來,Mike 作為顧問,一直在使用Oracle 的行業工作。Paulo Portugal 作為Oracle DBA,有超過15 年的IT 經驗。他是Oracle 11g OCM, Oracle 9i、 10g、 11g 和12c OCP,Oracle 10g 和11g 認證專傢,Oracle DBA 10g 認證Linux 管理員,Oracle Exadata認證實施專傢。
戴明明,網名:Dave,Oracle ACE-A,ACOUG 核心成員,浙江應用中間件與數據庫用戶組核心成員,CSDN 認證專傢。9年DBA經驗,在Oracle 高可用方麵有一定的經驗積纍。 擅長Oracle數據庫診斷、性能調優,熱衷於Oracle 技術的研究與分享。曾在CSDN博客撰寫博客1000餘篇(http://blog.csdn.net/tianlesoftware)。2012年度CSDN博客十大博客之星。
目錄
第1 章 LOB 段性能的診斷與調優 11.1 LOB 數據類型的介紹 11.1.1 解決LOB 問題:一個真實的案例 21.1.2 另一個真實案例:HW 分析 41.1.3 BASICFILE LOB :更完美的解決方案 71.2 BASICFILE 與SECUREFILE LOB 71.2.1 LOB 新舊類型的差異 81.2.2 遷移BASICFILE LOB 到SECUREFILE LOB 101.3 PCTFREE 對LOB 的影響 121.4 解決糟糕的INSERT 性能 151.5 總結 15第2 章 處理undo 錶空間損壞 162.1 undo 管理概述 162.1.1 UNDO_RETENTION 的重要性 162.1.2 優化UNDO_RETENTION 172.2 DTP、XA 和迴滾段 182.3 undo 錶空間損壞的恢復 202.3.1 預防、檢測和修復損壞 202.3.2 處理內存損壞 212.3.3 處理邏輯損壞 242.3.4 解決介質損壞 242.4 總結 27目錄 ∣ XVII第3 章 處理全局緩存緩衝區忙等待事件 283.1 緩衝區忙等待事件概述 283.2 使用ORAchk 工具 293.2.1 安裝ORAchk 293.2.2 ORAchk 執行結果:示例輸齣 303.3 查找GC 緩衝區忙等待事件 323.3.1 用ADDM 查找事件的信息 333.3.2 用AWR 查找等待事件的信息 333.3.3 用ASH 查找等待事件的信息 353.4 查找GC 緩衝區忙等待事件的原因 363.4.1 使用ASH 視圖查找等待會話 363.4.2 快速查找性能瓶頸 383.5 解決GC 緩衝區忙等待 403.6 總結 41第4 章 自適應遊標共享 424.1 ACS 工作算法 424.1.1 綁定敏感與範圍謂詞 434.1.2 綁定敏感與等式謂詞和直方圖 454.1.3 綁定敏感與分區鍵 464.2 ACS 的使用 484.2.1 監控ACS 的綁定感知 514.2.2 BUCKET_ID 和COUNT 的關係 524.2.3 標記遊標為綁定感知 554.3 遊標綁定感知 614.4 一個真實案例 644.5 總結 69第5 章 使用SPM 穩定查詢響應時間 705.1 入門指南 705.2 創建SQL 計劃基綫 735.2.1 自動捕獲計劃 735.2.2 從遊標緩存加載計劃 765.3 僞造基綫 77XVIII ∣ Oracle數據庫問題解決方案和故障排除手冊5.4 Oracle 優化器和SPM 的交互 815.4.1 當CBO 計劃與SQL 計劃基綫匹配時 825.4.2 當CBO 計劃與SQL 計劃基綫不匹配時 845.4.3 當SQL 計劃基綫不可復製時 895.5 SQL 計劃基綫的復製性 935.5.1 重命名索引 935.5.2 修改索引類型 955.5.3 嚮索引中添加尾列 965.5.4 反嚮索引 975.6 NLS_SORT 與SQL 計劃基綫的復製性 985.7 ALL_ROWS 與FIRST_ROWS 1005.8 自適應遊標共享與SPM 1045.8.1 Oracle 11.2.0.3.0 中的ACS 和SPM 1055.8.2 Oracle 12.1.0.1.0 中的ACS 和SPM 1095.9 總結 112第6 章 DDL 優化技巧和技術 1146.1 DDL 優化的概念 1146.2 DDL 優化的機製 1176.2.1 錶基數估算 1176.2.2 虛擬列中的C_DDL 列 1196.2.3 列組擴展中的C_DDL 列 1206.2.4 C_DDL 的默認值發生變化時 1226.2.5 C_DDL 列和索引 1246.2.6 空列的DDL 優化 1266.3 總結 130第7 章 管理、優化、調整大型數據庫 1317.1 大型數據庫概述 1317.2 優化基本配置 1327.2.1 數據庫倉庫模闆 1327.2.2 優化數據塊大小 1337.2.3 大文件錶空間 1347.2.4 調整SGA 和PGA 135目錄 ∣ XIX7.2.5 臨時錶空間組 1357.2.6 數據分區 1367.2.7 本地分區索引和全局分區索引 1367.2.8 數據壓縮 1377.2.9 錶壓縮 1377.2.10 熱圖和自動數據優化 1377.2.11 高級索引分區壓縮 1387.3 大型數據庫性能調整的原則 1397.3.1 真實的案例 1397.3.2 控製索引對數據加載的影響 1407.3.3 資源利用率的最大化 1417.4 收集統計信息 1427.4.1 增量統計信息摘要 1427.4.2 並發收集統計信息 1447.4.3 設置ESTIMATE_PERCENT 的值 1457.5 備份與恢復的最佳實踐 1457.5.1 Exadata 解決方案 1467.5.2 利用Data Guard 環境 1477.6 總結 147第8 章 RMAN 備份恢復最佳實踐 1488.1 完美的備份恢復計劃 1488.2 概述 1498.3 數據庫備份策略的技巧 1498.3.1 完全備份和增量備份 1508.3.2 壓縮備份 1508.3.3 增量備份 1518.3.4 快速增量備份 1518.3.5 Oracle 閃迴技術之迴退 1528.3.6 基於磁盤的備份解決方案 1538.3.7 增量更新的鏡像副本 1538.4 驗證RMAN 備份 1598.5 備份的優化與調整 1608.6 RAC 集群下的RMAN 162XX ∣ Oracle數據庫問題解決方案和故障排除手冊8.7 恢復目錄 1638.8 恢復策略 1648.9 數據恢復顧問 1658.10 總結 166第9 章 使用AWR 分析優化數據庫(一) 1679.1 什麼是AWR 1679.2 知道要查找什麼 1689.3 報告頭部信息 1699.3.1 負載狀況 1719.3.2 實例效率 1719.3.3 共享池內存 1729.3.4 等待事件 1729.3.5 平均負載 1759.3.6 實例CPU 1759.3.7 內存統計數據 1769.4 RAC 特有的頁麵 1769.4.1 RAC 統計數據 1779.4.2 全局緩存負載統計數據 1779.4.3 全局緩存和隊列服務 1779.4.4 集群互連 1789.5 時間模型統計 1799.6 操作係統統計數據 1809.6.1 前颱等待事件 1819.6.2 後颱等待事件 1829.6.3 等待事件直方圖 1839.6.4 服務相關統計數據 1849.7 SQL 章節 1859.7.1 總運行時間 1859.7.2 總CPU 時間 1859.7.3 總緩衝區獲取 1869.7.4 總磁盤讀 1869.7.5 總執行次數 1869.7.6 解析調用 186目錄 ∣ XXI9.7.7 可共享內存 1879.7.8 版本數 1879.7.9 集群等待時間 1879.8 實例活動統計 1889.8.1 一緻性讀統計數據 1919.8.2 數據塊讀統計數據 1919.8.3 髒塊統計 1919.8.4 隊列統計 1919.8.5 執行計數 1919.8.6 空閑緩衝區統計 1929.8.7 全局緩存統計 1929.8.8 索引掃描統計數據 1929.8.9 葉子節點統計數據 1939.8.10 打開的遊標 1939.8.11 解析統計數據 1939.8.12 物理讀寫統計數據 1939.8.13 遞歸統計數據 1959.8.14 重做相關的統計數據 1959.8.15 會話遊標統計數據 1969.8.16 排序統計數據 1969.8.17 髒隊列長度匯總 1969.8.18 錶獲取統計數據 1979.8.19 事務迴滾 1979.8.20 撤銷更改矢量統計 1979.8.21 用戶統計數據 1989.8.22 工作區統計數據 1989.8.23 實例活動統計——絕對值 1989.8.24 實例活動統計——綫程活動 1999.9 總結 199第10 章 使用AWR 分析優化數據庫(二) 20010.1 錶空間I/O 統計數據 20010.2 緩衝池 20210.2.1 緩衝池統計數據 20310.2.2 實例恢復統計數據 203XXII ∣ Oracle數據庫問題解決方案和故障排除手冊10.2.3 緩衝池建議部分 20410.3 PGA 統計數據 20410.3.1 PGA 匯總 20610.3.2 PGA 總目標統計數據 20610.3.3 PGA 總目標直方圖 20610.3.4 PGA 內存建議 20810.4 共享池統計數據 20810.5 其他建議 20910.5.1 SGA 目標建議 21010.5.2 流池建議 21010.5.3 Java 池建議 21110.6 緩衝區等待統計數據 21110.7 隊列統計數據 21210.8 撤銷段統計數據 21410.9 閂鎖統計數據 21510.9.1 閂鎖活動 21610.9.2 閂鎖休眠分類 21710.9.3 閂鎖和自鏇數 21710.9.4 閂鎖丟失源 21810.9.5 互斥鎖休眠匯總 21810.9.6 父類和子類閂鎖 21810.10 段訪問區 21810.11 庫緩存活動部分 22010.12 動態內存組件部分 22310.13 進程內存部分 22410.13.1 進程內存匯總 22610.13.2 SGA 內存匯總 22610.13.3 SGA 分類和差異 22610.14 流組件部分 22610.15 資源限製統計數據 22810.16 初始化參數的改變 22810.17 全局隊列和其他RAC 部分 22910.17.1 全局隊列統計數據 23310.17.2 全局CR 服務統計數據 233目錄 ∣ XXIII10.17.3 全局當前服務統計數據 23310.17.4 全局緩存傳輸統計數據 23310.17.5 全局緩存傳輸時間 23310.17.6 全局緩存傳輸 23310.17.7 全局緩存時間 23410.17.8 互連ping 延遲統計數據 23410.17.9 客戶端的互連吞吐量 23410.17.10 互聯設備統計數據 23410.18 總結 234第11 章 RAC 的故障診斷 23611.1 RAC 的故障診斷和調優 23611.1.1 ORAchk 工具 23711.1.2 TFA 收集器 23711.1.3 自動診斷庫 23711.1.4 告警和跟蹤日誌文件 23711.2 運轉良好的RAC 生態係統 23911.2.1 最高可用性架構 23911.2.2 優化和高效的RAC 數據庫 24011.2.3 基於OEM 12C 的RAC 故障診斷 24111.2.4 故障診斷的程序和命令 24211.3 總結 247第12 章 利用SQL 顧問來分析和修復SQL 問題 24812.1 OEM 12c :SQL 顧問首頁 24812.2 SQL 調優顧問 24912.2.1 在OEM 12c 中運行SQL 調優顧問 25012.2.2 在SQL*Plus 中手動運行SQL 調優顧問 25312.3 SQL 訪問顧問 25312.3.1 在OEM 12c 中運行SQL 訪問顧問 25412.3.2 在SQL*Plus 中手動運行SQL 訪問顧問 25712.4 SQL 修復顧問 25812.5 SQL 性能分析器 25912.6 總結 260XXIV ∣ Oracle數據庫問題解決方案和故障排除手冊第13 章 使用數據泵遷移數據和對象 26113.1 使用數據泵 26113.1.1 復製對象 26213.1.2 數據泵模式 26313.2 處理私有和公共對象 26313.2.1 保存和恢復數據庫鏈接 26413.2.2 導齣公共數據庫鏈接和同義詞 26413.2.3 驗證導齣的轉儲文件內容 26513.3 查找有效的INCLUDE 和EXCLUDE 值 26513.4 導齣數據子集 26713.5 修改對象屬性 26913.5.1 將分區錶導入為非分區錶 26913.5.2 將錶分區導入為單獨的錶 26913.5.3 屏蔽數據 27013.5.4 重命名錶或使用不同的錶空間 27013.5.5 使用默認存儲參數 27013.5.6 導入期間調整錶空間大小 27113.5.7 閤並多個錶空間 27113.6 通過PL/SQL API 使用Data Pump 27313.7 監控和修改資源 27413.8 提升性能 27513.9 升級數據庫 27613.10 總結 277第14 章 數據庫快速遷移數據的策略 27814.1 為什麼要遷移 27814.2 確定最好的策略 27914.2.1 實時與準實時遷移 27914.2.2 接受隻讀 27914.2.3 可逆性 28014.3 考慮遷移什麼數據 28014.4 數據遷移的方法 28114.4.1 事務性捕獲遷移方法 28114.4.2 非事務性遷移方法 283目錄 ∣ XXV14.4.3 其他遷移方法 29514.5 總結 301第15 章 臨時文件I/O 問題的診斷和恢復 30215.1 臨時錶空間概述 30215.1.1 隻讀數據庫 30315.1.2 本地管理的臨時錶空間 30315.1.3 臨時錶空間組 30315.1.4 全局臨時錶 30415.2 解決TEMPFILE I/O 等待 30715.2.1 過小的PGA 30715.2.2 不恰當的TEMPFILE 擴展區大小 31115.2.3 不恰當地使用GTT 31215.3 總結 312第16 章 處理閂鎖和互斥鎖爭用 31316.1 閂鎖和互斥鎖架構概述 31316.1.1 什麼是閂鎖 31416.1.2 什麼是互斥鎖 31516.1.3 閂鎖和互斥鎖的內部結構 31516.2 檢測閂鎖和互斥鎖爭用 31616.2.1 識彆獨特的閂鎖 31716.2.2 查找段和SQL 語句 31816.3 閂鎖和互斥鎖場景 32016.3.1 庫緩存互斥鎖等待 32016.3.2 library cache pin 32216.3.3 共享池閂鎖 32216.3.4 緩存緩衝區鏈閂鎖 32316.3.5 其他的閂鎖場景 32516.4 棘手的閂鎖爭用 32616.5 總結 328第17 章 使用SSD 解決I/O 瓶頸 32917.1 磁盤技術:SSD 與 HDD 329XXVI ∣ Oracle數據庫問題解決方案和故障排除手冊17.1.1 固態閃存盤的崛起 33017.1.2 SSD 閃存的延遲 33117.1.3 SSD 的經濟性 33217.1.4 SLC、MLC 和TLC 33317.1.5 寫性能與壽命 33417.1.6 垃圾迴收和磨損均衡 33417.1.7 SATA 與 PCIe SSD 33617.1.8 在Oracle 數據庫中使用SSD 33617.2 Oracle 數據庫的閃存緩存 33717.2.1 空閑緩衝區等待 33717.2.2 配置和監控DBFC 33917.2.3 使用FLASH_CACHE 子句 34017.2.4 閃存緩存的性能統計數據 34117.3 比較SSD 的部署選擇 34217.3.1 索引讀 34317.3.2 OLTP 上的讀/ 寫負載 34417.3.3 全錶掃描性能 34417.3.4 SSD 本地緩存和全錶掃描 34517.3.5 磁盤排序和散列操作 34617.3.6 重做日誌的優化 34917.4 存儲分層 34917.5 閃存和Exadata 35317.6 總結 357第18 章 為最佳性能設計和監控索引 35918.1 索引的類型 35918.1.1 B 樹索引 35918.1.2 位圖索引 36218.1.3 分區索引 36418.1.4 其他索引類型 36618.2 同一列上的多個索引 36818.3 索引的性能問題 36918.3.1 索引統計信息 36918.3.2 高集群因子的影響 372目錄 ∣ XXVII18.3.3 索引操作的注意事項 37318.3.4 隱藏非選擇的索引 37418.3.5 RAC 數據庫中的索引性能問題 37518.4 總結 377第19 章 使用SQLT 提升查詢性能 37919.1 安裝SQLT 37919.2 使用XTRACT 方法 38019.3 使用XECUTE 方法 38119.4 其他SQLT 方法 38419.5 一個真實的案例 38519.6 總結 386第20 章 處理XA 分布式事務的問題 38720.1 修復常見的分布式事務問題 38720.2 修復幽靈分布式事務 38820.2.1 信息存在,但事務不在 38920.2.2 ORA-1591 沒有對應的信息 38920.2.3 提交或迴滾之後事務掛起 39120.3 監控分布式事務 39320.4 總結 395
前言/序言
譯者序一
最初的時候,Anna 是約我寫一本書。 但寫書太費精力瞭,以前寫過幾年的博客,知道這裏麵的辛苦。而寫書和寫博客又有很大的不同。 寫博客可以根據自己的想法,想到哪寫到哪,但寫書必須有一定的章法。所以Anna 約書的事情,雖然在寫,但進展很慢,一拖再拖。2016 年上半年的時候,Anna 看我進展太慢,就問我是否願意先翻譯一本書。 我說可以試一試,但她給我看的書,並不怎麼吸引我,就問還有沒有其他的書,她說有。 然後從列錶中一眼看到瞭這本書。著手翻譯之前,也特意谘詢瞭一下Lunar 大神,她說她一個星期可以翻譯一章。但我開始翻譯之後,發現裏麵的工作量太大瞭,遇到不太好翻譯的段落,一下午也就隻能翻譯1 頁。我的時間也太過於碎片化,一周根本翻譯不完一章,而全書共有20 章,所以最終邀請瞭周捷和臧強磊加入到翻譯團隊。
翻譯的工作斷斷續續進行瞭大半年,然後就是校驗工作。 其實內心一直有顧慮,擔心翻譯得好,砸瞭原作者們的招牌,這些作者們都是行業裏的前輩。 他們把個人的經驗沉澱下來,如果因為我們翻譯得不好,而影響瞭知識的傳遞,那就是真的犯罪瞭。 因為Gilbert Highet 曾經說過:A badly written book is only a blunder. A bad translation of a good book is a crime(寫本爛書不過是件糗事,而把好書譯成爛書則是犯罪!)。
真正翻譯的那段時間,基本都是犧牲睡眠時間來進行的。可能是因為我個人的習慣,在晚上10 點到淩晨2 點這個時間段的效率特彆高,夜深人靜,沒有其他雜事來打擾。有時候一個句子,要琢磨很久,有些句子,看完之後,能明白作者想錶達的意思, 但是想用通順的中文錶達齣來,卻很睏難。 而且這裏麵還有美語思維的問題。 比如原作者在錶達一個意思時,用瞭他們很習慣的方法,但是我們的語言中沒有這種文化,如果直譯,句子就會顯得特彆生硬。在這些具體的細節琢磨的過程中,度過瞭一個又一個安靜的夜晚。
比如現在,寫著寫著就又到瞭淩晨1 點。 一個人的書房,一盞颱燈,還有那悠揚的Canon 相伴,這樣的生活也很愜意。 每個人對生活的理解都不一樣,而我就是希望我的人生過的更有意義一些,正如我博客的座右銘所說:“人的一生應該是這樣度過的:當他迴首往事的時候,他不會因為虛度年華而悔恨,也不會因為碌碌無為而羞恥;這樣,在臨死的時候,他就能夠說:“我的整個生命和全部精力,都已經獻給世界上最壯麗的事業..... ”
當然,每個人的時間都是有限的,每天都隻有24 小時。 當你選擇做一件事的時候,就做不瞭其他事情,這裏首先要感謝我夫人給予我的支持。因為她的付齣和理解,我纔有時間安安靜靜的在書房裏做我的事情。其次要感謝2 個小夥伴:臧強磊和周捷,感謝你們犧牲很多的休息時間來一起完成本書的翻譯工作。
一個人活著的意義,不能以生命長短作為標準,而應該以生命的質量和厚度來衡量。我從事瞭10 年Oracle 數據庫的工作,也希望能把自己對數據庫的理解沉澱下來,做一點有意義的事情。 在這條道路上我會一直走下去。 但因為時間和個人精力的原因,在本書的翻譯和校驗過程中,雖然我們花費瞭很多的時間,但仍然難免會齣現一些錯誤。如果您在閱讀的過程中發現這些錯誤,請郵件告知我們,郵箱:ahdba@qq.com。 在此錶示感謝。
最後感謝所有朋友們的支持與理解,希望你們也能從本書中獲益。
戴明明/Dave
寫於閤肥
2017 年12 月9 日
譯者序二
轉眼之間,從事Oracle 相關工作已有五年時間。這五年間有兩個人對我的工作影響很大,
在此錶示感謝。
首先感謝我的大哥,在我大學期間就一直鼓勵引導我學習Oracle 知識。因為他也從事Oracle 相關的工作,一是有這方麵的經驗,二是看到瞭Oracle 數據庫在當今世界的巨大市場和前景。如今在Oracle 領域工作瞭五年時間,更加肯定瞭當初的選擇是對的。其次感謝Dave,對我的Oracle 生涯有著重要的影響。Dave 在我剛工作時就已經是Oracle領域的大神瞭。很多知識都是從他的博客上學習的,對我學習Oracle 提供瞭莫大的幫助。另外,也是Dave 給瞭我這個機遇,參與到本書的翻譯工作中,更是完成瞭我的一個夢想,再次感謝。隨著大數據時代的到來和普及,“數據”毫無疑問是一個必不可少的角色,其重要性不用多說,甚至關係到一個公司的安危。而數據庫則承擔瞭保護數據和有效運用數據的角色。由於Oracle 是當今關係型數據庫中的王者,因此我們有必要學習並運用好它。
本書是由國外幾位Oracle 領域的大師所編寫的,運用各種工具來處理運維中可能遇到的各種性能故障問題,並結閤具體案例提供有效的解決辦法,其中也包含瞭一些Oracle 12c 的新特性的介紹和運用,但是內容絕不僅限於此。無論你是從事Oracle 相關工作多年的老手,還是剛進入Oracle 領域工作的新人,本書都是學習進階的上佳選擇。在翻譯過程中還要感謝我的同事,在工作上對我提供的幫助。感謝Dave,對我翻譯工作的巨大幫助,不僅要核對自己的翻譯內容,還要校驗我的翻譯內容是否恰當準確。實際上,翻譯本書對我來說是一個很大的挑戰:一是由於編寫本書的作者都是這個領域的前輩,涉及的知識麵廣,很多都是新的知識點。二是由於本人水平有限,雖然後期進行瞭反復的校驗,但是書中難免會齣現一些錯誤或者不準確的地方,懇請讀者批評指正。
最後,謹以本書獻給從事Oracle 數據庫,和想要從事Oracle 相關工作的朋友們,共勉!
臧強磊
2017 年12 月於閤肥
拿到這本書的英文原文,已有近一年的時間瞭,是在一個非常機緣巧閤的契機下,幾位好友經過簡單的溝通或者說是一拍即閤,就開始各自的拜讀和譯文進程。說實話,對於翻譯IT技術類籍,一直以來非常謹慎,一來是因為我本身在做第三方運維的工作,日常工作飽和度非常大,很難保障大量固定的譯文時間,擔心無法滿足齣版書發行進度的同時更不希望辱沒原文。其次更為重要的是,乍一看市麵上關於這方麵的書籍已經很多瞭,不希望再做一些對讀者沒有切實幫助和實際意義的事情。但是當我認真閱讀完這本由多位國外技術大神的閤力巨著後,我被書籍中遍布每個章節的大量乾貨所深深吸引,區彆於市麵上很多其他書籍,這本書最大的特點是沒有任何基礎知識的贅述,各個章節都是開門見山地深入敵後,直接探討更深層次的問題根因、診斷方法和解決方案。這樣的寫作方式是非常難得的,因為市麵上齣版的很多書籍都還是從基礎談起,有一定基礎的讀者在閱讀的時候往往總是會選擇直接跳過甚至隻挑選部分段落。所以這本書籍的內容安排顯得尤為高效,更適閤一些有一定技術積纍的讀者朋友,幫助他們進一步凝練和提高。也是在這樣的前提下,我們積極地開始瞭這本書籍的翻譯工作,唯一的想法就是希望能夠幫助更多希望效獲取乾貨的朋友們,譯文的每一個章節都對大傢切實有用,這是我們莫大的動力和榮幸。由於這本書是由多名國外技術大牛閤著完成,各自的寫作風格也不盡相同,翻譯過程中我們在保障技術準確性的前提下,盡可能地風格統一地進行瞭文辭修飾,以期望本書中文版在讀者閱讀時更具流暢性和思維連貫性。因為我們堅信翻譯工作不僅僅是語義的轉換,更重要的是要注入更為本地化的閱讀習慣和思維方式。當然,譯文中一定存在不完美的地方,請讀者朋友們給予諒解和指正,聯係郵箱:ahdba@qq.com。
譯者序三
譯者序三 ∣ VII
最後,感謝傢人給予我們的大力支持,在枯燥和耗時的翻譯過程中,尤其得到愛人Cherry以及兩個小寶貝的理解,犧牲瞭大量本該陪伴他們的周末和假期時光。感謝一同翻譯此書的小
夥伴們,這是大傢共同努力的結果。感謝齣版社對我們翻譯時間上的寬限與包容。還要感謝原書的作者們,是你們寫齣瞭這麼優秀的文字,纔激發瞭我們的翻譯熱情。最後感謝讀者朋友們
的理解和支持,希望你們喜歡本書並從中受益。
周捷/Jet
寫於閤肥
2017 年12 月10 日
前言
數據庫管理員的生活正變得越來越有挑戰性,艱苦的工作條件也迅速成為常態。DBA 麵臨的問題是,在某些情況下可能會導緻組織和單位每分鍾損失數百萬美元,甚至可能導緻公司的數據庫基礎設施癱瘓。雖然這些情況不太可能發生,但是為瞭避免和阻止它們,DBA 需要提前做好準備。本書的指導原則是展示如何盡可能快地修復可能會影響生産環境的嚴重的數據庫問題。本書通過檢查在任意Oracle 數據庫中隨時可能發生的真實例子來指導讀者完成必要的步驟,以解決手頭的問題。您可以使用本書來解決一些可能會遇到的大問題,而不是浪費時間去試圖尋找導緻數據庫異常問題的解決方案。即使沒有從本書找到解決當前問題的方法,您也將學到如何快速地在網絡上搜索到問題的解決方案。本書背後的基本思想是,當在生産環境中遇到嚴重的Oracle 數據庫問題時,本書會在黑暗中為您提供光明。除一般的實踐外,本書還探討瞭一些常見的Oracle 數據庫問題及其快速解決方案,並以簡易的形式解釋瞭這些問題。對於Oracle DBADMA(Database Machine Administrator),本書將作為一本實用的技術指南,用於Oracle 數據庫中執行日常的故障排除、調優和問題解決。
本書的作者是著名的、經驗豐富的Oracle ACE、ACE Director 和Expert 團隊,本書的目標是成為一本結閤現實環境實際操作的例子和復雜的Oracle 數據庫場景故障診斷的問題解決手冊本書展示瞭如何:
y 選擇捷徑解決影響較大的問題 ;
y 使用從現場專傢那裏學到的可靠的工作技巧,讓工作更有效率;
y 製定自己的應急計劃;
前言
前言 ∣ XV
y 執行例行的主動維護,以確保環境的穩定性;
y 使用行業標準的實踐工具和腳本,以找到更好的解決方案。