《大話OracleRAC集群、高可用性、備份與恢復》以Oracle10g為基礎,對OracleRAC進行了全面的介紹和分析。全書分為兩個部分,共14章,該書可以作為資料庫開發人員、資料庫管理員、資料庫初學者及其他資料庫從業人員的工作參考手冊,也可以作為大中專院校相關專業師生的參考用書和相關培訓機構的培訓教材。
書 名: 大話OracleRAC集群、高可用性、備份與恢復
作 者:張曉明
出版社: 人民郵電出版社
出版時間: 2009
ISBN: 9787115204158
開本: 16
定價: 65.00 元
全書分為兩個部分,共14章,第一部分是集群理論篇,這部分從集群基礎知識入手,通過分析集群環境和單機環境的不同,介紹了集群環境的各個組件及其作用,以及集群環境的一些專有技術,包括OracleClusterware、OracleDatabase、ASM、CacheFusion等。第二部分是實踐篇,每一章都針對RAC的一個知識點展開講解,包括OracleClusterware的維護、HA與LB、備份、恢復、Flashback家族、RAC和DataGuard的結合使用、RAC和Stream的結合使用,最後對ASM進行深入介紹,並給出性能調整的指導思想。
《大話OracleRAC集群、高可用性、備份與恢復》按照“發現問題→解決問題→實踐與理論相結合”的方式進行介紹,首先對現實問題進行分析,然後提供合適的解決方案,最後自然地引出Oracle中的理論知識點,這種講解方法能夠有效地降低閱讀難度,幫助讀者更好地掌握相關技能。
張曉明OracleOGP,現用網名“石頭狗“,名稱來自於《和佛陀賞花去》中的故事:狗會因為人隨手去出的一個東西茆而追逐,可能是一個骨頭,一塊肉,一個眼神。甚至是一個石頭。警示一定要看清自己在追逐的東西。
上個世紀90年代末畢業於某著名的醫科大學,畢業後分配到某著名醫院從事治病救人的神聖工作。不幸的是,在大學最後一年的實習中我接觸到了老式486,這讓我魂牽夢繫,再加上IT熱潮對一個熱血青年的巨大誘惑,我終於在行醫3年後削尖了腦袋擠進了IT業。回想當年,身邊有好幾位來自知名醫學院校的朋友和我一樣義無反顧地加入IT工程師隊伍,不知道這幾位朋友現在安否?我在IT行業中最初是做開發,先後用過C、C++、Java等各種主流和非主流語言,熱火朝天的參與過。C++和Java的網土混戰,現在回想起來只有一個詞評價“幼稚”,不僅是自己幼稚,整個行業也不太成熟。後轉從事資料庫開發,再轉為資料庫管理,最終將此定為自己的職業方向。今天,我把這些年來對Oracle資料庫的學習和使用心得記錄下來,既是對自己的一個階段總結,也是與所有志同道合的朋友們共同分享。現任某SP公司資料庫團隊負責人,負責管理全國20餘省市的OLTP以及公司TB級OLAP系統的開發、最佳化和護。精通資料庫管理、備份、恢復、窖災等設計和規劃,特別是高可用、高並發、高壓力資料庫環境的設計和最佳化。
第1部分集群理論篇
第1章RAC初體驗
1.1本書使用環境
1.1.1硬體環境
1.1.2軟體環境
1.1.3本書使用的環境
1.2如何在PC機上搭建RAC環境
1.2.1需要下載的軟體
1.2.2安裝過程
1.3任務列表
1.4規劃階段
1.4.1確認主機名和3個IP位址
1.4.2存儲方案選型
1.5實施階段
1.5.1主機配置
1.5.2安裝OracleClusterware
1.5.3安裝OracleDatabase
1.5.4配置Listener
1.5.5創建ASM
1.5.6創建資料庫
1.6客戶端測試
1.6.1客戶端配置
1.6.2體驗Failover
1.6.3體驗LoadBalance
1.6.4修改歸檔模式
第2章什麼是RAC集群
2.1集群分類
2.2集群環境的特殊問題
2.2.1並發控制
2.2.2健忘症(Amnesia)
2.2.3腦裂(SplitBrain)
2.2.4IO隔離(IOFencing)
2.3RAC集群
2.3.1存儲層
2.3.2網路層
2.3.3集群件層
2.3.4套用層
2.4小結
第3章OracleClusterware
3.1Clusterware和RAC的關係
3.2OracleClusterware組成
3.2.1磁碟檔案
3.2.2Clusterware後台進程
3.2.3網路組件
3.3Clusterware的日誌體系
3.4小結
第4章RAC原理
4.1資料庫基本原理
4.1.1並發訪問和數據一致性
4.1.2事務和隔離級別
4.1.3Oracle支持的隔離級別
4.2Oracle單實例的並發控制機制
4.2.1Lock
4.2.2數據記錄的行級鎖
4.2.3Latch
4.2.4Latch和Lock對比
4.2.5進一步理解
4.3RAC下的並發控制
4.3.1DLM中資源和鎖
4.3.2Non-CacheFusion資源
4.3.3CacheFusion資源
4.3.4GRD(GlobalResourceDirectory)
4.3.5PCMLock
4.3.6CacheFusion
4.3.7RAC並發控制總結
4.4RAC架構
4.4.1SGA的變化
4.4.2後台進程的變化
4.4.3檔案
4.4.4SCN
4.4.5CacheFusion、GCS、GES
4.5RAC和Clusterware的互動
4.5.1Clusterware層
4.5.2RAC層
4.6小結
第5章存儲方案——ASM初步
5.1Shared-Disk和Shared-Nothing架構
5.2Oracle10gRAC的存儲方案介紹
5.3ASM架構
5.3.1ASM實例
5.3.2檔案
5.4配置ASM
5.4.1安裝位置
5.4.2創建ASM磁碟
5.4.3配置ASM實例
5.4.4創建磁碟組
5.4.5在資料庫中使用ASM的磁碟組
5.5ASM實例:將資料庫遷移到ASM
5.5.1試驗說明
5.5.2操作步驟
5.5.3最後驗證
5.6小結
第2部分實戰篇
第6章RAC維護工具集
6.1OracleClusterware工具集
6.2節點層
6.3網路層
6.4集群層
6.4.1crsctl
6.4.2OCR命令系列
6.5套用層
6.5.1crs_stat
6.5.2onsctl
6.5.3srvctl
6.5.4恢復
6.6小結
第7章HA和LB
7.1什麼是高可用性
7.2Failover
7.2.1Client-SideConnectTimeFailover
7.2.2TAF(TransparentApplicationFailover)
7.2.3Client-SideFailover和TAF的對照試驗
7.2.4Server-SideTAF
7.3OracleClusterwareHA框架
7.3.1術語介紹
7.3.2配置命令
7.3.3完整實例
7.4LoadBalance
7.4.1ConnectionBalancing
7.4.2利用Service分散負載
7.5測試LoadBalance
7.5.1通過Listener日誌區分路由來源
7.5.2測試方法
7.5.3測試過程
7.6小結
第8章備份
8.1概述
8.1.1備份
8.1.2恢復
8.1.3RMAN工具
8.2使用FlashRecoveryArea
8.2.1配置FlashRecoveryArea
8.2.2FlashRecoveryArea的空間監控
8.3使用RMAN
8.3.1RMAN工具的使用方法
8.3.2RMAN配置
8.4完全備份和增量備份
8.4.1完全備份
8.4.2增量備份
8.4.3其他RMAN命令
8.5RAC的備份實例
8.6小結
第9章恢復
9.1為什麼Oracle資料庫能夠恢復
9.2日誌
9.2.1日誌執行緒(RedoThread)
9.2.2RAC的在線上日誌
9.3恢複種類
9.3.1InstanceRecovery
9.3.2MediaRecovery
9.3.3CrashRecovery
9.3.4OnlineBlockRecovery
9.4介質恢復
9.4.1完全恢復
9.4.2不完全恢復
9.4.3恢復到單實例
9.5小結
第10章其他恢復技術
10.1數據塊恢復
10.2如何檢查數據塊一致性
10.2.1使用初始化參數
10.2.2DBV工具
10.2.3Analyze命令
10.2.4RMAN工具
10.2.5dbms_repair包
10.3模擬數據塊不一致
10.4數據塊不一致處理辦法
10.4.1收集信息
10.4.2設計恢複方法
10.4.3恢復操作
10.5數據塊恢復實例
10.6Flashback家族介紹
10.7FlashbackDatabase
10.7.1FlashbackDatabase架構
10.7.2啟用FlashbackDatabase
10.7.3FlashbackDatabase
10.7.4命令和視圖
10.8FlashbackDrop
10.8.1TablespaceRecycleBin
10.8.2FlashbackDrop操作
10.8.3RecyclyBin的維護
10.9FlashbackQuery和FlashbackTable
10.9.1Oracle9i的FlashbackQuery
10.9.2FlashbackVersionQuery
10.9.3FlashbackTransactionQuery
10.9.4FlashbackTable
10.9.5UNDORetntion
10.10小結
第11章RAC和DataGuard
11.1DataGuard介紹
11.1.1DataGuard架構
11.1.2日誌傳送(RedoSend)
11.1.3日誌接收(RedoReceive)
11.1.4日誌套用(RedoApply)
11.1.5數據保護模式
11.1.6自動裂隙檢測和解決
11.2RAC和Standby配置實例
11.2.1RACPrimary和SingleStandby
11.2.2RACPrimary和RACStandby
11.3小結
第12章RAC和StreamReplication
12.1Stream的工作原理
12.2DataGuard和Stream對比
12.3RACStream配置實例
12.3.1Single(Source)和RAC(Target)
12.3.2RAC對RAC的複製
12.3.3STRMMON工具
12.4小結
第13章深入ASM
13.1非ASM的存儲結構
13.2ASM存儲結構
13.3ASM檔案系統
13.3.1ASMMetadata
13.3.2PhysicalMetadata
13.3.3VirtualMetadata
13.3.4DiskRecovery
13.4條帶化(ASMStriping)
13.4.1ASM檔案模板(ASMFileTemplate)
13.4.2ASM別名(ASMFileAlias)
13.5RDBMS和ASM之間的互動
13.6ASM的實例恢復
13.7ASM和OSFilesystem之間互動
13.7.1dbms_file_transfer包
13.7.2RMAN的CONVERT方法
13.7.3ASM和TTS
13.8ASM的限制
13.9小結
第14章性能與RAC
14.1RAC的若干特點
14.2AWR
14.2.1啟用AWR
14.2.2修改AWR配置
14.2.3產生AWR報告
14.3ASH
14.4SQL調整策略
14.4.1SQL語句的執行過程
14.4.2SQL性能調整的基本方法
14.4.3PL/SQL和SQL
14.5小結
從2008年2月開始動筆到定稿出版,這本書的編寫幾乎花費了我10個月的時間,大大超出了最初3個月的計畫。這個過程雖然不能說寢食難安,但其中的酸甜苦辣也是如人飲水,冷暖自知,如果一開始就知道要投入這么大精力,我真懷疑自己是否有勇氣開始動筆。
回顧自己學習RAC的經歷,我對它又愛又恨。因為對技術本身的痴迷加上高“薪”技術的誘惑,所以愛;因為沒有能力掌控,所以恨。時至今日,我仍然不敢說自己已完全掌握了RAC,RAC的學習過程是對我所有學習過的IT技術的大複習,包括OS、Network、Storage、Database等,甚至可能還有很多領域我從未涉足。
相信很多對Oracle有一定經驗的DBA和我有同樣的感覺,RAC比普通的Oracle更難入門。不僅因為比比皆是的晦澀艱深的術語,也不僅因為它覆蓋的技術領域太廣,更主要的是可用的參考資料太少。我翻遍了所有能夠獲得的書籍資料,但是這些資料都是從很基本、很瑣碎的細節開始,從下到上(BoRom.up)的學習方式是雖然看到了“樹”,但是看不到“林”。雖然無樹不成林,技術細節總是必要的,但過於瑣碎的分解給我造成更大的迷惑,到底RAC的匯流排是什麼?GCS、GES、GRD、PCM這些東西是如何堆砌在一起的?
這段痛苦經歷促使我決定以自己的方式講述RAC的故事,如果大家能在這個旅程中豁然開朗,對我而言將是一件很有趣又備感欣慰的事。