譯者序
前言
第1章 構建應用程序的正確方法
1.1 團隊協作
1.2 閱讀資料文檔
1.2.1 指南的指南
1.2.2 閱讀路綫
1.3 避免黑盒綜閤癥
1.3.1 數據庫獨立與數據庫依賴
1.3.2 黑盒綜閤癥的危害
1.4 是數據庫而不是一堆數據
1.4.1 使用主鍵和外部鍵
1.4.2 測試參考完整性的開銷
1.4.3 中間層檢查不是萬能藥
1.5 建立測試環境
1.5.1 用有代錶性的數據進行測試
1.5.2 不要用單個用戶進行測試
1.5.3 不要在無菌實驗室中進行測試
1.6 設計齣性能而不是調整齣性能
1.6.1 不要使用通用數據模型
1.6.2 設計自己的高效數據模型
1.7 開始就定義性能目標
1.7.1 在清晰明確的標準下工作
1.7.2 隨時收集並記錄標準
1.7.3 彆因為“所有人都知道你應該做”而做某件事情
1.8 測試.測試.再測試
1.8.1 小基準測試
1.8.2 大基準測試
1.9 儀錶化係統
1.9.1 追蹤asktom.oracle.com
1.9.2 遠程調試儀錶化
1.9.3 使用dbms_application_info
1.9.4 在pl/sql中使用debug.f
1.9.5 在應用係統中打開sql_trace
1.9.6 使用業內標準的api
1.9.7 建立自己的例程
1.9.8 審計不僅僅是個詞
1.10 敢於懷疑權威
1.10.1 當心泛泛的“最好”
1.10.2 懷疑“法定”和“神話”
1.11 不要走捷徑
1.12 保持簡單
1.12.1 考慮備選方法
1.12.2 讓數據庫充分發揮自己的能力
1.13 使用已有的功能
1.13.1 我們聽說x特性慢
1.13.2 我們聽說x特性復雜
1.13.3 我們不想
1.13.4 我們以前不知道
1.13.5 我們希望數據庫獨立
1.14 本章小結
第2章 性能工具包
2.1 sql * plus
2.1.1 建立sql * plus
2.1.2 定製sql * plus環境
2.1.3 閱讀文檔
2.2 explain plan
2.2.1 設置explain plan
2.2.2 使用explain plan
2.2.3 如何閱讀查詢計劃
2.2.4 避免explain plan陷阱
2.2.5 使用dbms_xplan和v$sql_plan
2.3 autotrace
2.3.1 建立autotrace
2.3.2 使用autotrace
2.3.3 格式化autotrace的輸齣
2.3.4 瞭解autotrace的輸齣
2.3.5 autotrace輸齣中感興趣的內容
2.4 tkprof
2.4.1 啓用tkprof
2.4.2 運行丁tkprof
2.4.3 讀tkprof報告
2.4.4 各種群體對tkprof的使用
2.5 runstats
2.5.1 建立runstats
2.5.2 使用runstats
2.6 statspack
2.6.1 建立statspack
2.6.2 使用statspack
2.6.3 使用statspack易犯的錯誤
2.6.4 statspack概覽
2.7 dbms_profiler
2.7.1 為什麼要使用配置文件管理器
2.7.2 配置文件管理器的資源
2.8 jdeveloper(及調試)
2.9 本章小結
第3章 體係結構選擇
3.1 瞭解共享服務器與專用服務器連接
3.1.1 專用服務器如何工作
3.1.2 共享服務器連接如何工作
3.1.3 關於共享服務器配置的常見錯誤觀點
3.1.4 專用服務器與共享服務器小結
3.2 利用集群
3.2.1 rac如何工作
3.2.2 rac的優點
3.2.3 集群小結
3.3 瞭解何時使用分區
3.3.1 分區概念
3.3.2 神秘的分區
3.3.3 為什麼使用分區
3.3.4 分區小結
3.4 知道何時使用並行操作
3.4.1 並行神話
3.4.2 並行管理
3.4.3 並行查詢
3.4.4 並行dml
3.4.5 打造自己的並行
3.4.6 並行處理小結
3.5 本章小結
第4章 高效的管理
4.1 用spfile啓動數據庫
4.1.1 pfile的問題
4.1.2 spfile如何工作
4.1.3 讓數據庫使用spfile
4.1.4 保存係統參數的改動
4.1.5 pfile過時瞭嗎
4.1.6 求助.我的spfile壞瞭.我不能啓動瞭
4.1.7 spfile小結
4.2 讓oracle來管理你的數據文件
4.2.1 何時使用omf
4.2.2 omf如何工作
4.2.3 omf小結
4.3 可靠的恢復
4.3.1 備份準則
4.3.2 備份和恢復小結
4.4 使用本地管理的錶空間
4.4.1 為什麼要廢除dmt
4.4.2 在不知道對象會變得有多大時使用係統管理的lmt
4.4.3 在知道對象的最終尺寸時使用統一的區尺寸
4.4.4 關於lmt的某些忠告
4.4.5 lmt和dmt小結
4.5 讓oracle管理你的段空間
4.5.1 理解可用列錶和可用列錶組
4.5.2 pctfree和pctused怎樣控製可用列錶
4.5.3 assm的案例
4.5.4 assm小結
4.6 讓oracle管理迴退段
4.6.1 設置undo retention
4.6.2 undo錶空間忠告
4.6.3 undo錶空間小結
4.7 本章小結..
第5章 語句處理
5.1 理解sql語句的類型
5.2 語句怎樣執行
5.2.1 分析
5.2.2 優化和行資源生成
5.2.3 執行
5.2.4 語句執行小結
5.3 查詢的處理過程
5.3.1 快速返迴的查詢
5.3.2 慢速返迴的查詢
5.3.3 一緻性讀取
5.4 dml語句的處理
5.5 ddl處理
5.6 使用綁定變量
5.6.1 綁定變量的優點
5.6.2 對java和vb使用綁定變量
5.6.3 每項規則都有例外
5.6.4 綁定變量窺視
5.7 盡可能少做分析
5.7.1 分析的成本
5.7.2 使用pl/sql減少分析
5.7.3 把sql移齣觸發器以減少分析
5.7.4 準備一次;執行多次
5.8 本章小結
第6章 從基於成本的優化程序獲得最大輸齣
6.1 為什麼停用rbo
6.2 使cbo發揮最大的作用
6.2.1 調整optimizer_index_caching和optimizer_index_cost_adj參數
6.2.2 使用system統計數據
6.3 優化cbo
6.3.1 為升級設置compatible
6.3.2 設置db_file_multiblock_read_count以減少全掃描的成本
6.3.3 設置hash_join_enabled控製散列連接
6.3.4 設置optimizer_dynamic_sampling動態收集統計數據
6.3.5 設置offimizer_features_enable控製特性選擇
6.3.6 設置optimizer_max_permutations控製排列
6.3.7 設置optimizer_mode選擇模式
6.3.8 用query_rewrite_enabled和query_rewrite_integrityt重寫查詢
6.3.9 用bitmap_merge_area_size、sort_area_size、hash_area_size控製pga內存
6.3.10 對星查詢使用star_transformation_enabled
6.3.11 設置影響優化程序的其他幾個參數
6.4 使用10 053事件跟蹤cbo選擇
6.5 本章小結
第7章 高效的模式設計
7.1 基本模式設計原則
7.1.1 讓數據庫實現數據完整性
7.1.2 使用正確的數據類型
7.1.3 對最經常提的問題進行優化
7.2 錶類型概述
7.3 b*樹索引集群錶
7.3.1 創建群
7.3.2 使用群
7.3.3 群小結
7.4 索引組織錶
7.4.1 用iot替代關聯錶以節省空間
7.4.2 利用iot集中放置隨機插入的數據
7.4.3 iot小結
7.5 外部錶
7.5.1 建立外部錶
7.5.2 修改外部錶
7.5.3 將外部錶用於直接路徑裝載
7.5.4 將外部錶用於並行直接路徑裝載
7.5.5 將外部錶用於閤並
7.5.6 處理外部錶的錯誤
7.6 索引技術
7.6.1 使用fbi——打破常規
7.6.2 使用域索引
7.7 壓縮
7.7.1 使用索引鍵壓縮
7.7.2 對於隻讀或主要是讀的錶進行壓縮
7.7.3 壓縮小結
7.8 本章小結
第8章 高效的sql
8.1 編寫高效sql所需的知識
8.2 訪問路徑
8.2.1 全掃描
8.2.2 rowid訪問
8.2.3 索引掃描
8.2.4 群掃描
8.3 連接概念
8.3.1 嵌套循環
8.3.2 散列連接
8.3.3 排序閤並連接
8.3.4 笛卡兒連接
8.3.5 反連接
8.3.6 全外部連接
8.4 模式問題(物理的)
8.5 真正理解sql
8.5.1 rownum僞列
8.5.2 標量子查詢
8.5.3 分析函數
8.6 不調整查詢
8.6.1 理解問題
8.6.2 概念驗證的例子
8.7 其他sql技術概覽
8.8 本章小結
第9章 高效的pl/sql程序設計
9.1 為什麼要使用pl/sql
9.1.1 pl/sql是數據操縱的最高效語言
9.1.2 pl/sql。具有可移植性和可重用性
9.2 盡可能少地編寫代碼
9.2.1 不用程序實現
9.2.2 讓代碼行數適閤於屏幕顯示
9.3 使用程序包
9.3.1 程序包的優點
9.3.2 斷開依賴鏈
9.3.3 程序包小結
9.4 使用靜態sql
9.4.1 靜態sql的優點
9.4.2 尋找替換動態sql的機會
9.4.3 靜態sql小結
9.5 批量處理
9.5.1 使用批量處理效果很好時再使用它
9.5.2 對etl操作使用bulk處理
9.5.3 批量處理小結
9.6 返迴數據
9.6.1 ref遊標的優點
9.6.2 使用ref遊標返迴結果集
9.7 使用%type和%rowtype
9.7.1 基於錶的記錄類型
9.7.2 基於遊標的記錄類型
9.7.3 基於列的數據類型
9.8 使用調用者的權限
9.8.1 調用者權限和多模式
9.8.2 調用者權限的條件
9.9 使查找高效地工作
9.9.1 查找的單行取
9.9.2 查找的批量處理
9.9.3 查找的單語句操作
9.9.4 查找小結
9.10 當心獨立事務處理
9.10.1 獨立事務處理的條件
9.10.2 獨立事務處理會影響數據完整性
9.11 選擇使用隱式遊標還是顯式遊標
9.11.1 將隱式遊標用於單行選擇
9.11.2 對有限行數的結果集使用隱式遊標
9.11.3 隱式/顯式遊標小結
9.12 本章小結
第10章 故障排除
10.1 找齣差異
10.1.1 開始收集今天的曆史記錄
10.1.2 偵探性工作
10.2 一次隻更改一樣東西
10.3 更改一樣東西要有充分理由
10.3.1 有目標
10.3.2 驗證你的假設
10.4 能夠恢復到更改前的狀態
10.5 建立測試用例
10.5.1 測試用例需求
10.5.2 使測試用例盡可能小
10.6 本章小結
附錄 設置和一些腳本
· · · · · · (
收起)