本書是來自一線Oracle DBA的實踐工作筆記,凝結作者多年數據庫管理運維心得;全書從運維、數據遷移和優化三個層面娓娓道來,精心篩選作者在實際工作中總結的技巧、對常見問題的高效處理方法,以及大量融入完善解決方案的診斷案例;尤其對數據庫的宕機、容災、監控管理、外部表遷移方案、系統調優、SQL優化等重點內容的講解更是細致入微。
ACE成員 一線博學DBA 搜狐暢游數據庫專家多年運維經驗凝聚成簡。以工作筆記形式凝練近800天原創技術博客精華,再現DBA工作場景以及運維故障解決思路,透徹理解Oracle運維、數據遷移和性能調優。
楊建榮DBA一枚,Oracle ACE,DBAplus社群聯合發起人,YEP成員(Young Expert Program),現就職于搜狐暢游,曾負責亞太電信運營商的數據業務支持,主要負責完成數據業務升級、數據遷移和性能調優。擁有Oracle 10g OCM,MySQL OCP認證,在數據庫大會和Oracle嘉年華做過主題分享。除數據庫技術之外,對shell,Java也有一定的功底,平時喜好寫技術博客,每天堅持一篇,現已經堅持800多天(公眾號 jianrong-notes)。
第1篇 數據庫運維篇
第1章數據庫安裝配置
1.1 安裝前的準備 1
1.2 安裝數據庫軟件 5
1.2.1 方法1:OUI安裝 6
1.2.2 方法2:靜默安裝 8
1.2.3 方法3:克隆安裝 11
1.2.4 診斷案例:克隆安裝后無法登錄的問題 13
1.3 創建/刪除數據庫 16
1.3.1 方法1:DBCA圖形建庫 16
1.3.2 方法2:手工建庫 18
1.3.3 方法3:DBCA靜默建庫 22
1.3.4 方法4:OMF建庫 22
1.3.5 診斷案例:create database語句在10g、11g中的不同 23
1.3.6 創建數據庫后的補充工作 26
1.3.7 刪除數據庫的步驟 29
1.4 關于SYSDBA、SYSOPER、DBA的區別和聯系 29
第2章常用工具和問題分析
2.1 SQLPlus使用及常見問題 34
2.1.1 SQLPlus使用細則 34
2.1.2 SQLPlus無法啟動的常見原因 41
特殊問題:亂碼導致的SQLPlus無法啟動的問題 43
特殊問題:使用strace診斷奇怪的SQLPlus登錄問題 44
2.2 解析exp/imp及常見問題 47
2.2.1 exp/imp使用場景及示例 47
2.2.2 exp/imp使用常見問題 50
診斷案例:生產系統exp無法使用的緊急診斷和修復 55
診斷案例:外部表的導入導出問題 57
診斷案例:IMP-00013 問題及解決方法 58
診斷案例:使用strace分析exp中buffer設置的奇怪問題 60
經驗分享:你可能不了解的dump文件 63
2.3 解析Datapump及常見問題 66
2.3.1 Datapump使用場景及示例 66
2.3.3 只言片語分析Datapump的工作原理 68
診斷案例:impdp異常中斷導致的問題 70
診斷案例:使用impdp選項不當導致的數據丟失 73
第3章 服務連接配置
3.1 監聽配置與客戶端配置簡介 76
3.2 網絡服務配置 78
3.2.1 網絡配置細則與實踐 78
診斷案例:Session跟蹤失效的問題和原因 82
3.2.2 監聽配置文件格式探究——一個空格的威力 84
3.2.3 RAC中的TAF的配置 88
3.2.4 RAC中的SCAN的配置 90
3.2.5 通過單例模式模擬RAC連接 93
3.3 監聽器無法啟動的幾個原因 94
診斷案例:使用strace分析TNS-12543的案例 96
第4章 數據庫啟/停和宕機問題
4.1 數據庫啟停的問題分析 99
4.2 數據庫無法啟動案例 100
診斷案例:數據庫參數設置不當導致無法啟動的問題 100
診斷案例:服務器增加內存后無法重啟數據庫的問題及解決方案 102
診斷案例:數據庫shutdown之后無法啟動的問題 103
診斷案例:RAC節點無法啟動的ORA-29702問題及分析 105
診斷案例:連續出現的RAC節點問題 108
4.3 數據庫無法登錄問題分析 110
4.4 數據庫無法登錄案例 111
診斷案例:歸檔空間不足導致的數據庫無法登錄問題 111
診斷案例:Session Leak導致的數據庫無法登錄問題 115
診斷案例:undo缺失導致的數據庫無法登錄問題 118
4.5 數據庫宕機問題和原因分析 119
4.6 數據庫宕機問題案例 119
診斷案例:一條SQL語句導致的數據庫宕機問題及分析 119
診斷案例:存儲導致的數據庫宕機問題及分析 121
診斷案例:I/O問題導致的數據庫突然宕機的問題及分析 124
診斷案例:數據庫導致突然宕機的問題及解決 126
第5章 容災與備份恢復
5.1 備份恢復應用及實踐 132
5.1.1 歸檔模式下的四種恢復場景 132
5.1.2 RMAN中三個不恢復場景 137
實驗1:使用句柄實現特定場景的無備份恢復 141
實驗2:關于DUAL表的破壞性測試 145
5.2 閃回應用及實踐 149
5.2.1 關于delete、drop、truncate異同和無備份恢復場景 149
5.2.2 使用閃回查詢備份數據 152
5.2.3 使用Flashback Query巧妙抽取指定數據 154
實戰案例:巧用Flashback Database實現靈活的數據回滾 155
實戰案例:巧用Flashback Database實現靈活的數據切換 156
5.3 Data Guard搭建與應用 160
5.3.1 常見的Data Guard隱患 161
5.3.2 11g Data Guard搭建實踐 163
5.3.3 論Oracle備庫的設計方案 169
5.3.4 實用至上的 Snapshot Standby特性 171
實踐案例:Data Guard備庫中的幾個數據文件問題 175
實踐案例:Data Guard備庫的數據文件的遷移實戰 179
診斷案例:由Drop Datafile導致的Oracle Bug 182
診斷案例:一個Oracle bug的手工修復 185
診斷案例:11g備庫無法開啟ADG的原因分析 188
第6章 監控管理和故障處理
6.1 Zabbix、Orabbix簡介 191
6.2 Zabbix Agent部署 191
6.3 Orabbix的部署 194
6.4 淺談Zabbix和Grid Control的優劣 197
6.5 Orabbix定制監控Oracle的簡單配置 198
實踐案例:Orabbix結合Python發送圖形報表 200
實踐案例:Zabbix中配置Data Guard的監控 205
6.6 兩條腿走路更穩當——硬件監控很有必要 207
6.7 運維平臺的建設思考——元數據管理 209
6.8 監控盲點與診斷案例 210
監控盲點:由DUAL導致的一個潛在的監控問題 210
診斷案例:備庫CPU使用異常優化 213
診斷案例:兩條報警信息結合分析DG問題 216
診斷案例:監控反被監控誤——一則Orabbix報警的分析 222
診斷案例:自定義監控項快速定位問題 224
診斷案例:CPU報警信息的分析 226
第2篇 數據遷移篇
第7章 數據庫升級
7.1 數據庫升級常用方法與準備工作 230
7.2 Oracle10g升級至11g完整呈現 231
7.2.1 準備流程圖 231
7.2.2 10g升級至11g需要考慮的參數優化 232
7.2.3 Oracle10g升級至11g準備工作詳細步驟 233
7.2.4 升級流程示意圖 236
7.2.5 升級后需要考慮的補充工作 237
7.2.6 實戰匯總:Oracle 10g 升級 11g過程中常見問題及解決方案 238
7.3 升級后常見問題與解決方案 243
7.3.1 問題分析:關于Oracle Invalid Components問題的解決 243
7.3.2 問題分析:10g升級至11g后數據庫無法啟動的問題 246
7.3.3 問題分析:10g升級至11g后exp啟用consistent=y的問題 248
7.3.4 問題分析:查詢user_synonyms超時的問題 254
7.3.5 問題分析:impdp 10g/11g問題解決 255
7.3.6 問題分析:升級后數據庫日志里的外部表錯誤 257
第8章 數據遷移及問題處理
8.1 數據遷移工具和使用場景分析 261
8.2 利用SQLLoader進行數據遷移 263
8.2.1 關于SQLLoader-805問題的解決 263
8.2.2 SQLLoader加載性能問題的排查 265
8.2.3 Excel文件內容導入數據庫的問題及解決 267
診斷案例:生產環境SQLLoader加載性能問題及分析 269
8.3 傳輸表空間 275
8.4 分區表遷移相關 277
8.4.1 分區表的水平、垂直切分 278
8.4.2 關于分區表的move操作 279
8.4.3 批量轉換分區表為普通表 281
8.5 外部表 282
8.5.1 外部表簡單總結 282
診斷案例:巧用外部表避免大量的insert 284
診斷案例:巧用外部表備份歷史數據 286
診斷案例:通過外部表改進一個煩瑣的大查詢 289
8.6 其他遷移方式 292
8.6.1 數據庫文件的遷移 292
8.6.2 Data Guard環境中的數據文件遷移方式對比 295
8.6.3 關于move tablespace的問題總結 298
第9章 數據遷移之外部表實戰
9.1 失敗的經驗總結:數據遷移問題匯總 300
9.1.1 非空約束導致的數據加載失敗 301
9.1.2 外鍵數據差異導致的約束無法啟用 301
9.1.3 網絡問題導致數據加載中斷 301
9.1.4 約束問題導致Datapump加載回滾 302
9.1.5 undo不足的困擾 302
9.1.6 沖突數據不易展現 302
9.1.7 sequence沖突檢查 303
9.1.8 加載LOB數據的假并行 303
9.1.9 數據亂碼的影響 303
9.1.10 數據轉儲文件不可讀/不易讀 303
9.1.11 大分區表的加載性能問題 304
9.2 外部表方案的產生 304
9.2.1 SQLLoader和ORACLE_DATAPUMP性能大比拼 304
9.2.2 海量數據遷移之通過shell腳本估算數據量 305
9.2.3 數據遷移前的數據庫檢查和建議 308
9.2.4 數據遷移前的系統檢查 313
小技巧:怎樣突破表名30個字符的限制 315
小技巧:使用shell生成狀態報表 317
9.3 數據抽取 318
9.3.1 外部表切分原理 319
9.3.2 抽取方式1:使用utl_file做選擇性數據導出 321
9.3.3 抽取方式2:海量數據遷移之外部表并行抽取 324
9.3.4 抽取方式3:海量數據遷移之分區并行抽取 327
9.3.5 抽取方式4:海量數據遷移之分區并行切分 331
9.3.6 抽取方式5:海量數據遷移之通過rowid切分大表 332
小技巧:海量數據遷移之使用shell啟用多個動態并行 336
9.4 數據預檢查 338
9.4.1 海量數據遷移之沖突數據篩查 339
9.4.2 數據遷移判斷非空約束 340
小技巧:使用shell進行日志分析 342
小技巧:使用shell腳本巧妙統計文件 344
9.5 數據加載 345
9.5.1 海量數據遷移之外部表加載 345
9.5.2 巧用Parallel極速提升數據加載速度 348
9.5.3 海量數據遷移之使用分區并行切分導入 350
9.5.4 海量數據遷移之分區表批量insert性能改進 352
9.6 可能碰到的數據修復問題 352
9.6.1 使用錯誤日志修復數據的利弊 353
診斷案例:數據緊急修復之啟用錯誤日志 355
9.6.2 人為操作失誤的分析和應對 356
9.7 數據遷移經驗總結 358
9.7.1 海量數據遷移之誤操作和防范建議 358
9.7.2 數據遷移需要考慮的問題 360
第3篇 數據庫優化篇
第10章 優化工具簡介和定制
10.1 AWR簡介 362
10.1.1 AWR的常用功能 363
10.1.2 解析AWR中的CPU信息 367
10.1.3 使用shell定制AWR腳本 370
10.1.4 強大的AWR Format 373
小技巧:使用AWR來分析Session Leak問題 375
實例分析:一份AWR報告分析的思路 376
10.2 ASH 380
10.2.1 ASH中的數據字典基表 380
10.2.2 通過shell定制ASH腳本 383
10.3 ADDM 385
10.3.1 使用shell定制ADDM腳本 385
診斷案例 通過ADDM明確I/O問題 387
10.4 SQL Profile簡介 389
10.4.1 SQL Profile的使用功能 389
10.4.2 使用SQLT手工創建SQL Profile 393
10.4.4 性能下降的不定時炸彈——過舊的SQL Profile 400
10.5 SQL Monitor的功勞 401
10.5.1 SQL Monitor的使用功能 401
10.5.2 OSM的改進點和簡單定制 403
10.6 數據字典 405
10.6.1 數據字典管理 405
實例診斷:數據字典中的細節問題 406
診斷案例:關于dba_data_files無法訪問一個小問題 409
10.7 自定義腳本 410
10.7.1 關于Session Leak的問題分析 410
診斷案例:關于ORA-00020問題的反思 413
10.7.2 高級開發語言定制,量力而行 414
第11章 數據庫實例調優
11.1 調整數據庫參數 417
診斷案例:關于修改數據庫參數的測試 417
11.2 內存組件調整 421
診斷案例:關于糾結的RECYCLE Pool的設置 426
診斷案例:分區表放入KEEP Pool、RECYCLE Pool的問題及解析 427
11.3 等待事件分析 430
診斷案例:關于等待事件“read by other session” 431
診斷案例:關于enq:TX - allocate ITL entry的問題分析 434
11.4 日志分析調優 437
診斷案例:由一條日志警告所做的調優分析 437
診斷案例:ORA-17500 ODM err的問題排查 440
診斷案例:alert日志中一條ORA警告信息的分析 441
11.5 分區表優化 443
診斷案例:通過分區鍵值發現性能問題 443
經驗分享:修改分區表的問題總結 445
11.6 需要重視的并發 447
第12章 系統調優
12.1 I/O問題診斷 451
12.1.1 Orion的簡單部署和測試 452
診斷案例:啟用ODM極速調優I/O 455
診斷案例:一次數據庫響應緩慢的問題排查 459
12.2 通過Linux命令診斷性能問題 460
12.2.1 那些極度危險的Linux命令 461
12.2.2 一些“簡單”的Linux命令 464
診斷案例:Crontab導致CPU異常的問題分析及處理 471
診斷案例:服務器進程異常的原因分析 474
12.3 內核參數優化診斷 477
診斷案例:Linux Kernel引發的數據庫連接問題 478
診斷案例:Linux Kernel引發的Data Guard問題 481
第13章 SQL優化前奏和SQL審核
13.1 SQL優化前奏 487
13.1.1 SQL的查詢轉換 487
13.1.2 通過錯誤的SQL來測試推理SQL的解析過程 494
診斷
書可以,快遞員自行簽收
緊跟潮流。很實用,很好。
雙十一買的滿意
不錯,正在看。
物流差爆了
書到了,還沒看
最近當當的速度最近很是不給力啊,希望甘肅地區能改善,但是商品還是一如既往。最近當當的速度最近很是不給力啊,希望甘肅地區能改善,但是商品還是一如既往。
剛收到,學習后再來追加評價!
第一次買 感覺還可以
已收到了,希望自己能吸收到
包裝和印刷都很好
有些實質內容,在實際工作可以借鑒下
很好,非常不錯!很好,非常不錯!
很好,非常不錯!很好,非常不錯!
是很好看喲
印刷還行,
一入IT 深似海,從此菜鳥淚成河
剛到貨,看了下還行
包裝很好,內容之前看過電子版,還是紙質好,可以裝B
發貨速度快。
不錯的物流快
書不錯,實用。昨天下單今天收到,速度夠快,贊一個!
不錯的書,非常適合作為運維人員管理員去學習
書到后還沒看,不過包裝得不錯,需要學習得東西還很多啊。
書不錯,實用。包裝得不錯,需要學習得東西還很多啊。
實踐出真知!建議大家看看此書,有志于DBA工作的一定要看。
紙張很好,內容很用心,需要有些基礎才能更容易消化,加油中!
內容一般表達不清晰內容基層都是長篇的復制代碼沒有實際意義沒有對具體術語的基本介紹不適合新手學習一次比較失敗的網購
建議沒有oracle基礎的不要買,買了你根本看不懂,因為書中沒有名詞解釋,理論少得要死,基本上就是一下案例,而且只是說明一下,不會講一些案例中一些重要的概念之類的。要是有理論加實踐結合就比較好,就說容災那個來說,都沒有講怎么備份,怎么還原,就講了幾個案例,感覺 一點用都沒用,看了感覺和沒有看一樣的。
Oracle DBA工作筆記:運維、數據遷移與性能調優
必須100個贊!!上班沒事的時候會翻翻這本書,漲知識了有木有。作為一個剛剛接觸oracle的人來說,這的確是一本好書。愛不釋手!!!一萬個贊!!!!