1. 程式人生 > >Oracle的十八般武藝

Oracle的十八般武藝

技術管理 分區 站點 add 兩種 事務處理 可擴展 高可用集群 維護

自我介紹
張小熊(Bear)
畢業於北京理工大學
10年以上Oracle DBA經驗(Oracle 9i\10g\11g\12c)
多年數據庫集群處理經驗及基於雲平臺的大數據架構設計經驗
現任某大型美業互聯網平臺CTO
51CTO論壇Oracle專家博主
Oracle 10g OCM & Oracle 11g OCM
博客站點: http://bearlovecat.blog.51cto.com/
個人郵箱:[email protected][email protected]

學習的目的
OK,言歸正傳,我們既然來學習Oracle數據庫,那麽首先要明白自己的目的,我為什麽要學習數據庫,為什麽要學習Oracle數據庫,出於興趣? 出於對DBA職位的追求? 出於對薪資的更高向往? 可能都會有吧,那麽讓我們簡單看一下什麽是數據庫,什麽是Oracle數據庫。以及應該怎麽樣來學習Oracle。

我為什麽學習Oracle
我當初學Oracle主要也是因為看到DBA待遇好,地位高,哈哈,運維說真的,沒多大前途,現在都實現企業雲,雲桌面,雲存儲,雲計算,就連虛擬化都已經不是什麽新鮮事情了,除非你進大公司,接觸這些業界先進的東西還有發展,不然做多兩年,等技術普遍,對自己的學習發展又是一件很痛苦的事情,技術還是要往高端走

努力成為技術geek
學習Oracle,盡量使用SQLPLUS命令,不要借助一些工具(OEM、TOAD、PL/SQL Develop等),這些工具雖然功能強大,但是封裝了很多東西,讓你不能知道底層運作機制和相應原理。而且,當你空手白刃不借助任何工具在數據庫服務器上運指如飛的熟練鍵入各種命令,將問題一一解決,看到身後圍著無數“屌絲”帶著充滿羨慕嫉妒恨的語氣對你發出感嘆詞:“牛啊……厲害……碉堡了”,這些詞匯的時候,內心的滿足感喲,HOHO~

什麽是數據庫
數據庫,顧名思義,是存入數據的倉庫。只不過這個倉庫是在計算機存儲設備上的,而且數據是按一定格式存放的。
當人們收集了大量的數據後,應該把它們保存起來進入近一步的處理,進一步的抽取有用的信息。當年人們把數據存放在文件櫃中,可現在隨著社會的發展,數據量急劇增長,現在人們就借助計算機和數據庫技術科學的保存大量的數據,以便能更好的利用這些數據資源。
要是下定義的話,就應該是:指長期儲存在計算機內的、有組織的、可共享的數據集合。

數據庫的類別
數據庫包含關系數據庫、面向對象數據庫及新興的XML數據庫等多種,目前應用最廣泛的是關系數據庫,若在關系數據庫基礎上提供部分面向對象數據庫功能,則稱為對象關系數據庫。

數據庫的種類
關系數據庫,是建立在關系數據庫模型基礎上的數據庫,借助於集合代數等概念和方法來處理數據庫中的數據。目前主流的關系數據庫有Oracle、DB2、SQL Server、MySQL等。

面向對象是一種認識方法學,也是一種新的程序設計方法學。把面向對象的方法和數據庫技術結合起來可以使數據庫系統的分析、設計最大程度地與人們對客觀世界的認識相一致。面向對象數據庫系統是為了滿足新的數據庫應用需要而產生的新一代數據庫系統。

XML數據庫是一種支持對XML格式文檔進行存儲和查詢等操作的數據管理系統。在系統中,開發人員可以對數據庫中的XML文檔進行查詢、導出和指定格式的序列化。

技術分享圖片

金融業數據庫
特點:支持海量數據管理、I/O讀寫頻繁、在線並發量大、人為故障可恢復、可在線維護、有操作審計
願景:高可用性、高可靠性、高穩定性、高可擴展性、高安全性、負載均衡、容災備份
要求:能正確訪問數據庫中數據、實時處理、權限控制、日誌文件、審計

數據倉庫與數據挖掘
數據倉庫是決策支持系統和聯機分析應用數據源的結構化數據環境。數據倉庫研究和解決從數據庫中獲取信息的問題。數據倉庫的特征在於面向主題、集成性、穩定性和時變性。
數據挖掘就是從存放在數據庫,數據倉庫或其他信息庫中的大量的數據中獲取有效的、新穎的、潛在有用的、最終可理解的模式的非平凡過程。
用數據倉庫(Data Warehouse)技術管理銀行數據庫中的大量寶貴數據
用數據挖掘(Data Mining)技術尋找有價值的信息,以便進行更好的市場決策

OLTP與OLAP
當今的數據處理大致可以分成兩大類:聯機事務處理OLTP(On-Line Transaction Processing)、聯機分析處理OLAP(On-Line Analytical Processing)。
OLTP是傳統的關系型數據庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。
OLAP是數據倉庫系統的主要應用,支持復雜的分析操作,側重決策支持,並且提供直觀易懂的查詢結果

技術分享圖片

NAS與SAN的區別
存儲區域網絡(SAN)和網絡附加存儲(NAS)是相互競爭的兩種網絡存儲技術,實際上,它們可以很好地相輔相成,用於存取不同類型的數據。NAS設計用來在文件這個層次上存取數據,而SAN最適合用於高容量數據塊的傳輸。
SAN結構中,文件管理系統(FS)還是分別在每一個應用服務器上;而NAS則是每個應用服務器通過網絡共享協議(如:NFS)使用同一個文件管理系統。換句話說:NAS和SAN存儲系統的區別是NAS有自己的文件系統管理。

