① SQL實戰新手入門:前言
前言
信息泛濫並沒有減弱的趨勢 人們被來自電視 Internet和塞滿郵箱的廣告等各種各樣的信息所淹沒 令人遺憾的是 隨著信息數量的增長 信息的質量卻在急劇下降 圖書被期刊和雜志取代 然後被報紙 Web頁面 博客取代 最終又被推特(eet)取代 信息量變得越來越龐大 也變得越來越不可信賴 更糟糕的是 在Internet時代數據永遠不會真正消失 它不停地累積 隱藏在各種文件 日誌和資料庫中 根據Google的前CEO Eric Schmidt的說法 現在人類在兩天之內創造的數據量就相當於自從出現書寫記錄到 年(或者任何一年)所創造的數據 即現在只需要兩天就會創造出大約 EB(即 億GB)的數據 這一步伐還在不停地加速
當以電子化方式存儲數據變成現實之後 它也帶來了自己的規則 要理解數據的含義 人們必須去學習相應的語言 關系資料庫理論為人們帶來了對電子化數據的掌控能力 它採用結構化查詢語言(Structured Query Language SQL)來處理數據 到目前為止 關系資料庫獲取了巨大的成功
自從 世紀 年代第一次提出關系資料庫以來 關系資料庫和SQL已經取得了長足的進步 關系資料庫和SQL中包含的那些概念對於初學者來說可能並不直觀 本書將為讀者抽絲剝繭 使讀者理解SQL背後的原理 既讓讀者了解SQL的強大功能 也了解它存在的局限
讀者對象
本書從入門知識開始介紹 讀者無須具備SQL或關系資料庫的預備知識 本書將帶領讀者走入SQL的發現之旅 讀者將親自創建示例資料庫 它不僅結合了本書中所介紹的SQL概念 還將通過幾次反復重構引入數據建模 查詢調整和優化的概念 本書還介紹了一些適用於每一種SQL的最佳實踐
本書適合於准備學習關系資料庫程序設計的計算機程序員 也適合那些希望從資料庫中釋放更強大威力的商業用戶 SQL是關系資料庫世界的通用語言 每一個對學習SQL這門強大語言感興趣的人都適合閱讀本書
先前已具有一定資料庫使用經驗的讀者可以略過前兩章 直接跳到更高級的內容 當然也可以復習一下這兩章中介紹的重要原則
內容提要
本書介紹了當前已發布的SQL標准SQL: 把最主要的精力放在了SQL語言實際的運用上 強調了不同SQL實現之間存在的差異 本書介紹了很多示例 在這些示例中使用了最新版本的現代資料庫系統對SQL的具體實現 這些資料庫要麼是可以免費下載的Express版本 要麼是免費的開源軟體 另外 本書還介紹了目前最流行的桌面型資料庫軟體Microsoft Access和OpenOffice 本書中介紹的資料庫包括
IBM UDB
Oracle g
Microsoft SQL Server / /
MySQL /
PostgreSQL
Microsoft Access /
帶有嵌入式 HSQLDB的OpenOffice BASE
本書結構
本書從整體著眼 向讀者介紹了關系資料庫的一般概念 特別是SQL中的概念 通過一個反復重構資料庫的過程 循序漸進地向讀者介紹了資料庫的各種知識 在這一過程中 對於開始時介紹的每一個概念 隨後都進行了更詳細的分析 從而啟發讀者理解這些概念背後的關聯性
第 章簡要地介紹了SQL及其背後的關系理論 這一章只是浮光掠影般地介紹了資料庫最基本的概念 後面的各章都在此基礎上展開 該章介紹了數據與信息的區別 一些基本的原理還需要在後面章節中進一步解釋 這一章還對本書中所使用的關系資料庫管理系統(RDBMS)進行了一個概述
第 章對這些概念進行了更深入的介紹 根據關系模型的分析 應該將無組織的數據結構化 使之符合關系模型的要求 即將 冰箱磁鐵 模式轉換為 斗櫃 模式 然後再將其轉換為關系資料庫中實際的表
第 章進一步介紹了關系模型 初步介紹了資料庫的基本設計和規范化的基本過程 這一章還介紹了一些對規范化數據執行查詢的SQL工具 此外 該章還介紹了動態SQL
SQL是一種基於集合的語言 這使得它既有強大的功能 也存在一定的局限 第 章討論了最流行的過程化擴展(例如Oracle的PL/SQL和Microsoft的Transact SQL) 這一章還介紹了SQL函數 SQL函數可以作為一種補充手段 以彌補在處理基於記錄的邏輯時SQL存在的固有不足
第 章介紹了聚合數據 總結了這種方式的威力和局限 該章將前面章節中介紹過的SQL聚合函數提高到了一個新的層次 演示了如何使用SQL來獲取數據的聚合值
第 章介紹了子查詢 當數據集是交錯的 查詢數據需要依靠多層次的數據篩選時 可以將一個查詢作為另一個查詢的篩選條件 可以調整SQL語句 用JOIN代替子查詢 這是貫穿本書的主題之一
SQL的強大功能在於處理存儲在多個關系表中的數據 第 章介紹了SQL如何在單個數據集中聯合這些關系表的數據
本書介紹的是基本的SQL概念 打開了進一步學習SQL的大門 第 章是SQL發現之旅的下一站 它介紹了進一步學習SQL時應該考慮的問題
第 章介紹了性能優化技術 描述了在優化查詢和資料庫環境時常用的方法和最佳實踐 第 章討論了多用戶環境中關系資料庫的工作原理 介紹了SQL中實現的處理並發數據訪問的機制
SQL所有的操作都與結構和順序有關 畢竟它是結構化查詢語言 真實的數據可以是各種規模和結構 第 章介紹了SQL如何處理半結構化數據(XML文檔) 非結構化數據(文本文件)和二進制數據(例如圖片和聲音)
第 章簡要地討論了資料庫領域的最新發展 例如列式資料庫 NoSQL資料庫 對象資料庫和面向服務的架構(SOA) 以及它們與SQL的關系
對於本書所討論的每一種資料庫 附錄A按部就班地描述了安裝示例資料庫Library的過程 以及如何使用特定的指令生成Library資料庫的初始數據 可以從本書支持網站上下載到這些SQL腳本
對於本書介紹的關系資料庫軟體包 附錄B提供了一個詳細的安裝步驟
附錄C描述了每一種資料庫所提供的工具 使用這些工具可以訪問 創建資料庫對象 操縱存儲在表中的數據
附錄D介紹了開源項目SQuirreL Universal SQL Client 可以通過Java Database Connectivity(JDBC)介面 使用SQuirreL Universal SQL Client來訪問各種資料庫 該附錄詳細地介紹了如何安裝和配置該軟體
學習本書的條件
為了充分利用本書 建議下載和安裝本書中使用的關系資料庫軟體 這些軟體絕大多數都是免費的 或者具有免費的試用版 可以按照附錄B中介紹的步驟來安裝這些軟體
支持網站和代碼
在學習每一章時 建議下載相應的SQL腳本 創建並生成資料庫 可以從 wrox 或者 agilitator 下載到本書的代碼 在支持網站中 可以使用搜索框來查找指定名稱的圖書 在找到指定的圖書之後 單擊Download Code鏈接就可以訪問允許下載的文件 可以通過HTTP或FTP下載這些代碼 所有的文件都是以ZIP格式保存
本書的ISBN是 通過ISBN號查找本書 要比通過圖書名稱來查找更加方便
此外 還可以從Wrox的下載頁面 wrox /dynamic/books/download aspx下載到本書的代碼 只要單擊Discovering SQL: A Hands On Guide for Beginners鏈接 就可以訪問允許下載的文件
勘誤表
盡管我們已經盡了最大的努力來保證文章或代碼中不出現錯誤 但是錯誤總是難免的 如果您在本書中找到了錯誤 例如拼寫錯誤或代碼錯誤 請告訴我們 我們將非常感激 通過勘誤表 可以讓其他讀者避免走入誤區 當然 這還有助於提供更高質量的信息
要在網站上找到本書英文版的勘誤表 可以登錄// wrox 通過Search工具或書名列表查找本書 然後在本書的細目頁面上 單擊Book Errata鏈接 在這個頁面上可以查看到Wrox編輯已提交和粘貼的所有勘誤項 完整的圖書列表還包括每本書的勘誤表 網址是 wrox /misc pages/booklist s
如果你在勘誤表上沒有找到錯誤 那麼可以到 wrox /contact/techsupport s上完成上面的表格 並把找到的錯誤發送給我們 我們將會核查這些信息 如果無誤的話 會把它放置到本書的勘誤表中 並在本書的後續版本中更正這些問題
p p wrox
要與作者和同行討論 請加入p p wrox 上的P P論壇 這個論壇是一個基於Web的系統 便於您張貼與Wrox圖書相關的消息和相關技術 與其他讀者和技術用戶交流心得 該論壇提供了訂閱功能 當論壇上有新的消息時 它可以給您傳送感興趣的論題 Wrox作者 編輯和其他業界專家和讀者都會到這個論壇上來探討問題
在//p p wrox 上 有許多不同的論壇 它們不僅有助於閱讀本書 還有助於開發自己的應用程序 要加入論壇 可以遵循下面的步驟
( ) 進入p p wrox 單擊Register鏈接
( ) 閱讀使用協議 並單擊Agree按鈕
( ) 填寫加入該論壇所需要的信息和自己希望提供的其他信息 並單擊Submit按鈕
( ) 你會收到一封電子郵件 其中的信息描述了如何驗證賬戶和完成加入過程
不加入P P也可以閱讀論壇上的消息 但要張貼自己的消息 就必須加入該論壇
加入論壇後 就可以張貼新消息 回復其他用戶張貼的消息 可以隨時在Web上閱讀消息 如果要讓該網站給自己發送特定論壇中的消息 可以單擊論壇列表中該論壇名旁邊的Subscribe to this Forum圖標
關於使用Wrox P P的更多信息 可閱讀P P FAQ 了解論壇軟體的工作情況以及P P和Wrox圖書的許多常見問題 要閱讀FAQ 可以在任意P P頁面上單擊FAQ鏈接
返回目錄 SQL實戰新手入門
編輯推薦
Oracle索引技術
高性能MySQL
lishixin/Article/program/SQL/201311/16496
② Oracle大型資料庫系統的前言
風,緊,
夜,深沉,
劍,已出鞘,
影,飄然前行!
本書的立意和內容
在伺服器領域,IBM p系列伺服器與AIX操作系統毫無疑問是UNIX伺服器領域中的佼佼者,它代表著UNIX深刻的技術內涵和廣泛的用戶基礎。同樣地,Oracle是資料庫領域事實上的市場領導者,眾多IT應用系統採用了Oracle構架,運行Oracle資料庫作為其數據支撐節點。目前Oracle用戶已經可以升級其資料庫到Oracle Database 11g Release 2版本。
實踐上,運行在AIX上的Oracle資料庫系統是諸多大中型系統的典型配置方式——用戶得益於IBM AIX的堅固支撐,受惠於Oracle的可用性保證!
但凡事都有兩面性,AIX是一套復雜的UNIX系統,Oracle則是一種「最難」的資料庫。對於任何用戶而言,了解、熟悉、運用、掌握兩者的平台特徵和工程技術手段,需要進行大量的學習、培訓、實踐以及長時間的磨練!廣大資料庫用戶需要一種快捷的學習路徑以及可參考資料來幫助他們構建、運行、維護乃至優化自己的系統!
本書的立意即在於此!本書以AIX UNIX平台為主線,以其他UNIX系統為參照,描述了資料庫系統Oracle 10g、Oracle 11g的構架方法,說明了該資料庫在AIX平台常用的諸多管理方面,提供了在AIX上實施Oracle集群的環境要素說明和實施方法,分析了伺服器綜合容災的工程手段和技術方法,綜合了在AIX系統上優化Oracle運行環境的諸多做法和要點。最後,本書還以AIX上Sybase ASE資料庫系統為對比,論述了Oracle在AIX上的獨到特徵。
基於上述出發點,本書力爭面向工程實踐,並面向用戶的實際需求展開論述。因此,本書並未刻意在學術上進行高、精、尖的探索,而是力爭將復雜的事情簡單化,把各技術要點以最簡單的形式和大家能了解的方法擺在用戶面前!
本書的讀者群體
本書的目標讀者是那些在UNIX上進行資料庫開發、維護、管理、優化任務和高可用設置的工程技術人員,以及從事於這個尖端行業的人群。
從技術角度看,本書所涉及的內容全部是生產實踐中必要的過程和階段。因此,本書並沒有試圖去描繪一些新鮮熱辣的炒作概念或遙不可及的無用內容,而是作為一種可以放在手邊的技術專著面向大眾,服務於系統用戶95%的日常工作需求。正因如此,本書注重細節描述和過程說明,讀者無須擁有非常深厚的專業技術基礎。
當然,學習的熱情和探索的精神是必不可少的!
本書的內容安排
本書共分為五篇,按照資料庫項目實施中工作內容的不同方向進行了分組,各篇的內容分述如下。
第一篇 構架篇
本篇側重在於系統的構架,以及構架中的相關要素和重點。 第1章 了解伺服器運行環境
本章力圖使讀者站到一個足夠高的層次和高度來看待伺服器技術框架。站得高,則看得必遠!
第2章 管理和維護伺服器設備和服務
Oracle運行在AIX上,Oracle將使用AIX資源、調用AIX服務,受AIX的運行狀態影響。
第3章 管理伺服器存儲
資料庫伺服器的一個典型特徵就是大量使用磁碟空間來存儲資料庫數據。Oracle需要AIX提供的存儲介質來存儲數據。
第4章 構建Oracle環境
Oracle的環境構架相對復雜。用戶需要掌握Oracle系統構架的具體工程細節,並獲得動手能力。
第二篇 管理篇
本篇結合了AIX系統的諸多特點,綜合論述了Oracle在AIX上管理的具體方法和實踐行為規范。 第5章 在AIX中Oracle資料庫管理
日常管理是一個管理員工作的大部分內容。本章描述了常用的管理內容和做法。
第6章 使用ASM跳過AIX卷空間管理
ASM是Oracle提出的存儲管理最新的實施方法。Oracle推薦使用ASM來進行磁碟空間的管理。
第7章 管理AIX下Oracle的空間使用
空間管理是系統管理的重點。Oracle需要各種不同的空間要素,需要管理和維護。
第三篇 災備篇
本篇站在伺服器的層面,綜合講述了在AIX運行Oracle系統所需進行的備份管理工作,以及災難恢復實施方法。 第8章 設計和實施AIX系統備份
伺服器系統的備份工作必須能夠兼顧操作系統、應用系統、資料庫數據備份的各方面。AIX是備份中重要的一環。
第9章 設計Oracle系統備份
Oracle作為資料庫系統,其備份方法和恢復手段與操作系統備份截然不同。按照規范的方法進行備份對恢復有著不言而喻的意義。
續表
第三篇 災備篇
本篇站在伺服器的層面,綜合講述了在AIX運行Oracle系統所需進行的備份管理工作,以及災難恢復實施方法。 第10章 實施Oracle系統備份
工程上實施資料庫備份的方法是百花齊放的。這里討論了若干種具體實施方法和手段。
第11章 恢復崩潰的系統
防患於未然!好的備份系統是經過恢復測試的系統。讓我們看看如何用備份進行系統恢復的!
第四篇 集群篇
在AIX平台上RAC集群是一種廣泛使用的結構。本篇即針對集群展開討論。 第12章 構建AIX下的Oracle集群環境
集群是實現Oracle系統網格與高可用的主要技術手段,尤其在AIX承擔的關鍵業務系統中。
第13章 在AIX中管理Oracle集群環境
集群的管理有其自身特色,包括集群件管理、集群服務的管理。
第五篇 優化篇
好的系統需要進行預先的優化結構設計,並在系統運行中進行漸近的再優化。本篇以項目周期為階段,描述了系統優化的各個過程和方面。 第14章 在AIX上綜合設置Oracle環境
系統在構建時,要綜合考慮可用性和性能之間的關系,並設置和優化系統。
第15章 AIX上Oracle系統的運行優化
在系統運行過程中,應用性能會隨時變化,性能的檢查和優化也需隨時進行。動態地、漸進式地分析與調整也就十分必要。
第六篇 擴展篇
通過與Sybase ASE的對比來了解什麼是Oracle。 第16章 AIX上Oracle與Sybase的比較
Sybase ASE與Oracle同為可在AIX上運行的資料庫系統。兩種產品中各有特點、各有優勢、同樣優秀。
本書從構思到最終完成,歷時兩年時間,其間更改數十稿。單獨講述UNIX不難,單獨講述Oracle不難,但把二者結合起來,站在整個系統的高度來說明問題,卻讓本書作者難以著手——千頭萬緒,該寫的內容太多!
致謝
本書內容來源於實踐,用戶即是最佳的實踐來源。感謝山東海化集團王鳳鳴先生、中國電信青海公司陳宇峰先生、福建公司陳亮先生等人的鼎力支持。本書中若干技術觀點和實踐總結來源於作者為該單位提供資料庫顧問服務的工作現場。感謝他們和作者在工作與技術領域上的不斷探討,這促進了本書內容的不斷完善!
在本書編寫過程中,很多復雜的、結構性的實驗在北京時代朝陽資料庫技術中心Trail實驗室完成。北京時代朝陽資料庫技術中心是一家有著17年企業歷史的資料庫專業技術機構,精於資料庫產品與服務。這里有多樣化的UNIX平台、各種集群構架、不同容災環境等,這為本書所涉及的各項結構性實踐提供了可能。感謝Trail實驗室各位同事的配合。另外,考慮到本書在部分章節上存在一定難度,為保證本書的可讀性,作者也請Trail實驗室中參加Oracle職業/就業課程的若干學員試讀了本書,感謝他們提出的諸多意見!
感謝本書策劃編輯胡辛征先生的熱心鼓勵和積極推動,感謝文字編輯江立女士的細心編審和中肯點評。沒有他們的細致工作和鼓勵,本書不能順利出版。
最後,感謝博文視點以知識傳播的方式對中國IT產業的支持——以其廣博文字選題,以其超然視點出版!
祝博文視點從成功走向輝煌!
本書作者:文平
2009-09-20於北京
目錄第一篇構架篇
第1章了解伺服器運行環境
1.1 AIX:一種成熟的UNIX
1.1.1 AIX系統構成要素
1.1.2登錄AIX系統
1.1.3 RS6000伺服器結構
1.1.4 AIx系統管理界面
1.1.5 AIX中使用的Shell
1.1.6 AJx存儲組織結構
1.1.7 AJx換頁空間(交換區)
1.1.8 AIX文件系統結構
1.1.9 AJx對象數據管理
1.1.10 AIX當前進程運行
1.1.11 AIX用戶訪問過程
1.1.12 AIX各種服務提供
1.1.13 AIX網路通信設置
1.1.14 AIX中的常用操作
1.2 Oracle與AIx系統
1.2.1 Oracle與AIX的角色
1.2.2 Oracle系統典型特徵
1.2.3系統全局區SGA
1.2.4程序全局區PGA
1.2.5 Oracle後台進程
1.2.6 Oracle資料庫物理結構
1.2.7資料庫數據存放
1.2.8資料庫的用戶訪問
第2章管理和維護伺服器設備和服務
2.1管理AIX中的設備
2.1.1 AIX使用設備類型
2.1.2 AIX的設備分層管理
2.1.3 ODM對象資料庫
2.1.4設備的狀態特徵查看
2.1.5設備的配置和檢測
2.1.6設備屬性信息查看
2.1.7創建主機硬體配置檔案
2.2管理AIX中的服務
2.2.1系統資源控制器的啟動
2.2.2系統資源的啟動和關閉
2.2.3系統資源的刷新
2.2.4通常啟動的資源
2.3 AIX系統錯誤處理
2.4 AIX系統硬體診斷
2.5 AIX系統日誌查看
第3章管理伺服器存儲
3.1 AIX存儲基本框架
3.2 AIX的存儲概念要素
3.2.1物理卷和卷組
3.2.2邏輯卷和邏輯分區
3.2.3AIX日誌文件系統
3.2.4文件系統掛載和目錄樹
3.3系統存儲結構的管理
3.3.1系統中的卷組定義信息
3.3.2增加、刪除和設置卷組
3.3.3卷組中物理磁碟的改變
3.3.4卷組重組提高磁碟性能
3.3.5卷組的活動狀態管理
3.3.6卷組的導入導出管理
3.3.7邏輯卷的創建和維護
3.3.8通過鏡像保護邏輯卷
3.3.9通過條帶優化邏輯卷
3.3.10物理卷的設置和管理
第4章構建Oracle環境
第二篇管理篇
第5章在AIX中Oracle資料庫管理
第6章使用ASM跳過AIX卷空間管理
第7章管理AIX下Oracle的空間使用
第三篇災備篇
第8章設計和實施AIX系統備份
第9章設計Oracle系統備份
第10章實施Oracle系統備份
第11章恢復崩潰的系統
第四篇集群篇
第12章構建AIX下的Oracle集群環境
第13章在AIX中管理Oracle集群環境
第五篇優化篇
第14章在AIX上綜合設置Oracle環境
第15章AIX上Oracle系統的運行優化
第六篇擴展篇
第16章AIX上Oracle與Sybase的比較