Oracle實例和Oracle數據庫(Oracle體系結構)

--==========================================

--Oracle實例和Oracle數據庫(Oracle體系結構)

--==========================================

/*

    對於初接觸Oracle 數據庫的人來講,很容易混淆的兩個概念即是Oracle 實例和Oracle 數據庫。這兩

概念不同於SQL sever下的實例與數據庫,當然也有些相似之處。只是在SQL server我們根本不需要花費太

多的精力去搞清SQL實例和數據庫,因爲它簡單易於理解。下面簡要說明一下SQL實例、數據庫,更多的是講

Oracle下的實例及數據庫。

 

一、SQL server中的實例與數據庫

       1.SQL中的實例指的是一個SQL server服務器上僅有一個缺省實例。缺省實例名即爲機器名ServerName

         (IP),如果在同一臺機器上再安裝SQL server,我們可以對實例命名如ServerName/InstanceName

         即一臺SQL server服務器上可以存在多個不同的實例。一個實例下可以存在多個不同的數據庫。

         對於不同實例下的數據庫的訪問,使用ServerName/InstanceNamePortNo即可實現訪問,缺省實例

         ServerNamePortNo

       2.對不同的實例配置IP地址,相關的訪問協議,端口等等。

       3.實例的可訪問性需要啓動該實例對應的相關服務。此處需要注意的是實例名和實例的服務名並不是相

         同的。缺省的實例的服務名爲MSSQLSERVER,而命名實例的服務名爲MSSQL$INSTANCE_NAME

       4.實例的相關功能性的設置可以通過外圍應用配置來實現。

       5.上述完成後,即可實現對數據庫的訪問。

二、Oracle 實例

        一個Oracle Server由一個Oracle實例和一個Oracle數據庫組成。

           即:Oracle Server = Oracle Instance + Oracle Database

       Oracle實例

           包括了內存結構(SGA)和一系列後臺進程(Background Process),兩者合起來稱爲一個Oracle實例

           即:Oracle Instance = SGA + Background Process

       Oracle內存結構

           包含系統全局區(SGA)和程序全局區(PGA)

           Oracle Memory Structures = SGA + PGA

           SGA由服務器和後臺進程共享

           PGA包含單個服務器進程或單個後臺進程的數據和控制信息,與幾個進程共享的SGA 正相反,PGA

              只被一個進程使用的區域,PGA 在創建進程時分配在終止進程時回收。即由服務器進程產生。

      

    1.SGA

       系統全局區SGASGA = 數據緩衝區+ 重做日誌緩衝區+ 共享池+ 大池+ Java + 流池

           系統全局區是動態的,由參數SGA_MAX_SIZE決定。

           查看當前系統的SGA大小:show parameter sga_max_size;

           要修改:alter system set sga_max_size=1200m scope=spfile;

           因爲實例內存的分配是在數據庫啓動時進行的,所以要讓修改生效,要重啓數據庫。

          

           ORACLE 10G 引入了ASMM(自動共享內存管理),DBA只需設置SGA_TARGETORACLE就會

           自動的對共享池、JAVA池、大池、數據緩衝區、流池進行自動調配。取消自動調配就是

           sga_target設爲。

          

       數據緩衝區(Database buffer cache):存儲從數據文件中獲得的數據塊的鏡像

           大小由db_cache_size 決定

           查看:show parameter db_cache_size;

           設置:alter system set db_cache_size=800M;

          

       重做日誌緩衝區(Redo log buffer):對數據庫的任何修改都按順序被記錄在該緩衝,然後由LGWR進程將

           它寫入磁盤,大小由LOG_BUFFER決定

      

       共享池(Shared pool):SGA中最關鍵的內存片段,共享池主要由庫緩存(共享SQL區和PL/SQL)和數據

           字典緩存組成,它的作用是存放頻繁使用的sql,在有限的容量下,數據庫系統根據一定的算法決

           定何時釋放共享池中的sql

           庫緩存大小由shared_pool_size 決定

              查看:show parameter shared_pool_size

              修改:alter system set shared_pool_size=120m;

          

           數據字典緩存:

              存儲數據庫中數據文件、表、索引、列、用戶和其它數據對象的定義和權限信息

              大小由shared_pool_size 決定,不能單獨指定

          

       大池(Large pool):是一個可選的區域,用於一些大型的進程如Oracle的備份恢復操作、IO服務器進程等

      

       Java 池:該程序緩衝區就是爲Java 程序保留的。如果不用Java程序沒有必要改變該緩衝區的默認大小

      

       流池(Stream pool):被Oracle流所使用

                    

    2.PGA

       是爲每個用戶進程連接ORACLE數據庫保留的內存

       進程創建時分配,進程結束時釋放,只能被一個進程使用

       PGA包括了以下幾個結構:

       ()排序區

       ()遊標狀態區

       ()會話信息區

       ()堆棧區

       由參數:pga_aggregate_target 決定

      

    3.幾類進程:用戶進程,服務器進程,後臺進程,其它可選進程

       用戶進程

           在用戶連接數據庫產生,請求oracle服務器連接,必須要先建立一個連接,不會直接和oracle服務器連接

       服務器進程

           當連接實例並建立用戶會話時產生,獨立服務器或者提供共享服務器都能產生

       後臺進程

           維持物理和內存之間的聯繫,用來管理數據庫的讀寫,恢復和監視等工作。

           Server Process主要是通過他和user process進行聯繫和溝通,並由他和user process進行數據的交換。

           Unix機器上,Oracle後臺進程相對於操作系統進程,也就是說,一個Oracle後臺進程將啓動一個操作

           系統進程。

           Windows機器上,Oracle後臺進程相對於操作系統線程,打開任務管理器,我們只能看到一個

           ORACLE.EXE的進程,但是通過另外的工具,就可以看到包含在這裏進程中的線程。

 

        必須要有的後臺進程

       DBWn       -->數據庫寫進程

       PMON       -->程序監控進程

       SMON       -->系統監控進程

       LGWr       -->日誌寫進程

       CKPT       -->檢查點進程

 

       可選進程:

       ARCN       歸檔進程

       RECO

       Snnn

       pnnn

 

       DBWn(數據庫寫進程)

           負責將修改過的數據塊從數據庫緩衝區高速緩存寫入磁盤上的數據文件中

       寫入條件:

       發生檢查點

       髒緩存達到限制

       沒有自由的緩存

       超時發生

       表空間離線

       表空間只讀

       表被刪除或者截斷

       開始備份表空間

           可以修改數據寫進程的數量

           alter system set db_writer_processes=3 scope=spfile;

          

      

       PMON(程序監控進程)

           清除失效的用戶進程,釋放用戶進程所用的資源。

           PMON將回滾未提交的工作,釋放鎖,釋放分配給失敗進程的SGA資源。

       清除失敗的進程

       回滾事務

       釋放鎖

       釋放其他資源

      

       SMON(系統監控進程)

           檢查數據庫的一致性,當啓動失敗時完成災難恢復等

       實列恢復時,前滾所有重做日誌中的文件,打開數據庫爲了用戶能訪問,回滾未提交的事務,釋放臨時表空間

       清除臨時空間,聚結空閒空間,從不可用的文件中恢復事務的活動,OPS中失敗節點的實例恢復

       清除OBJ$

       縮減回滾段

       使回滾段脫機

      

       LGWr(日誌寫進程)

           將重做日誌緩衝區中的更改寫入在線重做日誌文件

       條件:

       提交的時候(commit)

       達到/滿

       每隔秒

       有大於M 重做日誌緩衝區未被寫入磁盤

       DBWR需要寫入的數據的SCN號大於LGWR 記錄的SCN號,DBWR 觸發LGWR寫入

       超時

       dbwr進程些之前寫日誌

      

       CKPT(檢查點進程)

           DBWR/LGWR的工作原理,造成了數據文件,日誌文件,控制文件的不一致,CKPT進程負責同步數據文件,

              日誌文件和控制文件

           CKPT會更新數據文件/控制文件的頭信息

       條件:

       在日誌切換的時候

       數據庫用immediate transaction normal選項shutdown數據庫的時候

       根據初始話文件LOG_CHECKPOINT_INTERVALLOG_CHECKPOINT_TIMEOUTFAST_START_IO_TARGET 的設置的數值來確定

       用戶觸發

      

       ARCN(歸檔進程)

           在每次日誌切換時把已滿的日誌組進行備份或歸檔

       條件:

       數據庫以歸檔方式運行的時候

 

       RECO

           負責解決分佈事物中的故障。Oracle可以連接遠程的多個數據庫,當由於網絡問題,有些事物處於懸而未決的狀態。

           RECO進程試圖建立與遠程服務器的通信,當故障消除後,RECO進程自動解決所有懸而未決的會話。

      

       Server Process(服務進程)

           分爲專用服務進程(Dedicated Server Process)和共享服務進程(MultiTreaded Server Process)

           專用服務進程:一個服務進程對應多個用戶進程,輪流爲用戶進程服務。

      

       用戶進程(User Process)、服務進程(Server Process)、後臺進程(Background Processes)的啓動

           用戶進程: 數據庫用戶請求Oralce server會話時被啓動

           服務進程:當用戶會話啓動後,連接到Oracle實例時該進程被啓動

           後臺進程:當Oracle實例被啓動時,啓動相關的後臺進程

          

三、Oracle 數據庫

       一系列物理文件的集合

            包括控制文件、數據文件、聯機日誌文件、參數文件、密碼文件等  

            即:Oracle Database = Controlfile + datafile + logfiel + spfile +..

    1.控制文件(controlfile)

        數據庫的名字,檢查點信息,數據庫創建的時間戳

       所有的數據文件,聯機日誌文件,歸檔日誌文件信息

       備份信息等

             

    2.數據文件(datafile)

        包含了用戶和應用程序的所有數據

       --查看數據文件信息

      

      

    3.聯機日誌文件

        記錄了用戶對數據庫的所有操作,一個數據庫中至少要有兩個日誌組文件,每個日誌組中至少有一個日誌成員

       日誌組中的多個日誌成員是互爲鏡相關係

      

    4.歸檔日誌文件

        Oracle可以運行在兩種模式之中,歸檔模式和非歸檔模式。在歸檔模式中,爲了保存用戶的所有修改,

       在聯機日誌文件切換後和被覆蓋之間系統將他們另外保存成一組連續的文件系列,該文件系列就是歸檔日誌文件。

        用戶恢復意外情況出現的數據丟失、異常等。

      

    5.參數文件(pfilespfile)

        initSID.orainit.ora文件,通常位於:$ORACLE_BASE/admin/<SID>/pfile

        初始化文件記載了許多數據庫的啓動參數,如內存,控制文件,進程數等,在數據庫啓動的時候加載(Nomount時加載)

   

    6.其他文件

       密碼文件:用於Oracle 的具有sysdba權限用戶的認證.

       告警日誌文件:報警日誌文件(alert.logalrt.ora),記錄數據庫啓動,關閉和一些重要的出錯信息

           查看路徑:select value from v$PARAMETER where name =‘background_dump_dest’;

   

    7.數據庫邏輯組織結構

       表空間、段、區、塊

       一個數據庫由一個或多個表空間組成,一個表空間只能屬於一個數據庫

       一個表空間由一個或多個多個數據文件組成,一個數據文件只能屬於一個表空間

       一個數據文件由一個或多個操作系統塊組成,每一個操作系統塊只能數以一個數據文件

       一個表空間可以包含一個或多個段,一個段只能屬於一個表空間

       一個段由一個或多個區組成,每一個區只能屬於一個段

       一個區由一個或多個Oracle 塊組成,每一個Oracle塊只能屬於一個區

       一個區只能屬於一個數據文件,數據文件的空間可以分配到一個或多個區

       一個Oracle 塊由一個或多個操作系統塊組成,一個操作系統塊是一個Oracle塊的一部分

      

      

四、Oracle實例和Oracle數據庫的關係

    1.一個實例能夠裝載及打開僅僅一個數據庫      

    2.一個數據庫能夠被多個實例裝載並打開

    3.實例與數據庫的對應關係是一對一或多對一的關係

   

五、更多   */

 

    SQL/PLSQL 基礎

   

    Oralce 10g 使用DBCA創建數據庫

   

    使用Uniread實現SQLplus翻頁功能

   

    Linux (RHEL 5.4)下安裝Oracle 10g R2

   

    VmWare6.5.2下安裝RHEL 5.4(配置Oracle安裝環境)

   

    Oracle相關

發佈了43 篇原創文章 · 獲贊 7 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章