Oracle的優勢
開放性強
保證系統的高性能
系統靈活,易擴展
維護簡便
增強系統的可靠性
系統的高可用性
增強的系統安全
用戶投資的有效保護

Oracle的安全
數據庫監控:Enterprise Manager Grid Control、Enterprise Manager Cloud Control
高可用集群:Real Application Cluster
容災系統:Data Guard、Golden Gate
RMAN備份、自動歸檔、先寫日誌後操作、閃回機制

功夫在戲外
第一層意思:臺上一分鐘、臺下十年功
第二層意思:開闊自己眼界、解決自己能解決與未解決之問題
第三層意思:技術手段不是解決問題的關鍵,技術僅僅是工具,解決問題依靠的是思路與方法
第四層意思:對業務的深入理解,決定你能走多遠
為功能做計劃,為效率作計劃,為可恢復性作計劃,為安全性作計劃,為可用性作計劃。總之,為最後的成功作計劃。

目前學習Oracle的兩派人
第一種人,僅是使用Oracle的人
第二種人,真正的Oracle DBA

Oracle的重要性
Oracle非常重要,學習Oracle一定要有一個“謙虛謹慎、戒驕戒躁”的態度

學習前提
學習Oracle的前提是:熟悉Linux操作系統、Unix操作系統、存儲、帶庫。主要是管理和操作系統原理

學習方法

1、SQL、PL/SQL
作為Oracle的基本功,需要大家對SQL和PL/SQL非常的熟悉。特別是SQL裏面的多表連接、子查詢、各種新版本的函數,以及PL/SQL裏面的所有語法。建議大家拿出足夠的時間來研究這兩塊。不要認為這是開發人員的工作,它也是DBA的重要工作,而且對DBA的要求更高,你不但要能夠看懂,還要能夠找出問題。學習這方面知識的要點就是:多練、多思考、多測試。

2、Oracle管理(體系結構)
這是Oracle的難點,Oracle技術博大精深,主要的難點就集中在這裏面。包括Oracle的存儲管理、對象管理、內存和進程、UNDO管理、初始化參數、數據字典視圖、安全、Latch和Lock、權限和角色、資源調度、閃回、日誌原理等。

學習這一塊知識的時候,一個重點是:要知道原理和本質,知道表面的東西沒有任何意義。
知道原理以後,通過實驗去證明,將原理總結出來。
這一塊學習的好還是不好,直接決定了以後的一個備份恢復、優化、排錯。
這一塊雖然是研究管理,但是更加註重原理和體系結構的分析和解剖。
應該叫做“深入剖析Oracle體系結構”,多深都需要。
在這一部分的學習中,已經學習了很多優化的內容,在學習任何一個知識點的時候,我們都離不開對性能的分析。

3、備份恢復
有了第二部分的鋪墊,這一章的學習相對有意思,前提是我們對Oracle的日誌原理研究得較深,對Oracle的內存和進程研究得較深。策劃一個完美和正確的備份計劃和實施方案(具體要分析出原理),實施備份;對各種損壞進行恢復(還是要能分析出原理);另外可以做一些高難度的恢復實驗(還是老話、要能夠分析出原理)

4、優化(單實例優化)
這一塊完全是第一部分和第二部分的一個結合。這一塊的學習沒有最深,只有更深,學習方法和第二部分類似。
首先需要大家掌握一些Oracle優化方面的基礎知識,例如深入分析索引原理、分區、等待事件、時間統計模型、動態性能視圖、操作系統的一些性能優化和查看命令,例如:top、iostat、vmstat、sar、pmap、prstat、filemon、nmon、svmon等。
最關鍵的還是要做三件事情:Oracle的動態性能視圖、Oracle的報告(trace、statspack、awr、addm、ash)、執行計劃;對這三塊要熟悉和分析出來。這個部分的分析和動手實驗很重要。

5、RAC
現在RAC的使用越來越多,學習RAC的重點還是:基礎原理 + RAC優化。
RAC系統的優化分為兩個步驟:RAC系統優化和單實例優化;根據RAC的基礎原理,能夠設計高性能的RAC系統,能夠分析RAC性能問題。對RAC的動態性能視圖、等待事件、報告,能夠看懂和分析。

6、Cloud Control、Data Control、Stream、Golden Gate等
對於這些工具和組件,我們熟悉其體系結構,原理,一些監控性能的工具等。
學習這些部分的幾個點:熟悉體系結構、原理、搭建、監控(包括故障和性能)、排錯和優化。

7、SQL優化
為什麽單獨拿出來呢?因為這部分需要持之以恒的進行研究和實驗,而且工作中幾乎是每天都要做的事情。
目前這方面,有一些比較經典的書,值得大家去看看。

8、PL/SQL深度學習
在這部分學習的時候,就要時時刻刻註意性能,主要是註意測試。

9、綜合性項目實戰
模擬環境:規劃、搭建、測試、排錯、優化、分析
實戰環境:規劃、搭建、測試、排錯、優化、分析

訂閱《Oracle的十八般武藝》,跟著熊熊學Oracle
現在訂閱享受優惠價39元(原價51元)
2019.1.16日下午2:00截止哦~

Oracle的十八般武藝