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/InstanceName:PortNo即可實現訪問,預設例項
為ServerName:PortNo。
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
系統全域性區SGA,SGA = 資料緩衝區+ 重做日誌緩衝區+ 共享池+ 大池+ Java 池+ 流池
系統全域性區是動態的,由引數SGA_MAX_SIZE決定。
檢視當前系統的SGA大小:show parameter sga_max_size;
要修改:alter system set sga_max_size=1200m scope=spfile;
因為例項記憶體的分配是在資料庫啟動時進行的,所以要讓修改生效,要重啟資料庫。
ORACLE 10G 引入了ASMM(自動共享記憶體管理),DBA只需設定SGA_TARGET,ORACLE就會
自動的對共享池、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_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_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.引數檔案(pfile和spfile)
initSID.ora或init.ora檔案,通常位於:$ORACLE_BASE/admin/
初始化檔案記載了許多資料庫的啟動引數,如記憶體,控制檔案,程式數等,在資料庫啟動的時候載入(Nomount時載入)
6.其他檔案
密碼檔案:用於Oracle 的具有sysdba許可權使用者的認證.
告警日誌檔案:報警日誌檔案(alert.log或alrt.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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle資料庫與oracle例項Oracle資料庫
- oracle 資料庫例項Oracle資料庫
- Oracle例項和Oracle資料庫(Oracle體系結構)Oracle資料庫
- oracle例項和資料庫的區別Oracle資料庫
- oracle資料庫例項狀態Oracle資料庫
- oracle資料庫名和例項名的區別Oracle資料庫
- oracle資料庫建立資料庫例項-九五小龐Oracle資料庫
- oracle 11g 修改資料庫名字和例項名字Oracle資料庫
- Oracle Restart啟動資料庫例項故障一例OracleREST資料庫
- oracle例項、資料庫及相關資料庫狀態的理解和測試Oracle資料庫
- 資料庫和例項資料庫
- Oracle資料庫AWR的使用例項詳解Oracle資料庫
- Oracle資料庫例項啟動步驟分析Oracle資料庫
- ORACLE 單例項完全解除安裝資料庫Oracle單例資料庫
- 修改oracle例項名(sid)和資料庫名(db_name)Oracle資料庫
- Oracle 11G資料庫單例項安裝Oracle資料庫單例
- Oracle 資料庫例項啟動關閉過程Oracle資料庫
- Window下安裝Oracle ASM單例項資料庫OracleASM單例資料庫
- Oracle 資料庫引數改善例項 - PDM8Oracle資料庫
- Oracle 例項和RAC叢集下資料庫日誌目錄合集Oracle資料庫
- Oracle Restart啟動資料庫例項故障一例( Oracle ASM儲存Spfile解析)OracleREST資料庫ASM
- 2 Day DBA-管理Oracle例項-Oracle例項和例項管理概覽Oracle
- oracle 11g 單例項資料庫的安裝Oracle單例資料庫
- ORACLE 11gR2 單例項資料庫自啟Oracle單例資料庫
- Oracle - 資料庫名、例項名、服務名、ORACLE_SID 的說明和區別Oracle資料庫
- 建立ASM例項和資料庫ASM資料庫
- Oracle資料檔案收縮例項Oracle
- MySQL和Oracle的後設資料抽取例項分析KRGXMySqlOracle
- Oracle中關於資料庫例項名與資料庫服務名(轉載)Oracle資料庫
- Oracle 12C 單例項資料庫靜默安裝Oracle單例資料庫
- 【02】Oracle資料庫的例項啟動關閉詳解Oracle資料庫
- 通過SQL*Plus遠端啟動Oracle資料庫例項SQLOracle資料庫
- WMB 使用Compute節點連線Oracle資料庫例項Oracle資料庫
- 【資料庫資料恢復】ASM例項不能掛載的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 4 管理資料庫例項和叢集資料庫資料庫
- 2 Day DBA-管理Oracle例項-關閉和啟動Oracle例項-使用OEMDC關閉和啟動Oracle例項Oracle
- 資料從Oracle向Mysql資料遷移例項OracleMySql
- Oracle12c中配置例項引數和修改容器資料庫(CDB)及可插拔資料庫(PDB)Oracle資料庫