內容簡介
本書主要對SQL Server與Oracle兩種資料庫功能間的相互遷移進行對比講解,向開發人員提供有針對性的參考建議。全書由9章組成,包括安裝準備、資料庫體系結構、用戶及授權、對象遷移、數據遷移、SQL語句遷移(1)和(2)、事務差異及其他功能。每章均採用大量討論與實例對兩種資料庫進行翔實比較,有利於開發人員更好地理解遷移過程。
圖書目錄
第1章 安裝準備 1
1.1 伺服器硬體及運行環境 1
1.2 版本選擇 1
1.2.1 SQL Server的版本選擇 1
1.2.2 Oracle的版本選擇 2
1.3 安裝注意事項 2
1.3.1 SQL Server的安裝
注意事項 2
1.3.2 Oracle的安裝注意事項 3
1.4 客戶端 3
1.4.1 安裝 3
1.4.2 圖形界面 4
1.5 命令行 4
1.5.1 SQL Server的命令行 4
1.5.2 Oracle的命令行 5
1.6 創建和刪除實例 6
1.6.1 SQL Server的創建和
刪除實例 6
1.6.2 Oracle的創建和刪除實例 6
1.7 卸載 7
1.7.1 SQL Server的卸載 7
1.7.2 Oracle的卸載 7
1.8 參數配置 7
1.9 補丁安裝 8
1.9.1 SQL Server的補丁安裝 8
1.9.2 Oracle的補丁安裝 8
1.10 32位系統記憶體使用 9
1.11 防火牆對外連線埠 10
1.11.1 SQL Server的防火牆
對外連線埠配置 10
1.11.2 Oracle的防火牆對外
連線埠配置 10
1.12 幫助檔案及售後服務 11
1.12.1 SQL Server的幫助
檔案及售後服務 11
1.12.2 Oracle的幫助檔案
及售後服務 11
1.13 異步I/O和裸設備 11
1.14 資料庫的啟動和停止 12
1.14.1 SQL Server的啟動
和停止 12
1.14.2 Oracle的啟動和停止 14
第2章 資料庫體系結構 15
2.1 DBMS體系結構圖 15
2.2 架構和所有者 16
2.2.1 SQL Server的架構和
所有者 16
2.2.2 Oracle的架構和所有者 20
2.2.3 遷移建議 20
2.3 塊(Block)/頁(Page) 20
2.3.1 塊/頁的大小 20
2.3.2 管理可用空間 21
2.3.3 行連結/行溢出 21
2.3.4 行遷移/轉接行 22
2.4 區(Extent) 22
2.4.1 區的大小和分布 22
2.4.2 最大讀寫量 23
2.4.3 對象初始分配的區 23
2.5 段(Segment)/堆(Heap)、
索引(Index) 23
2.5.1 SQL Server堆和索引 23
2.5.2 Oracle段 23
2.6 數據檔案 23
2.6.1 檔案尺寸 23
2.6.2 自動增長 24
2.6.3 檔案收縮/刪除/脫機 25
2.6.4 移動物理檔案位置 26
2.6.5 系統資料庫改目錄 27
2.6.6 裸設備 27
2.7 表空間(Table Space)/
檔案組(File Group) 28
2.7.1 在表空間/檔案組中
創建多個檔案 28
2.7.3 默認表空間 29
2.7.4 表空間塊尺寸 29
2.7.5 資料庫收縮 29
2.7.6 刪除表空間/檔案組 29
2.7.7 唯讀檔案組 31
2.7.8 唯讀資料庫 31
2.7.9 脫機 32
2.7.10 表空間/資料庫的傳輸 32
2.7.11 磁碟I/O壓力分布 36
2.8 會話(Session)與進程/執行緒 37
2.8.1 Oracle會話與進程 37
2.8.2 SQL Server會話與執行緒 39
2.9 記憶體管理 43
2.9.1 Oracle的記憶體管理 43
2.9.2 SQL Server的記憶體管理 46
2.10 線上日誌 49
2.10.1 Oracle的線上日誌 49
2.10.2 SQL Server的線上日誌 50
第3章 用戶及授權 53
3.1 用戶和登錄名 53
3.1.1 SQL Server的用戶和
登錄名 53
3.1.2 Oracle的用戶 57
3.2 密碼策略 59
3.2.1 SQL Server的密碼策略 59
3.2.2 Oracle的密碼策略 61
3.3 重命名 63
3.3.1 SQL Server的管理員
重命名 63
3.3.2 Windows的管理員重命名 64
3.3.3 修改計算機名 64
3.3.4 Oracle:修改用戶名 66
3.4 防止遠程登錄 66
3.4.1 SQL Server防止遠程登錄 66
3.4.2 Oracle防止遠程登錄 67
3.5 限制同一用戶的並發登錄 68
3.6 最高許可權用戶 69
3.7 角色及許可權 69
3.7.1 相關語法 69
3.7.2 SQL Server中的
預定義角色 70
3.7.3 Oracle中的預定義角色 74
3.7.4 自定義角色 77
3.8 許可權管理示例 78
3.8.1 SQL Server架構許可權 78
3.8.2 在SQL Server用戶中
模擬Oracle用戶 78
3.8.3 與其他用戶共享一個架構 79
3.8.4 讓一個唯讀用戶可以
創建自己的視圖 80
3.9 模組授權 80
3.9.1 SQL Server中的模組授權 81
3.9.2 Oracle中的模組授權 82
第4章 對象遷移 84
4.1 表 84
4.1.1 堆表 84
4.1.2 聚集索引表/索引組織表 84
4.1.3 聚簇表(Clustered Table)/
稀疏列(Sparse Columns) 86
4.1.4 計算列/虛擬列 87
4.1.5 外部擴展表(Organization External)和檔案流/表(FileStream/FileTable) 88
4.1.6 臨時表 88
4.1.7 表變數 90
4.1.8 表移動到其他表空間/
檔案組 91
4.1.9 表的重建 93
4.1.10 check和default約束 94
4.1.11 刪除表 94
4.1.12 按列授權 94
4.2 索引 94
4.2.1 索引名 95
4.2.2 函式索引和計算列 95
4.2.3 索引視圖/視圖索引 95
4.2.4 聚集索引/索引組織表上的
非聚集索引 95
4.2.5 點陣圖索引和反向索引 96
4.2.6 線上創建索引 96
4.2.7 包含性列(Included Columns) 96
4.2.8 重建索引,最佳化性能 96
4.2.9 將索引移動到其他表空間/檔案組 97
4.2.10 篩選索引(Filtered Index) 98
4.2.11 NULL值處理 99
4.2.12 唯一值索引(Unique Index) 99
4.2.13 最佳化索引的使用 100
4.3 分區表 101
4.3.1 Oracle的分區方案 101
4.3.2 Oracle分區表的索引 103
4.3.3 在Oracle中將已有錶轉化為分區表 103
4.3.4 在Oracle中訪問指定分區 104
4.3.5 Oracle中的分區維護 104
4.3.6 SQL Server的分區方案 105
4.3.7 SQL Server中分區表的建立 105
4.3.8 在SQL Server中查看分區表所有分區對應的檔案組 107
4.3.9 SQL Server分區表的
索引 107
4.3.10 SQL Server中將已有表
轉化為分區表 107
4.3.11 在SQL Server中訪問
指定分區 108
4.3.12 SQL Server的分區
維護操作 109
4.3.13 滑動視窗方案 111
4.3.14 討論 113
4.4 存儲過程 113
4.4.1 編譯 113
4.4.2 授權 113
4.4.3 事務 114
4.4.4 DDL語句 115
4.4.5 線上修改存儲過程代碼 116
4.4.6 出錯處理 116
4.4.7 返回結果集 116
4.4.8 自治事務(Autonomous Transaction) 117
4.4.9 傳輸參數及變數定義 119
4.5 函式 119
4.5.1 使用DML語句 119
4.5.2 表值函式 120
4.6 物化視圖/索引視圖 123
4.6.1 Oracle物化視圖 123
4.6.2 SQL Server索引視圖 123
4.6.3 視圖的刷新 124
4.7 觸發器 124
4.7.1 DML觸發器 124
4.7.2 語句級觸發器 125
4.7.3 行級觸發器 127
4.7.4 before/instead of型
觸發器 128
4.7.5 DDL觸發器 128
4.7.6 資料庫事件觸發器 129
4.8 同義詞 130
4.9 序列/自增長列 130
4.9.1 Oracle序列 130
4.9.2 SQL Server自增長列 131
4.9.3 SQL Server中的序列 132
第5章 數據遷移 135
5.1 字元類型 135
5.1.1 SQL Server和Oracle
字元類型長度的比較 135
5.1.2 varchar 2和varchar 135
5.1.3 字元串的 ' ' 值與NULL 136
5.1.4 本地字元集 136
5.1.5 Unicode編碼 139
5.1.6 相關函式 140
5.2 數據類型 140
5.2.1 Oracle中的數據類型 140
5.2.2 SQL Server中的數據
類型 141
5.2.3 遷移建議 142
5.3 日期型 142
5.3.1 日期型的遷移 142
5.3.2 內部存儲 143
5.3.3 日期常量 144
5.4 大對象欄位 146
5.4.1 SQL Server中的
大對象欄位 146
5.4.2 Oracle中的大對象欄位 147
5.4.3 大對象欄位的遷移 148
5.5 其他特殊類型 148
5.6 對象遷移工具 148
5.6.1 SQL Server的對象
遷移工具 148
5.6.2 Oracle的對象遷移工具 149
5.7 數據遷移工具 150
5.7.1 SQL Server的數據
遷移工具 150
5.7.2 Oracle的數據遷移工具 150
5.8 用戶自定義數據類型 150
5.8.1 SQL Server中的自定義
數據類型 150
5.8.2 Oracle中的自定義
數據類型 152
5.9 where條件中數據類型的
隱式轉換 155
5.9.1 SQL Server中數據類型的
隱式轉換 156
5.9.2 Oracle中數據類型的
隱式轉換 157
第6章 SQL語句遷移(1) 158
6.1 SQL語法 158
6.1.1 SQL語句結尾的分號 158
6.1.2 ""/""和go 158
6.1.3 標識符和別名 159
6.1.4 單步調試及信息輸出 160
6.1.5 賦值 160
6.1.6 多欄位匹配/賦值 161
6.1.7 CTE 162
6.1.8 指定使用索引 165
6.1.9 SQL語句的並行處理 165
6.1.10 模組加密 167
6.1.11 獲得DML影響行數 168
6.1.12 獲得客戶端IP位址 168
6.1.13 Oracle偽列 169
6.1.14 僅獲取部分輸出/分頁 172
6.1.15 動態(拼接)SQL 173
6.1.16 參數及綁定 174
6.1.17 修改對象的定義 176
6.2 字元串與函式 177
6.2.1 字元串的比較 177
6.2.2 排序 180
6.2.3 ' ' 值與null值 181
6.2.4 轉義字元 182
6.2.5 內置函式遷移 182
6.3 常用語句 185
6.3.1 insert 185
6.3.2 DML同時返回結果集 186
6.3.3 Delete數據後釋放
存儲空間 188
6.3.4 分批delete大量數據 188
6.3.5 多表關聯 190
6.3.6 刪除表中所有行
(truncate table) 192
6.3.7 層次查詢子句
(connect by) 193
6.3.8 合併(merge) 197
6.3.9 分組統計 198
6.3.10 透視和逆透視 200
6.3.11 批載入(bulk load) 202
第7章 SQL語句遷移(2) 203
7.1 編程 203
7.1.1 If語句 203
7.1.2 循環語句 203
7.1.3 游標 204
7.1.4 出錯處理和拋出異常 206
7.1.5 程式包/程式集 208
7.1.6 與其他開發語言的集成 209
7.1.7 自定義聚合函式 217
7.1.8 合併多條記錄中的
同一個字元串欄位 221
7.1.9 分解字元串為一張表 222
7.1.10 正則表達式 224
7.1.11 數據加密 230
7.2 維護 232
7.2.1 查看錶的列信息 232
7.2.2 顯示SQL的執行計畫 232
7.2.3 統計信息的更新 233
7.2.4 管理視圖 235
7.2.5 連結伺服器(DBlink) 236
第8章 事務差異 244
8.1 事務級別標準 244
8.2 默認事務級別 244
8.2.1 無阻塞查詢/快照事務 244
8.2.2 SQL Server設定快照
事務為默認事務級別 245
8.2.3 SQL Server模擬Oracle
默認事務操作 246
8.3 事務操作 246
8.3.1 顯式事務/隱性事務 246
8.3.2 DDL語句與事務 247
8.3.3 語句塊在語句出錯時
停止 248
8.3.4 匿名語句塊 248
8.3.5 事務提交和回滾 249
8.3.6 事務保存點 250
8.3.7 鎖等待(阻塞) 250
8.4 未能實現的事務等級 251
8.4.1 Oracle中實現一致讀
事務級別 251
8.4.2 自治事務 251
8.4.3 SQL Server利用髒讀
獲得事務發起者的IP 252
8.5 鎖 253
8.5.1 鎖記憶體管理和鎖升級 253
8.5.2 顯式指定加鎖的方式 256
8.5.3 查看會話、對象、SQL、
事務和鎖 257
8.5.4 跟蹤鎖分配 258
8.5.5 死鎖檢測 259
8.6 日誌 261
8.6.1 SQL Server日誌 261
8.6.2 SQL Server中日誌
最小化 261
8.6.3 Oracle日誌 262
8.6.4 Oracle中日誌最小化 262
第9章 其他功能 263
9.1 性能監控 263
9.1.1 SQL Server的性能監控 263
9.1.2 Oracle的性能監控 265
9.2 資源管理 267
9.2.1 SQL Server的資源管理 267
9.2.2 Oracle的資源管理 268
9.3 數據壓縮/列存儲 269
9.3.1 Oracle中的數據壓縮 269
9.3.2 SQL Server中的
數據壓縮 270
9.4 數據快速恢復 272
9.4.1 Oracle:閃回(Flashback) 272
9.4.2 Oracle的四種閃回方式 275
9.4.3 SQL Server的資料庫快照
(Database Snapshots) 276
9.4.4 優勢對比 279
9.5 定時任務 279
9.5.1 Oracle中的定時任務 279
9.5.2 SQL Server中的定時任務 282
9.6 開發接口 292
9.6.1 ODBC/ OCI 292
9.6.2 OLE DB 293
9.6.3 .NET 293
9.6.4 Java 293
9.6.5 PHP 294
9.7 存儲管理 294
9.7.1 Oracle的存儲管理 294
9.7.2 SQL Server的存儲管理 294
9.8 高可用性方案 294
9.8.1 SQL Server的高可用性
方案 295
9.8.2 Oracle的高可用性方案 295
9.9.1 SQL Server的高性能
方案 296
9.9.2 Oracle的高性能方案 296
9.10 備份方案 296
9.10.1 SQL Server的備份方案 297
9.10.2 Oracle的備份方案 297
9.11 變更數據捕獲 297
9.11.1 SQL Server的變更數據
捕獲 297
9.11.2 Oracle的變更數據捕獲 298
9.12 郵件通知 298
9.12.1 SQL Server的郵件通知 298
9.12.2 Oracle的郵件通知 300
9.12.3 Buffer Pool Extension 301
參考文獻 302