Oracle例項和Oracle資料庫

beatony發表於2011-07-24

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       --&gt資料庫寫程式

       PMON       --&gt程式監控程式

       SMON       --&gt系統監控程式

       LGWr       --&gt日誌寫程式

       CKPT       --&gt檢查點程式

 

       可選程式:

       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//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.例項與資料庫的對應關係是一對一或多對一的關係

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22578826/viewspace-702990/,如需轉載,請註明出處,否則將追究法律責任。

相關文章