前言知識有一個特性,就是共享程度越高,成長得越快。這就是我寫和完成這本書的動力。本書濃縮了近幾年資料庫管理的經驗。我希望書中的許多經驗和技巧有助於讀者克服學習中的困難。如何閱讀本書本書各章依內容分為幾個面向。應該從頭到尾通讀本書。學習本書所花的時間會在以後的工作中得到數倍的回報。也可以採用模組化的方法,選擇性地閱讀更適合自己知識水平和目的的章節。如果您不太熟悉Oracle 或希望更新自己的基礎知識,可先閱讀附錄A,其中簡明扼要地介紹了Oracle,然後再從頭到尾地通讀全書。如果已經對Oracle 的疹景和基礎有所了解,可從任意適合自己或自己感興趣的章節開始學習。例如,對那些需要學習Oracle8i 的新資料庫管理的新增特徵功能以便更新其知識的人員,在閱讀其他章節前,可以先看第9 章「Oracle8i 的新特性」。而希望了解Oracle 的Internet 運算功能以及Oracle 應用伺服器的讀者可直接閱讀第10 章「Internet DBA」地其他各章也都涵蓋了某個特定的重要領域。如何增加知識在某一領域成功的關鍵是不斷豐富自己的知識。知識是競爭的決定因素。因為科技發展日新月異,我們都應該跟上科技發展的腳步。造訪資料庫專業人員線上社群(http://www.dbtips.com),可以下載許多有用的腳本,包括許多出現在本書中的腳本,以及得到「How to Create SQL Scripts That Work」的免費拷貝,這個拷貝提供了創建和自訂更符合您的需求的腳本的技巧和技術。我將會在此網站張貼新的技巧和技術、腳本、論文以及文章。歡迎您在此網站張貼自己的想法、經驗、問題、解答以及評論,與大家分享和交換知識。
目錄:
賀辭序前言第1章建立與配置資料庫
1.1 資料庫建立規劃
1.1.1 規劃以及提出正確的問題
1.1.2 怎樣確定適當的資料塊尺寸
1.2 組織文件系統
1.2.1 怎樣命名資料庫文件
1.2.2 使用最佳靈活結構
1.2.3 如何配置符合OFA 的Oracle 檔案系統
1.3 規劃資料庫文件佈局
1.3.1 最大化可用性的規劃
1.3.2 最小化磁碟爭用的規劃
1.4 建立參數文件
1.4.1 配置參數的一些注意事項
1.4.2 建立參數檔的連接
1.4.3 優化資料字典存儲
1.5 理解CREATE DATABASE 指令
1.6 建立資料庫的技術
1.6.1 利用Oracle 安裝程式建立資料庫
1.6.2 使用安裝程式建立資料庫的注意事項
1.6.3 怎樣建立自己的自訂資料庫建立腳本
1.6.4 如何從已有資料庫克隆資料庫
1.6.5 怎麼利用Database Configuration
Assistant 建立資料庫
1.7 完成資料庫配置
1.7.1 建立表空間
1.7.2 執行資料字典配置腳本
1.7.3 建立另外的回退段
1.7.4 修改SYSTEM 使用者的預設和臨時表空間
1.7.5 更改SYS 和SYSTEM 的預設口令
1.7.6 建立其他使用者和模式對象
1.7.7 啟用歸檔日誌方式
1.7.8 進行資料庫完全備份
1.7.9 設定資料庫自動啟動和關閉
1.7.10 在資料庫投入使用後監控
1.7.11 怎樣列出並描述初始化參數
1.7.12 怎樣列出無記載參數
1.8 回顧第2章管理資料儲存、物件和容量
2.1 配置資料存儲
2.1.1 管理可用空間碎片
2.1.2 聚集可用空間的技術
2.1.3 管理區的碎片
2.1.4 尋找接近MAXEXTENTS 值的對象
2.1.5 避免資料字典的碎片
2.1.6 本地管理區
2.1.7 進行全資料庫重組
2.1.8 定義區大小和防止碎片的11個技巧
2.1.9 避免區出超錯誤
2.1.10 避免空間出超錯誤
2.1.11 使行連結和行遷移最小化
2.1.12 怎樣偵測行連結/行遷移
2.1.13 利用腳本檢查模式中的連結行
2.1.14 消除行鏈接
2.1.15 消除行遷移
2.1.16 行連結/行遷移的技巧
2.1.17 怎樣定義表的大小
2.1.18 怎樣確定PCTFREE 的最佳值
2.1.19 怎樣決定PCTUSED 的最佳值
2.1.20 如何找出每個資料塊的可用資料區域
2.2 管理程序對象
2.2.1 怎樣檢查無效對象
2.2.2 怎樣重新編譯無效對象
2.2.3 在不同表空間之間移動索引
2.2.4 怎樣找到最高點
2.2.5 怎樣釋放未用空間
2.3 DBMS_SPACE 套件
2.3.1 使用DBMS_SPACE.UNUSED
_SPACE
2.3.2 使用DBMS_SPACE.FREE
_BLOCK
2.4 管理鎖爭用
2.4.1 怎樣找出產生鎖定的SQL 語句
2.4.2 怎樣釋放鎖
2.4.3 怎樣刪除使用者會話
2.4.4 怎樣從資料字典中提取視圖建立指令
2.4.5 怎樣從資料字典中提取索引定義
2.5 回顧第3章匯出與導入技術
3.1 導出/導入特性概述
3.1.1 使用匯出和匯入
3.1.2 導出/導入的一般使用
3.1.3 導出方式
3.1.4 導入方式
3.1.5 建立必需的資料字典視圖
3.1.6 指定導出/導入參數
3.1.7 在磁帶上直接匯出和匯入數據
3.1.8 估計導出檔案的大小
3.1.9 直接匯出壓縮文件
3.1.10 從壓縮匯出檔案直接匯入
3.1.11 建立一致的匯出文件
3.1.12 檢查匯出/匯入錯誤
3.1.13 用匯出和匯入管理區
3.1.14 組織和命名導出/導入文件
3.1.15 顯示匯出文件的內容
3.1.16 不能對復原同時使用匯出和歸檔重做日誌
3.1.17 增量、累積和完全的導出和導入
3.2 怎樣優化導出效能
3.2.1 使用DIRECT 路徑導出
3.2.2 對傳統的路徑導出使用大的
BUFFER 值
3.2.3 對直接路徑匯出使用RECORDL-
ENGHT 參數
3.3 如何優化導入參數
3.3.1 使用大的回退段
3.3.2 建立幾個大的線上重做日誌文件
3.3.3 導入過程中關閉歸檔方式
3.3.4 分開匯出轉儲檔案、資料表空間、
回退段和線上重做日誌文件
3.3.5 最小化檢查點
3.3.6 單獨建立索引
3.3.7 設定大的初始化參數SORT_AREA
_SIZE
3.3.8 使用大的導入緩衝區
3.3.9 最小化資料庫提交次數
3.4 Oracle8i 的新特性
3.4.1 子分區的匯出與匯入
3.4.2 匯出/匯入多個轉儲文件
3.4.3 為卸載表的匯出過程的選擇語句指定一個查詢
3.4.4 匯出/匯入預計算最佳化程序統計數據
3.4.5 可移動表空間
3.5 回顧第4章設計高可用性資料庫
4.1 如何發現和保護“致命的弱點”
4.2 複用資料庫控製文件
4.3 在硬體級上鏡像控製文件
4.4 鏡像和復用的區別
4.5 為高可用性選擇磁碟類型
4.6 常規的RAID 技巧
4.7 給控製文件成長的空間
4.8 如何配置日誌組
4.9 保護SYSTEM 表空間的三種簡單方法
4.10 為什麼必須保護ORACLE_HOME
4.11 保護作業系統
4.12 如何保護回退段
4.13 分類與劃分數據
4.14 劃分錶空間的優先次序
4.15 如何配置高可用性的TEMP 表空間
4.16 確保在歸檔日誌目標位置有足夠的可用空間
4.17 如何調整線上重做日誌
4.18 透過優化歸檔速度避免LGWR 等待
4.19 將線上重做日誌和歸檔重做日誌檔案分開
4.20 如何加速實例的恢復
4.21 回顧第5章使用熱備用資料庫
5.1 什麼是失敗切換
5.2 熱備用資料庫
5.2.1 熱備用資料庫的優點
5.2.2 熱備用資料庫的缺點
5.2.3 建立和配置熱備用資料庫
5.2.4 建立備用資料庫作為主資料庫的子集
5.2.5 選擇備用站點
5.2.6 選擇備用節點
5.2.7 進行熱備用的失敗切換
5.2.8 關於備用啟動要記住的三個要點
5.2.9 備用啟動後的四項工作
5.2.10 將歸檔重做日誌自動傳送到備用資料庫
5.2.11 啟動管理恢復
5.2.12 只讀開啟備用資料庫
5.2.13 熱備用資料庫的維護
5.3 回顧第6章高階的失敗切換方法
6.1 將Oracle 並行伺服器用於失敗切換
6.2 並行伺服器失敗切換的優點
6.3 並行伺服器失敗切換的缺點
6.4 性能考慮
6.5 降低並行伺服器失敗切換的時間
6.6 透明的應用程式失敗切換
6.7 用戶機失敗切換的說明
6.8 將客戶機失敗切換用於負載平衡
6.9 為預定的節點停機使用客戶機失敗切換
6.10 用Oracle 複製實作失敗切換
6.10.1 基本複製
6.10.2 基本複製失敗切換的優點
6.10.3 基本複製失敗切換的缺點
6.11 將進階複製用於失敗切換
6.11.1 進階複製失敗切換的優點
6.11.2 進階複製失敗切換的缺點
6.12 利用Oracle Fail Safe
6.12.1 選擇節點配置
6.12.2 Oracle Fail Safe 的優點
6.12.3 Oracle Fail Safe 的缺點
6.13 其他高可用性的選項
6.13.1 鞋帶狀預算的高可用性:傳送備份磁帶
6.13.2 採用遠端鏡像
6.13.3 應用程式鏡像
6.14 利用混合配置技術
6.14.1 利用平行伺服器與遠端熱備用資料庫
6.14.2 利用Oracle Fail Safe 與遠端熱備用資料庫(僅Windows NT
平台有效)
6.14.3 利用熱備用資料庫與遠端鏡像
6.15 回顧第7章備份與復原技術
7.1 備份選項
7.2 作業系統備份
7.2.1 冷備份
7.2.2 OFA 和備份
7.2.3 熱備份
7.2.4 使備份方式的持續時間最小化
7.2.5 為什麼不應備份線上重做日誌
7.2.6 ARCHIVELOG 和NOARCHIV-
ELOG方式
7.2.7 為什麼要使用ARCHIVELOG
方式
7.2.8 為什麼應該重複使用歸檔重做日誌
7.3 伺服器管理備份
7.4 邏輯備份
7.4.1 文字檔備份
7.4.2 邏輯控製檔備份
7.4.3 使用匯出和匯入
7.4.4 導入方式
7.4.5 增量、累積和完全的導出和導入
7.4.6 建立一致的匯出文件
7.4.7 不能同時使用匯出和歸檔重做日誌進行恢復
7.5 開發備份和復原計劃
7.5.1 常規的備份技巧
7.5.2 快速備份的技巧
7.6 恢復策略和情況
7.6.1 資料庫復原和涉及的資料庫結構組織
7.7 各種需要恢復的情形
7.8 恢復遺失的資料文件
7.8.1 SYSTEM 資料檔的遺失
7.8.2 包含活動回退段的資料檔的遺失
7.8.3 其他資料檔案的遺失
7.8.4 執行表空間恢復
7.8.5 執行資料檔恢復
7.8.6 在沒有資料檔案備份時怎樣進行恢復
7.8.7 恢復遺失的臨時表空間
7.8.8 只讀表空間遺失
7.8.9 索引表空間遺失
7.9 恢復線上重做日誌
7.9.1 線上重做日誌組某個成員遺失
7.9.2 非活動的重做日誌組遺失
7.9.3 活動重做日誌組遺失
7.10 恢復遺失的控製文件
7.10.1 被複用的控製文件成員遺失
7.10.2 控製檔案完全遺失
7.11 回顧第8章效能優化
8.1 最佳化系統全域區域的技術
8.1.1 怎樣優化資料緩衝區高速緩存
8.1.2 度量和最佳化庫高速緩存的效能
8.1.3 度量和優化字典快取的效能
8.1.4 怎樣估計應用程式的效能
8.2 固定應用程式代碼
8.2.1 如何確定應該固定的對象
8.2.2 如何確定目前固定的程序對象
8.2.3 怎樣固定應用程式程式碼
8.2.4 使用DBMS_SHARED_POOL.KEEP
的技巧
8.2.5 怎樣產生進行固定操作的腳本
8.2.6 使用DBMS_SHARED_POOL
.UNKEEP 的技巧
8.3 優化資料排序的技術
8.3.1 在記憶體中進行全部或大部分排序
8.3.2 最小化排序時的空間管理開銷
8.3.3 使用多個TEMP 表空間分佈排序
8.4 優化資料儲存的技術
8.4.1 使行連結和行遷移最小化
8.4.2 偵測行連結/遷移
8.4.3 確定模式中的連結行
8.4.4 防止和修正行連結/遷移
8.4.5 行連結/遷移的技巧
8.4.6 使可用空間碎片最小化
8.4.7 使區增長最小化
8.4.8 怎樣確定代價最高的查詢
8.5 追蹤SQL
8.5.1 設定使用者會話內的追蹤
8.5.2 使用DBMS_SYSTEM 設定使用者會話外的追蹤
8.5.3 生成系統追蹤
8.5.4 使用tkprof 解釋追蹤文件
8.5.5 使用AUTOTRACE 取得SQL 語句執行計畫與統計數據
8.6 優化回退段
8.6.1 最小化回退段爭用
8.6.2 使動態擴充最小化
8.6.3 分佈回退段的I/O
8.7 優化索引
8.7.1 怎樣確定和重建產生碎片的索引
8.7.2 怎樣確定表的索引
8.8 最佳化磁碟I/O
8.8.1 怎樣找出並避免I/O 熱點
8.8.2 使用原始檔案系統
8.9 產生優化程序統計數據
8.9.1 使用DBMS_UTILITY.ANALYZE
_SCHEMA收集統計數據
8.9.2 使用DBMS_UTILITY.ANALYZE
_DATABASE 收集統計數據
8.9.3 使用DBMS_STATS 收集效能統計數據
8.10 優化環境
8.10.1 怎樣優化Net8/SQL*Net
8.10.2 監控並優化系統資源
8.11 回顧第9章Oracle8i 的新特性
9.1 新的性能最佳化特性
9.1.1 設計的穩定性與儲存概要
9.1.2 排序改進
9.1.3 實體化視圖
9.1.4 利用DBMS_STATS 收集效能統計數據
9.2 新索引類型
9.2.1 基於函數的索引
9.2.2 反向鍵索引
9.2.3 降序索引
9.2.4 索引編排表
9.2.5 管理索引的新特性
9.3 新備份和復原特性
9.3.1 多目標歸檔
9.3.2 多歸檔日誌進程
9.3.3 使用LogMiner
9.3.4 快速啟動恢復
9.4 新匯出/匯入特性
9.4.1 使用多個匯出/匯入轉儲文件
9.4.2 選擇性的查詢匯出
9.4.3 預先計算最佳化程序統計資料的匯出
/導入
9.4.4 可移動表空間
9.4.5 混合導出/導入特性
9.5 新備用資料庫特性
9.5.1 歸檔重做日誌的自動傳送
9.5.2 啟用管理恢復
9.5.3 以唯讀方式開啟備用資料庫
9.6 管理作業佇列的新特性
9.7 管理儲存和物件的新功能
9.7.1 重新定位與組織表
9.7.2 刪除表中的列
9.7.3 將表列標記為不可用
9.7.4 本地管理的表空間
9.8 回顧第10章Internet DBA
10.1 Oracle8i — Internet 資料庫
10.2 Oracle 與Java
10.3 Oracle8i Java 虛擬機
10.4 Java VM 與Oracle8i 伺服器怎樣通訊
10.5 Java 與Oracle 應用程式伺服器
10.6 Oracle Jdeveloper
10.7 與Java 有關的初始化參數
10.8 Oracle Internet 檔案系統
10.9 Oracle 應用伺服器概覽
10.10 OAS 組件
10.11 調整OAS 記憶體請求
10.12 檢查建議的最小硬件
10.13 設計Oracle 應用程式伺服器配置
10.14 Oracle 應用伺服器的安裝
10.15 使用OAS 管理程序
10.16 怎樣啟動和停止OAS 組件
10.17 OAS 怎樣利用負載平衡
10.18 監控CPU 的消耗狀況
10.19 監控記憶體消耗
10.20 回顧第11章使用Oracle 提供的程式包
11.1.1 程式包:它們是什麼?
11.1 DBMS_JOB 和DBMS_IJOB 套件
11.1.1 Oracle 作業佇列的概念
11.1.2 配置SNP 進程的技巧
11.1.3 利用DBMS_JOB 和DBMS_IJOB
11.1.4 調度作業
11.1.5 更改作業
11.1.6 停止作業
11.1.7 其他作業佇列過程
11.1.8 監控作業佇列
11.1.9 管理屬於其他使用者的作業
11.1.10 利用作業佇列定期分析模式對象
11.2 DBMS_SYSTEM 程式包
11.2.1 使用DBMS_SYSTEM.SET_SQL
_TRACE_IN_SESSION
11.2.2 使用DBMS_SYSTEM.SET_EV
11.2.3 使用DBMS_SYSTEM.READ_EV
11.2.4 確定目前會話中設定的事件級別
11.2.5 其他DBMS_SYSTEM 程序
11.3 DBMS_SPACE 程式包
11.3.1 使用DBMS_SPACE.UNUSED
_SPACE
11.3.2 使用DBMS_SPACE.FREE
_BLOCKS
11.4 DBMS_SHARED_POOL 套件
11.4.1 使用DBMS_SHARED_POOL.SIZES
過程
11.4.2 使用DBMS_SHARED_POOL.SIZES
的技巧
11.4.3 使用DBMS_SHARED_POOL.KEEP
過程
11.4.4 使用DBMS_SHARED_POOL.KEEP
的技巧
11.4.5 使用DBMS_SHARED_POOL.UNKEEP
過程
11.4.6 使用DBMS_SHARED_POOL.UNKEEP
的技巧
11.4.7 使用DBMS_SHARED_POOL
.ABORTED_REQUEST_THRESHOLD
過程
11.4.8 使用DBMS_SHARED_POOL
.ABORTED_REQUEST_THRESHOLD
的技巧
11.5 DBMS_UTILITY
11.5.1 使用DBMS_UTILITY.COMPILE
_SCHEMA過程
11.5.2 使用DBMS_UTILITY.COMPILE
_SCHEMA 的技巧
11.5.3 使用DBMS_UTILITY.ANALYZE
_SCHEMA
11.5.4 使用DBMS_UTILITY.ANALYZE
_DATABASE
11.5.5 使用DBMS_UTILITY.GET
_PARAMETER_VALUE
11.5.6 使用DBMS_UTILITY.PORT
_STRING
11.5.7 使用DBMS_UTILITY.DB
_VERSION
11.5.8 使用DBMS_UTILITY.MAKE_DATA
_BLOCK_ADDRESS
11.5.9 使用DBMS_UTILITY.DATA_BLOCK
_ADDRESS_FILE
11.5.10 使用DBMS_UTILITY.DATA_BLOCK
_ADDRESS_BLOCK
11.5.11 使用DBMS_UTILITY.IS_PARALLEL
_SERVER
11.5.12 使用DBMS_UTILITY.CURRENT
_INSTANCE
11.5.13 使用DBMS_UTILITY.ACTIVE
_INSTANCES
11.6 DBMS_ROWID
11.6.1 使用DBMS_ROWID.ROWID
_BLOCK_NUMBER
11.6.2 使用DBMS_ROWID.ROWID
_CREATE
11.6.3 使用DBMS_ROWID.ROWID
_OBJECT
11.6.4 使用DBMS_ROWID.ROWID
_RELATIVE_FNO
11.6.5 使用DBMS_ROWID.ROWID_ROW
_NUMBER
11.6.6 使用DBMS_ROWID.ROWID_TO
_ABSOLUTE_FNO
11.6.7 使用DBMS_ROWID.ROWID
_TO_EXTENDED
11.6.8 使用DBMS_ROWID.ROWID_TO
_RESTRICTED
11.6.9 使用DBMS_ROWID.ROWID
_TYPE
11.6.10 使用DBMS_ROWID.ROWID
_VERIFY
11.6.11 使用DBMS_ROWID.ROWID
_INFO
11.7 回顧第12章Oracle 安裝與升級
12.1 Oracle 軟體
12.2 Oracle 資料庫
12.3 設定Oracle 檔案系統
12.3.1 最佳靈活結構
12.3.2 如何配置一個符合OFA 的Oracle
檔案系統
12.3.3 怎樣命名資料庫文件
12.3.4 為什麼應對參數檔使用鏈接
12.4 安裝Oracle 伺服器軟體
12.5 安裝前階段
12.5.1 規則1:確保軟體產品版本的相容性
12.5.2 規則2:為Oracle 設定作業系統
12.5.3 規則3:分配足夠的磁碟空間
12.5.4 規則4:配置安裝環境
12.6 安裝階段
12.6.1 步驟1:配置安裝環境
12.6.2 步驟2:啟動Oracle 安裝
12.6.3 步驟3:選擇並安裝軟體產品
12.7 安裝後階段:堅持五點
12.7.1 步驟1:檢查錯誤
12.7.2 步驟2:執行root.sh 腳本
12.7.3 步驟3:驗證文件的許可權
12.7.4 步驟4:測試Oracle 安裝
12.7.5 步驟5:配置環境
12.7.6 其他安裝後的任務
12.8 快速進行Oracle 安裝的五個技巧
12.8.1 從硬碟的準備區域進行安裝
12.8.2 不安裝文檔
12.8.3 不安裝產品的文檔
12.8.4 不選擇重新連接可執行文件
12.8.5 設定環境變數DEF_INSTALL =
TRUE 和NO_README = TRUE
12.9 在Windows NT 上安裝Oracle
12.9.1 安裝前階段
12.9.2 安裝階段
12.9.3 安裝後階段
12.10 修補、升級和移植Oracle
12.10.1 始終將Oracle 軟體安裝到新的ORACLE_HOME 目錄中
12.10.2 資料庫升級前進行資料庫冷備份
12.10.3 移植Oracle
12.10.4 使用Migration Utility 移植到
Oracle 8.0.x
12.10.5 用匯出和匯入移植
12.11 安裝UNIX 上的Oracle 8
12.11.1 安裝前階段
12.11.2 安裝階段
12.11.3 安裝後階段
12.12 回顧附錄A Oracle 伺服器介紹附錄B 動態效能(V$)視圖
展開