kxbin
          成功留給有準備的人
          posts - 10,  comments - 35,  trackbacks - 0

          體系架構概念
          ·系統的體系架構指系統有哪些組成部分,以及這些組成部分之間的關系。
          ·Oracle的體系架構,是指Oracle數據庫管理系統的組成部分和這些組成部分之間的相互關系,如進程(程序,如word,excel都算是一個進程)、內存、數據庫的物理與邏輯結構等。

          Oracle引入體系架構原因
          ·為了高效地使用計算機最寶貴的資源:內存,同時保證不會丟失數據庫中的任何數據。所以Oracle引入了一個非常復雜的體系結構。

          問題:為什么計算機中內存是最寶貴的?
          ·訪問內存中的數據是電子速度,硬盤是機械速度,電子速度遠遠大于機械速度。在內存中計算的速度是最快的。如計算得到一個結果,先放到硬盤中,要的時候再從硬盤中讀取;第二種:先將結果放到內存中,要的時候再從內存中讀取,后者的速度要快很多。而用戶都需要速度快(如游戲加載的時間都希望越短越好)。
          ·內存是有限的,同時內存也比硬盤昂貴

          系統架構基礎
          ·基礎:程序運行以后 = 進程(process) + 內存 + 讀取的文件 (如WORD)
          ·擴展:Oracle運行以后,要用程序要管理數據庫文件,所以它的結構變為
          ·Oracle = (程序部分)+(數據部分)
          ·程序部分 = 進程(instance,實例)+內存(SGA+PGA)


          Oracle體系架構分為實例和數據庫,而實例分為內存和進程。

          下面先來看看內存,‍理解內存組成和作用。
          SGA:system global area(系統全局區,全局就是都能訪問,如全局變量),指所有程序都能共享的內存區。
          共享SQL編譯結果:大家知道,運行SQL真正運行前要先編譯、分析而且消耗的時間很長,所以編譯分析的結果保留在服務器的內存中;一個用戶登錄可能執行:select * from 用戶表 where 帳號=? and 密碼=?;另一個用戶登錄時執行SQL就不會再編譯分析了,直接取前一個用戶的編譯分析結果。這叫共享。
          共享數據字典:還有查詢時需要表結構(如 select * from stu,*在查詢時要取出stu表真正的字段。如果一個用戶最先查詢時,則必須取;另一個用戶再查詢時就不需要再取了。一個表的有哪些字段,這是數據字典中的一個部分。)
          PGA:program global area(程序全局區)。程序一登錄時和數據庫要連接,數據庫就為這個程序單獨分區一塊小的專用內存。程序一與數據庫斷開,則內存釋放。
          作用:SGA和PGA都是內存,通常由DBA用來設計大小,從而調整數據庫的速度(性能)。一般程序員用不著。

          PGA和SGA區別
          ·SGA相當于公司(數據庫)的大廳;PGA相當于會客室。
          ·SGA是在數據庫啟動時自動分配。PGA是在客戶端程序與數據庫連接自動分配。
          ·SGA通常較大,PGA較小。

          SGA組成 = 日志~ + 數據~ + 共享池 + 大池
          日志緩沖區
          ·重做日志(增刪改):每次修改數據(增刪改)時,除了要在表中寫入數據外,還要在日志文件中記錄相關信息。Oracle將日志先寫到內存,積累到一定數量,再一次性寫入到磁盤,從而提高了效率。(為什么會提高效率?因為寫入內存的速度>磁盤的速度)。所以加大日志緩沖區的設置,可以提高增刪改的速度。
          ·數據緩沖區(查):第一個用戶查詢商品信息,數據必須從磁盤上讀取;Oracle可以將查詢的數據保存內存中,其它用戶查詢商品則直接從內存中讀取,從而提高查詢效率。這個內存區叫~。從數據緩沖區中讀取數據,又叫緩存命中率(cache hit)。所以加大數據緩沖區,可以提高查詢速度(因為減少磁盤讀取而加快)。
          ·共享池(語句):主要的作用是保存了SQL的編譯結果,從而執行相同的SQL語句不需要再次編譯,節約了CPU資源。所以加大共享緩沖區,可以提高查詢速度(因為減少SQL的分析時間而加快)。
          ·大池:主要為大的內存操作提供相對獨立的操作空間,如數據庫的備份和恢復。所以加大大池區,可以提高備份和恢復速度。

          PGA = 排序區 + 會話信息 + 游標狀態 + 堆棧空間 (了解)
          ·排序區:某個程序發出了order by語句,將臨時排好順序的數據放在此區。就象是要將公司員工的工資進行排序,就要在草稿上先將數據排好。草稿 = 排序區。設置大一些,有利于加快order by語句的執行。
          ·會話信息:包括了如權限、角色等信息。
          ·游標狀態:所執行的SQL語句相關的信息。
          ·堆棧空間:保存SQL中的變量信息。

           

          再來了解一下Oracle有哪些進程。

          PMON 進程監控進程: process  清潔工
          ·清理出現故障的進程。 
          ·釋放所有當前掛起的鎖定。
          ·釋放故障進程使用的資源。
          SMON 系統監控進程 system moniter
          ·在Oracle因斷電而重啟時,進行數據庫進行必要的修復。
          DBWR 數據寫入進程 : database writer
          ·管理數據緩沖區,將最近使用過的塊保留在內存中。
          ·將修改后的緩沖區數據寫入數據文件中。
          LGWR 日志寫入進程 :log writer  (記錄員)
          ·負責將日志緩沖區中的日志數據寫入日志文件。 
          ·系統有多個日志文件,該進程以循環的方式將數據寫入文件。
          ARCH  歸檔進程 
          ·將記錄員記錄的東西放到檔案室
          CKPT 檢查點進程
          · 與Oracle事務相關

          體會:Oracle是一個龐大的系統(如跨國公司),分工很明確。
          問題:分工的好處是什么?  (提高效率)。


           

           


          數據庫的概念:本義是指數據所在倉庫(數據的集合)。
          數據庫管理的信息,分為:
          ·系統數據:如配置文件,如指定SGA的大小
          ·用戶數據:業務系統數據

           


          物理結構:就是從操作系統的角度,有哪些文件。因為文件,又叫物理文件。刪除一個文件,又叫物理刪除。

          如:
          CONTROL01.CTL ctl = control,控制文件(數據庫實體的結構,如表結構)
          CONTROL02.CTL
          CONTROL03.CTL

          CWMLITE01.DBF dbf = database file = 真正存儲數據的文件(如員工具體信息)
          DRSYS01.DBF
          EXAMPLE01.DBF
          INDX01.DBF    以index打頭的dbf專門保存索引
          ODM01.DBF
          ODM02.DBF


          REDO01.LOG 專門保存日志文件
          REDO02.LOG
          REDO03.LOG


          SYSTEM01.DBF
          TEMP01.DBF
          TOOLS01.DBF
          UNDOTBS01.DBF
          USERS01.DBF
          XDB01.DBF

          XXX.ORA oracle = 初始化參數文件
          XXX2.ORA

           


          邏輯結構:指Oracle數據庫文件的內部組成。

          計算機管理基礎
          ·計算機管理最小的單位是bit,相當一個帶電開關(閉1斷0),這就是二進制。
          ·計算機要通過數據類型來區別不同的數據,所以通過字節Byte來管理,一個字節有32位(32位計算機,或64位,對應64位計算機。計算機數位越多,管理的內存越大。如2的32次方,小于64次方。如電話號碼用完了,要升位)。不同的數據類型分配不同的字節。如整數通過4個Byte,小數8個Byte。字符串由字符組成,字符本質是數字,如A就是65(整數)。

          Oracle管理 塊→區→段→表空間
          ·塊,Block:最小的磁盤存儲單位,通常是2K或2K的整數位。即使保存1,至少也用2K。
          ·區,extend:最小的磁盤分區單位,通常為8K。表示Oracle一次性最小給你分配8K。
          ·段,segment:不同類型的數據,保存在不同的段。如數據段,索引段。
          ·表空間,table space:不同的業務系統需要一個單獨的存儲空間,這個空間在SQLServer叫做“databse”(通過create databse獲取),而在Oracle中叫表空間。至少要有5個表空間(system,user,index,tool,temp),用戶表空間數量不限。也就是說,開發一個新的業務系統,通常就要在Oracle中新建一個表空間。
          ·模式,Schema:包含一個用戶所有對象的的邏輯結構,模式名稱就是控制該模式的用戶名稱。
          ·關系:一個數據文件只能歸到某一個表空間上,每個表空間可以含一個或多個數據文件。

          區別:
          ·物理結構:人有男人,女人組成
          ·邏輯結構:人由細胞組成。

          塊區段表空間比喻
          ·塊:抽屜,放東西最少要占有一個抽屜;區:桌子,最少要買一個桌子;段:這幾個桌子的抽屜放衣服,另外幾個桌子的抽屜放褲子。
          ·表空間:就是用戶的房間。張三所有桌子,衣服,在張三相對獨立的房間中。


          實例與數據庫關系
          ·一個保安只在守一個數據庫(單實例數據庫)
          ·一個數據庫可能雇傭多個保安(多實例數據庫

          三種進程
          ·用戶進程=顧客,服務進程=跑堂,后臺進程=(廚師,會計,出納……)

           

           

           

          相關概念:

          理解“聯機”的含義
          ·全稱:聯機重做日志緩沖區 。
          ·聯機就是Online,聯機日志,就是數據庫運行以后時刻使用的日志,叫聯機日志(肯定不能刪除,受數據庫保護);聯機反過來就是脫機,如以前的日志備份。

          理解日志的作用和“重做日志”的含義
          ·日志的作用是用于恢復數據。
          ·簡單理解就是今天買了一本JAVA書,寫日記“書名:JAVA……”。后來書丟掉了,于是看日記,購買了一本相同的書,這樣就恢復了數據。本質上理解就是執行一條Insert,日志文件也有一件Insert。1號有10條數據,2號insert5條,2號晚上數據丟掉了。恢復數據步驟如下:首先要恢復數據到1號的數據有10條(通常DBA要備份原始數據),再執行日志,于是就有了15條。這就表示“重新做了一次”,所以恢復數據的動作叫“重做日志”。

          理解數據緩沖區
          ·圖書館看報紙:第一個人從報架取下來,在閱讀室看,然后不拿回報架;其它同學可以直接在閱讀室看報紙。閱讀室 = 數據緩沖區,報架 = 磁盤。

          理解共享池
          ·看英文小說:第一個同學看英文小說,翻譯為中文(時間比較長);其它同學直接看中文小說。

          進程和線程
          ·進程:就是一個程序。如:單線程的孫只能一次打一個妖怪,打完一個再打另一個。如:dos中dir/s,停止以前不能做其它的事情。
          ·線程:就是程序運行以后,在內存中的一個COPY,兩者在功能上是完全一樣的。多線程的孫能變出很多個孫,每個孫單獨一個妖怪。 但實際上電腦往往只有一個CPU,做不到真正的多線程。那就要求孫一個妖怪打一會兒,但是打得很快,好像就在同時和很多人打(如以前單核CPU電腦也能同時聽歌和上網,只是切換得很從,體會不出來)
          ·打開一個WORD程序,同時讀取兩個WORD文檔,WORD就要單獨啟動兩份(要求兩份獨立的內存)
          打開一個QQ程序,同時和兩個好友聊天,QQ只要啟動一份份(只要求一份獨立的內存,好處在于可以共享內存中的相同的數據)

           ‍

          posted on 2012-09-05 16:12 kxbin 閱讀(667) 評論(0)  編輯  收藏 所屬分類: ORACLE轉發
          你恨一個人是因為你愛他;你喜歡一個人,是因為他身上有你沒有的;你討厭一個人是因為他身上有你有的東西;你經常在別人面前批評某人,其實潛意識中是想接近他。

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(5)

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          J2EE

          java技術網站

          Linux

          平時常去的網站

          數據庫

          電影網站

          網站設計

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 抚顺县| 黄平县| 雅江县| 永修县| 巴彦县| 藁城市| 惠来县| 馆陶县| 吉水县| 宜良县| 甘德县| 方正县| 翁牛特旗| 云南省| 宜兴市| 五大连池市| 石棉县| 上犹县| 永丰县| 台北市| 阿克陶县| 镇远县| 大渡口区| 东方市| 汝阳县| 竹北市| 砀山县| 顺义区| 滕州市| 广宗县| 孝昌县| 榆社县| 夏津县| 屏东市| 宁国市| 新泰市| 三明市| 泰兴市| 涡阳县| 慈溪市| 徐水县|