內容簡介
《未公開的Oracle資料庫秘密》講述了ORACLE資料庫管理系統中大量鮮為人知的特性,並詳細生動地揭示了如何將這些特性集成到ORACLE DBMS中。
書中主要對初始化參數、數據字典基表、事件、X$固定表、SQL語句、提供的PL/SQL程式包、應用程式開發、性能、Oracle網路、實時套用集群、實用工具等進行了深入的探討,旨在提出一種解決問題的結構化方法,引導讀者靈活自如地解決ORACLE DBMS中遇到的棘手問題。
《未公開的Oracle資料庫秘密》適合具有一定ORACLE DBMS管理經驗的ORACLE資料庫管理員閱讀。
作者簡介
Norbert Debes,Oracle8、Oracle8i、Oracle9i註冊專業Oracle DBA, 先後擔任Oracle德國分公司支持服務部組長、戰略聯盟技術客戶經理。 從2002年開始, 他一直以DBA、性能工程師、架構師等身份擔任大型公司工業、金融、自動化、服務部門的獨立顧問。 他發表過不少關於Oracle的文章, 在每年德國舉行的Oracle用戶組會議及許多商品交易會上公開宣講Oracle技術。 他與人合著過兩本關於Oracle9i的書。
蔣海鷗,華中科技大學計算機系統結構碩士, 系統分析師、信息系統項目管理師, 獲得MySQL DBA認證, 現就職於百度網頁搜尋部。
李浩,華中科技大學計算機系統結構碩士, 專注於分散式存儲系統的設計與實現, 現從事數據挖掘相關工作。
金海,華中科技大學教授、博士生導師, 長江學者特聘教授, 華中科技大學計算機學院院長。
圖書目錄
第一部分 初始化參數
第1章 在文檔中部分說明的參數 2
1.1 AUDIT_SYSLOG_LEVEL 2
1.1.1 syslog設備 2
1.1.2 審計簡介 3
1.1.3 使用AUDIT_SYSLOG_LEVEL參數 4
1.1.4 審計非特權用戶 5
1.1.5 小結 6
1.2 PGA_AGGREGATE_TARGET 6
1.2.1 自動PGA記憶體管理介紹 7
1.2.2 對PGA_AGGREGATE_TARGET的誤解 8
1.2.3 研究PGA_AGGREGATE_TARGET 9
1.2.4 使用管道表函式創建一個大表 9
1.2.5 V$SQL_WORKAREA_ACTIVE 10
1.2.6 _PGA_MAX_SIZE 14
1.2.7 _SMM_MAX_SIZE 15
1.2.8 _SMM_PX_MAX_SIZE 15
1.2.9 共享伺服器 15
1.2.10 並行執行 16
1.2.11 小結 17
1.3 EVENT 18
1.3.1 語法 18
1.3.2 在實例級別均衡事件 19
1.3.3 案例研究 19
1.4 OS_AUTHENT_PREFIX 19
1.4.1 OPS$資料庫用戶及密碼檔案身份認證 20
1.4.2 案例研究 20
1.4.3 小結 23
1.5 原始碼庫 23
第2章 隱藏的初始化參數 24
2.1 跟蹤檔案許可權與_TRACE_FILES_PUBLIC參數 24
2.2 ASM測試環境與_ASM_ALLOW_ONLY_RAW_DISKS參數 26
2.2.1 ASM隱藏參數 26
2.2.2 為ASM配置Oracle集群件 27
2.2.3 ASM實例設定 28
2.2.4 磁碟失效模擬 31
2.3 原始碼庫 31
第二部分 數據字典基表
第3章 數據字典基表介紹 34
第4章 IND$、V$OBJECT_USAGE和索引監控 38
4.1 模式限制 38
4.2 索引使用監控案例研究 39
4.2.1 MONITOR_SCHEMA_INDEXES函式 40
4.2.2 為HR模式啟動索引監控 40
4.2.3 小結 44
4.3 原始碼庫 45
第三部分 事件
第5章 10027事件和死鎖診斷 48
5.1 死鎖 48
5.2 10027事件 49
第6章 10046事件和擴展SQL跟蹤 52
第7章 10053事件和基於成本的最佳化器 54
7.1 跟蹤檔案的內容 57
7.2 案例研究 57
7.2.1 查詢塊和對象標識符 58
7.2.2 考慮的查詢轉換 58
7.2.3 說明 60
7.2.4 綁定變數窺視的結果 61
7.2.5 最佳化器參數 61
7.2.6 系統統計信息 66
7.2.7 表和索引的對象統計信息 67
7.2.8 單表訪問路徑和成本 68
7.2.9 聯結順序 70
7.2.10 執行計畫 73
7.2.11 謂詞信息 74
7.2.12 提示和查詢塊名稱 74
7.3 原始碼庫 75
第8章 10079事件和Oracle網路數據包的內容 76
第四部分 X$固定表
第9章 X$固定表介紹 80
9.1 X$固定表與C語言編程 80
9.2 分層系統結構 81
9.3 授權訪問X$表與V$視圖 82
9.4 從V$視圖深入剖析X$固定表 83
9.5 X$表與V$視圖之間的關係 88
9.6 原始碼庫 89
第10章 X$BH表及閂鎖爭用 90
第11章 X$KSLED以及增強的會話等待數據 96
11.1 深度探討視圖V$SESSION_WAIT 96
11.2 改進的V$SESSION_WAIT視圖 97
11.3 原始碼庫 100
第12章 X$KFFXP與ASM元數據 101
12.1 固定表X$KFFXP 101
12.2 搶救SPFILE檔案 102
12.3 映射數據段到ASM存儲 104
第五部分 SQL語句
第13章 ALTER SESSION/SYSTEMSET EVENTS 108
13.1 跟蹤你自己的會話 108
13.2 ALTER SESSION SET EVENTS 109
13.3 ALTER SYSTEM SET EVENTS 110
13.4 ALTER SESSION/SYSTEM SETEVENTS和診斷轉儲 111
13.5 立即轉儲 112
第14章 ALTER SESSION SETCURRENT_SCHEMA 113
14.1 特權用戶與模式用戶 113
14.2 ALTER SESSION SET CURRENT_SCHEMA限制 115
14.2.1 高級佇列 116
14.2.2 RENAME 116
14.2.3 私有資料庫連結 117
14.2.4 存儲概要 118
第15章 ALTER USER IDENTIFIED BYVALUES 119
15.1 密碼遊戲 119
15.2 用ALTER USER IDENTIFIED BYVALUES鎖定賬戶 121
15.3 ALTER USER和未加密的密碼 122
第16章 SELECT FOR UPDATE SKIPLOCKED 124
16.1 高級佇列 124
16.2 Contention和SELECT FOR UPDATESKIP LOCKED 126
16.3 DBMS_LOCK——題外話 133
16.4 原始碼庫 136
第六部分 提供的PL/SQL程式包
第17章 DBMS_BACKUP_RESTORE 138
17.1 恢復管理器 138
17.2 TDPO災難恢復案例研究 142
17.3 原始碼庫 144
第18章 DBMS_IJOB 145
18.1 介紹DBMS_JOB 145
18.2 BROKEN過程 145
18.2.1 語法 145
18.2.2 參數 146
18.2.3 使用說明 146
18.2.4 範例 146
18.3 FULL_EXPORT過程 146
18.3.1 語法 147
18.3.2 參數 147
18.3.3 範例 147
18.4 REMOVE過程 148
18.4.1 語法 148
18.4.2 參數 148
18.4.3 範例 148
18.5 RUN過程 148
18.5.1 語法 148
18.5.2 參數 148
18.5.3 使用說明 149
18.5.4 範例 149
18.6 原始碼庫 150
第19章 DBMS_SCHEDULER 151
19.1 使用資料庫調度器運行外部作業 151
19.1.1 退出代碼處理 152
19.1.2 標準錯誤輸出 153
19.2 UNIX系統上的外部作業 155
19.2.1 清除環境變數 155
19.2.2 命令行處理 157
19.2.3 外部作業與非特權用戶 159
19.3 Windows系統上的外部作業 161
19.3.1 命令行參數處理 161
19.3.2 Windows環境變數 162
19.3.3 外部作業與非特權用戶 163
19.3.4 ORADIM實用工具創建的服務 163
19.3.5 OracleJobScheduler服務 163
19.4 原始碼庫 164
第20章 DBMS_SYSTEM 165
20.1 GET_ENV過程 165
20.1.1 語法 165
20.1.2 參數 165
20.1.3 使用說明 166
20.1.4 範例 166
20.2 KCFRMS過程 166
20.2.1 語法 166
20.2.2 使用說明 166
20.2.3 範例 166
20.3 KSDDDT過程 168
20.3.1 語法 168
20.3.2 使用說明 168
20.3.3 範例 168
20.4 KSDFLS過程 169
20.4.1 語法 169
20.4.2 使用說明 169
20.4.3 範例 169
20.5 KSDIND過程 169
20.5.1 語法 169
20.5.2 參數 169
20.5.3 使用說明 169
20.5.4 範例 170
20.6 KSDWRT過程 170
20.6.1 語法 170
20.6.2 參數 170
20.6.3 使用說明 170
20.6.4 範例 171
20.7 READ_EV過程 171
20.7.1 語法 171
20.7.2 參數 172
20.7.3 使用說明 172
20.7.4 範例 172
20.8 SET_INT_PARAM_IN_SESSION過程 172
20.8.1 語法 173
20.8.2 參數 173
20.8.3 使用說明 173
20.8.4 示例 173
20.9 SET_BOOL_PARAM_IN_SESSION過程 174
20.9.1 語法 174
20.9.2 參數 174
20.9.3 使用說明 174
20.9.4 示例 174
20.10 SET_EV過程 175
20.10.1 語法 175
20.10.2 參數 175
20.10.3 使用說明 175
20.10.4 範例 175
20.11 SET_SQL_TRACE_IN_SESSION轉儲 177
20.11.1 語法 177
20.11.2 參數 177
20.11.3 使用說明 177
20.11.4 範例 177
20.12 WAIT_FOR_EVENT過程 177
20.12.1 語法 177
20.12.2 參數 178
20.12.3 使用說明 178
20.12.4 範例 178
第21章 DBMS_UTILITY 179
21.1 NAME_RESOLVE過程 179
21.1.1 語法 179
21.1.2 參數 180
21.1.3 使用說明 181
21.1.4 異常 181
21.1.5 範例 181
21.2 對象統計信息的名稱解析和提取 183
21.3 原始碼庫 185
第七部分 應用程式開發
第22章 Perl DBI與DBD::Oracle 188
22.1 常見的Perl DBI陷阱 188
22.2 Perl與DBI簡史 189
22.3 為Perl與DBI設定環境變數 189
22.3.1 UNIX環境 189
22.3.2 Windows環境 194
22.4 在UNIX系統上透明地運行Perl程式 196
22.5 在Windows系統上透明地運行Perl程式 197
22.6 連線到一個ORACLE DBMS實例 199
22.6.1 DBI連線語法 199
22.6.2 使用Bequeath適配器連線 200
22.6.3 使用IPC適配器連線 201
22.6.4 通過TCP/IP適配器連線 202
22.6.5 簡易連線 203
22.6.6 使用SYSDBA或SYSOPER特權連線 203
22.6.7 使用作業系統認證連線 204
22.6.8 連線屬性 205
22.7 完整Perl DBI示例程式 206
22.8 異常處理 210
22.9 原始碼庫 211
第23章 應用程式插樁及端到端跟蹤 212
23.1 插樁簡介 212
23.2 案例研究 214
23.3 程式編譯 216
23.4 插樁的運行 217
23.5 TRCSESS的使用 221
23.6 插樁與程式調用棧 226
23.7 原始碼庫 227
第八部分 性能
第24章 擴展SQL跟蹤檔案格式參考 230
24.1 擴展SQL跟蹤檔案介紹 230
24.2 SQL和PL/SQL語句 231
24.3 遞歸調用深度 231
24.4 資料庫調用 232
24.4.1 解析 232
24.4.2 PARSING IN CURSOR條目的格式 233
24.4.3 PARSE條目的格式 235
24.4.4 PARSE ERROR條目的格式 236
24.4.5 EXEC條目的格式 236
24.4.6 FETCH條目的格式 236
24.4.7 執行計畫散列值 237
24.4.8 計畫散列值案例研究 237
24.4.9 CLOSE條目的格式 240
24.5 COMMIT與ROLLBACK 241
24.6 UNMAP 242
24.7 執行計畫、統計信息與STAT條目的格式 242
24.7.1 Oracle9i中STAT條目的格式 243
24.7.2 Oracle10g和Oracle11g中STAT條目的格式 243
24.8 等待事件 245
24.8.1 WAIT條目的格式 245
24.8.2 Oracle9i中的WAIT 246
24.8.3 Oracle10g和Oracle11g中的WAIT 246
24.9 綁定變數 247
24.9.1 BINDS條目的格式 247
24.9.2 語句調優、執行計畫以及綁定變數 251
24.10 跟蹤檔案條目其他項 257
24.10.1 會話標識符 257
24.10.2 服務名稱ID 258
24.10.3 應用程式插樁 259
24.10.4 ERROR條目的格式 261
24.10.5 應用程式插樁與並行執行進程 263
第25章 Statspack 265
25.1 Statspack介紹 265
25.1.1 檢索捕獲到的SQL語句文本 267
25.1.2 訪問STATS$SQLTEXT 270
25.1.3 使用保留格式捕獲SQL語句 275
25.2 未在文檔中說明的Statspack報告參數 277
25.3 Statspack表 278
25.4 找出Statspack庫中代價高的語句 281
25.5 識別使用過的索引 281
25.6 SQL Trace捕獲語句的執行計畫 282
25.7 找出高資源利用率的快照 284
25.7.1 高CPU使用 285
25.7.2 高DB時間 287
25.8 從另一資料庫導入Statspack數據 290
25.9 原始碼庫 292
第26章 整合擴展SQL跟蹤和AWR 294
26.1 檢索執行計畫 294
26.2 小結 296
26.3 原始碼庫 297
第27章 ESQLTRCPROF擴展SQL跟蹤分析器 298
27.1 分類等待事件 298
27.2 計算回響時間和統計信息 299
27.2.1 案例研究 300
27.2.2 運行Perl程式 301
27.2.3 計算統計信息 303
27.2.4 計算回響時間 303
27.3 ESQLTRCPROF參考 304
27.3.1 命令行選項 305
27.3.2 ESQLTRCPROF報告部分 306
27.4 小結 314
27.5 原始碼庫 315
第28章 MERITS性能最佳化方法 316
28.1 MERITS方法簡介 316
28.2 測量 317
28.3 評估 321
28.4 重現 323
28.5 改進 323
28.6 推斷 324
28.7 安裝 324
28.8 MERITS方法案例研究 325
28.8.1 階段1——測量 325
28.8.2 階段2——評估 325
28.8.3 階段3——重現 332
28.8.4 階段4——改進 335
28.8.5 階段5——推斷 339
28.8.6 階段6——安裝 339
28.8.7 小結 339
28.9 原始碼庫 340
第九部分 Oracle Net
第29章 TNS監聽器IP位址綁定與IP=FIRST 342
29.1 IP位址綁定介紹 342
29.2 多宿主系統 344
29.3 IP=FIRST未啟用 345
29.3.1 主機名 346
29.3.2 迴環適配器 347
29.3.3 引導IP位址 348
29.3.4 服務IP位址 348
29.4 IP=FIRST開啟 349
29.5 小結 350
第30章 TNS監聽器TCP/IP有效結點檢驗 351
30.1 有效結點檢驗簡介 351
30.2 在運行時打開和修改有效結點檢驗 353
第31章 本地命名參數ENABLE=BROKEN 356
第32章 Oracle Net配置中默認的主機名 359
32.1 默認主機名 359
32.2 關閉默認監聽器 360
第十部分 實時套用集群
第33章 會話下線、負載均衡與TAF 364
33.1 透明套用故障轉移介紹 364
33.2 改變系統斷開會話設定 365
33.2.1 SELECT故障轉移 366
33.2.2 在事務末的故障轉移 369
33.3 會話中斷和DBMS_SERVICE 371
33.3.1 使用DBMS_SERVICE創建服務 372
33.3.2 DBMS_SERVICE和TAF下的會話中斷 374
33.4 小結 376
33.5 原始碼庫 376
第34章 不重裝就移除RAC選項 377
34.1 連線ORACLE軟體 377
34.2 案例研究 378
34.2.1 模擬表決磁碟失效 379
34.2.2 使用make工具移除RAC可選項 381
34.2.3 轉換CRS環境為本地環境 383
34.2.4 重啟適用於RAC的CRS環境 385
34.3 小結 386
第十一部分 實用工具
第35章 OERR 388
35.1 OERR腳本介紹 388
35.2 檢索未在文檔中說明的事件 390
35.3 原始碼庫 392
第36章 數據恢復管理器管道接口 393
36.1 數據恢復管理介紹 393
36.2 DBMS_PIPE介紹 394
36.3 RMAN_PIPE_IF包 395
36.4 RMAN_PIPE_IF包詳述 395
36.5 使用RMAN_PIPE_IF包 396
36.6 驗證備份塊 401
36.7 跨節點並行備份與恢復 402
36.8 源碼庫 403
第37章 ORADEBUG SQL*Plus命令 404
37.1 ORADEBUG介紹 404
37.2 ORADEBUG使用步驟 405
37.3 ORADEBUG命令介紹 405
37.3.1 連線到一個進程 406
37.3.2 ORADEBUG IPC 408
37.3.3 ORADEBUG SHORT_STACK 409
37.3.4 診斷轉儲 410
37.4 小結 414
第十二部分 附錄
附錄A 啟用和禁用DBMS可選項 416
附錄B 參考書目 417
附錄C 術語表 419