日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Oracle实例和Oracle数据库(Oracle体系结构)

發(fā)布時間:2023/11/29 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle实例和Oracle数据库(Oracle体系结构) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

--Oracle實例和Oracle數(shù)據(jù)庫(Oracle體系結(jié)構(gòu))

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

/*

??? 對于初接觸Oracle 數(shù)據(jù)庫的人來講,很容易混淆的兩個概念即是Oracle 實例和Oracle 數(shù)據(jù)庫。這兩

概念不同于SQL sever下的實例與數(shù)據(jù)庫,當(dāng)然也有些相似之處。只是在SQL server我們根本不需要花費太

多的精力去搞清SQL實例和數(shù)據(jù)庫,因為它簡單易于理解。下面簡要說明一下SQL實例、數(shù)據(jù)庫,更多的是講

Oracle下的實例及數(shù)據(jù)庫。

?

一、SQL server中的實例與數(shù)據(jù)庫

?????? 1.SQL中的實例指的是一個SQL server服務(wù)器上僅有一個缺省實例。缺省實例名即為機器名ServerName

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

?????? ? 即一臺SQL server服務(wù)器上可以存在多個不同的實例。一個實例下可以存在多個不同的數(shù)據(jù)庫。

?????? ? 對于不同實例下的數(shù)據(jù)庫的訪問,使用ServerName/InstanceNamePortNo即可實現(xiàn)訪問,缺省實例

?????? ? ServerNamePortNo

?????? 2.對不同的實例配置IP地址,相關(guān)的訪問協(xié)議,端口等等。

?????? 3.實例的可訪問性需要啟動該實例對應(yīng)的相關(guān)服務(wù)。此處需要注意的是實例名和實例的服務(wù)名并不是相

?????? ? 同的。缺省的實例的服務(wù)名為MSSQLSERVER,而命名實例的服務(wù)名為MSSQL$INSTANCE_NAME

?????? 4.實例的相關(guān)功能性的設(shè)置可以通過外圍應(yīng)用配置來實現(xiàn)。

?????? 5.上述完成后,即可實現(xiàn)對數(shù)據(jù)庫的訪問。

二、Oracle 實例

??? ??? 一個Oracle Server由一個Oracle實例和一個Oracle數(shù)據(jù)庫組成。

?????? ??? 即:Oracle Server = Oracle Instance + Oracle Database

?????? Oracle實例

?????? ??? 包括了內(nèi)存結(jié)構(gòu)(SGA)和一系列后臺進程(Background Process),兩者合起來稱為一個Oracle實例

?????????? 即:Oracle Instance = SGA + Background Process

?????? Oracle內(nèi)存結(jié)構(gòu)

?????? ??? 包含系統(tǒng)全局區(qū)(SGA)和程序全局區(qū)(PGA)

?????? ??? Oracle Memory Structures = SGA + PGA

?????????? SGA由服務(wù)器和后臺進程共享

?????????? PGA包含單個服務(wù)器進程或單個后臺進程的數(shù)據(jù)和控制信息,與幾個進程共享的SGA 正相反,PGA

?????????? ?? 只被一個進程使用的區(qū)域,PGA 在創(chuàng)建進程時分配在終止進程時回收。即由服務(wù)器進程產(chǎn)生。

??????

??? 1.SGA

?????? 系統(tǒng)全局區(qū)SGASGA = 數(shù)據(jù)緩沖區(qū)+ 重做日志緩沖區(qū)+ 共享池+ 大池+ Java + 流池

?????????? 系統(tǒng)全局區(qū)是動態(tài)的,由參數(shù)SGA_MAX_SIZE決定。

?????????? 查看當(dāng)前系統(tǒng)的SGA大小:show parameter sga_max_size;

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

?????????? 因為實例內(nèi)存的分配是在數(shù)據(jù)庫啟動時進行的,所以要讓修改生效,要重啟數(shù)據(jù)庫。

??????????

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

?????????? 自動的對共享池、JAVA池、大池、數(shù)據(jù)緩沖區(qū)、流池進行自動調(diào)配。取消自動調(diào)配就是

?????????? sga_target設(shè)為。

??????????

?????? 數(shù)據(jù)緩沖區(qū)(Database buffer cache):存儲從數(shù)據(jù)文件中獲得的數(shù)據(jù)塊的鏡像

?????????? 大小由db_cache_size 決定

?????????? 查看:show parameter db_cache_size;

?????????? 設(shè)置:alter system set db_cache_size=800M;

??????????

?????? 重做日志緩沖區(qū)(Redo log buffer):對數(shù)據(jù)庫的任何修改都按順序被記錄在該緩沖,然后由LGWR進程將

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

??????

?????? 共享池(Shared pool):SGA中最關(guān)鍵的內(nèi)存片段,共享池主要由庫緩存(共享SQL區(qū)和PL/SQL區(qū))和數(shù)據(jù)

?????????? 字典緩存組成,它的作用是存放頻繁使用的sql,在有限的容量下,數(shù)據(jù)庫系統(tǒng)根據(jù)一定的算法決

?????????? 定何時釋放共享池中的sql

?????????? 庫緩存大小由shared_pool_size 決定

????????????? 查看:show parameter shared_pool_size

????????????? 修改:alter system set shared_pool_size=120m;

??????????

?????????? 數(shù)據(jù)字典緩存:

????????????? 存儲數(shù)據(jù)庫中數(shù)據(jù)文件、表、索引、列、用戶和其它數(shù)據(jù)對象的定義和權(quán)限信息

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

??????????

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

??????

?????? Java 池:該程序緩沖區(qū)就是為Java 程序保留的。如果不用Java程序沒有必要改變該緩沖區(qū)的默認大小

??????

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

????????????????????

??? 2.PGA

?????? 是為每個用戶進程連接ORACLE數(shù)據(jù)庫保留的內(nèi)存

?????? 進程創(chuàng)建時分配,進程結(jié)束時釋放,只能被一個進程使用

?????? PGA包括了以下幾個結(jié)構(gòu):

?????? ()排序區(qū)

?????? ()游標(biāo)狀態(tài)區(qū)

?????? ()會話信息區(qū)

?????? ()堆棧區(qū)

?????? 由參數(shù):pga_aggregate_target 決定

??????

??? 3.幾類進程:用戶進程,服務(wù)器進程,后臺進程,其它可選進程

?????? 用戶進程

?????? ??? 在用戶連接數(shù)據(jù)庫產(chǎn)生,請求oracle服務(wù)器連接,必須要先建立一個連接,不會直接和oracle服務(wù)器連接

?????? 服務(wù)器進程

?????? ??? 當(dāng)連接實例并建立用戶會話時產(chǎn)生,獨立服務(wù)器或者提供共享服務(wù)器都能產(chǎn)生

?????? 后臺進程

?????? ??? 維持物理和內(nèi)存之間的聯(lián)系,用來管理數(shù)據(jù)庫的讀寫,恢復(fù)和監(jiān)視等工作。

?????????? Server Process主要是通過他和user process進行聯(lián)系和溝通,并由他和user process進行數(shù)據(jù)的交換。

?????????? Unix機器上,Oracle后臺進程相對于操作系統(tǒng)進程,也就是說,一個Oracle后臺進程將啟動一個操作

?????????? 系統(tǒng)進程。

?????????? Windows機器上,Oracle后臺進程相對于操作系統(tǒng)線程,打開任務(wù)管理器,我們只能看到一個

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

?

??????? 必須要有的后臺進程

?????? DBWn?????? -->數(shù)據(jù)庫寫進程

?????? PMON?????? -->程序監(jiān)控進程

?????? SMON?????? -->系統(tǒng)監(jiān)控進程

?????? LGWr?????? -->日志寫進程

?????? CKPT?????? -->檢查點進程

?

?????? 可選進程:

?????? ARCN?????? 歸檔進程

?????? RECO

?????? Snnn

?????? pnnn

?

?????? DBWn(數(shù)據(jù)庫寫進程)

?????? ??? 負責(zé)將修改過的數(shù)據(jù)塊從數(shù)據(jù)庫緩沖區(qū)高速緩存寫入磁盤上的數(shù)據(jù)文件中

?????? 寫入條件:

?????? 發(fā)生檢查點

?????? 臟緩存達到限制

?????? 沒有自由的緩存

?????? 超時發(fā)生

?????? 表空間離線

?????? 表空間只讀

?????? 表被刪除或者截斷

?????? 開始備份表空間

?????????? 可以修改數(shù)據(jù)寫進程的數(shù)量

?????????? alter system set db_writer_processes=3 scope=spfile;

??????????

??????

?????? PMON(程序監(jiān)控進程)

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

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

?????? 清除失敗的進程

?????? 回滾事務(wù)

?????? 釋放鎖

?????? 釋放其他資源

??????

?????? SMON(系統(tǒng)監(jiān)控進程)

?????? ??? 檢查數(shù)據(jù)庫的一致性,當(dāng)啟動失敗時完成災(zāi)難恢復(fù)等

?????? 實列恢復(fù)時,前滾所有重做日志中的文件,打開數(shù)據(jù)庫為了用戶能訪問,回滾未提交的事務(wù),釋放臨時表空間

?????? 清除臨時空間,聚結(jié)空閑空間,從不可用的文件中恢復(fù)事務(wù)的活動,OPS中失敗節(jié)點的實例恢復(fù)

?????? 清除OBJ$

?????? 縮減回滾段

?????? 使回滾段脫機

??????

?????? LGWr(日志寫進程)

?????? ??? 將重做日志緩沖區(qū)中的更改寫入在線重做日志文件

?????? 條件:

?????? 提交的時候(commit)

?????? 達到/滿

?????? 每隔秒

?????? 有大于M 重做日志緩沖區(qū)未被寫入磁盤

?????? DBWR需要寫入的數(shù)據(jù)的SCN號大于LGWR 記錄的SCN號,DBWR 觸發(fā)LGWR寫入

?????? 超時

?????? dbwr進程些之前寫日志

??????

?????? CKPT(檢查點進程)

?????? ??? DBWR/LGWR的工作原理,造成了數(shù)據(jù)文件,日志文件,控制文件的不一致,CKPT進程負責(zé)同步數(shù)據(jù)文件,

?????????? ?? 日志文件和控制文件

?????????? CKPT會更新數(shù)據(jù)文件/控制文件的頭信息

?????? 條件:

?????? 在日志切換的時候

?????? 數(shù)據(jù)庫用immediate transaction normal選項shutdown數(shù)據(jù)庫的時候

?????? 根據(jù)初始話文件LOG_CHECKPOINT_INTERVALLOG_CHECKPOINT_TIMEOUTFAST_START_IO_TARGET 的設(shè)置的數(shù)值來確定

?????? 用戶觸發(fā)

??????

?????? ARCN(歸檔進程)

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

?????? 條件:

?????? 數(shù)據(jù)庫以歸檔方式運行的時候

?

?????? RECO

?????? ??? 負責(zé)解決分布事物中的故障。Oracle可以連接遠程的多個數(shù)據(jù)庫,當(dāng)由于網(wǎng)絡(luò)問題,有些事物處于懸而未決的狀態(tài)。

?????????? RECO進程試圖建立與遠程服務(wù)器的通信,當(dāng)故障消除后,RECO進程自動解決所有懸而未決的會話。

??????

?????? Server Process(服務(wù)進程)

?????? ??? 分為專用服務(wù)進程(Dedicated Server Process)和共享服務(wù)進程(MultiTreaded Server Process)

?????????? 專用服務(wù)進程:一個服務(wù)進程對應(yīng)多個用戶進程,輪流為用戶進程服務(wù)。

??????

?????? 用戶進程(User Process)、服務(wù)進程(Server Process)、后臺進程(Background Processes)的啟動

?????????? 用戶進程: 數(shù)據(jù)庫用戶請求Oralce server會話時被啟動

?????????? 服務(wù)進程:當(dāng)用戶會話啟動后,連接到Oracle實例時該進程被啟動

?????????? 后臺進程:當(dāng)Oracle實例被啟動時,啟動相關(guān)的后臺進程

??????????

三、Oracle 數(shù)據(jù)庫

?????? 一系列物理文件的集合

??????????? 包括控制文件、數(shù)據(jù)文件、聯(lián)機日志文件、參數(shù)文件、密碼文件等??

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

??? 1.控制文件(controlfile)

??? ??? 數(shù)據(jù)庫的名字,檢查點信息,數(shù)據(jù)庫創(chuàng)建的時間戳

?????? 所有的數(shù)據(jù)文件,聯(lián)機日志文件,歸檔日志文件信息

?????? 備份信息等

?????????????

??? 2.數(shù)據(jù)文件(datafile)

??? ??? 包含了用戶和應(yīng)用程序的所有數(shù)據(jù)

?????? --查看數(shù)據(jù)文件信息

??????

??????

??? 3.聯(lián)機日志文件

??? ??? 記錄了用戶對數(shù)據(jù)庫的所有操作,一個數(shù)據(jù)庫中至少要有兩個日志組文件,每個日志組中至少有一個日志成員

?????? 日志組中的多個日志成員是互為鏡相關(guān)系

??????

??? 4.歸檔日志文件

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

?????? 在聯(lián)機日志文件切換后和被覆蓋之間系統(tǒng)將他們另外保存成一組連續(xù)的文件系列,該文件系列就是歸檔日志文件。

??????? 用戶恢復(fù)意外情況出現(xiàn)的數(shù)據(jù)丟失、異常等。

??????

??? 5.參數(shù)文件(pfilespfile)

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

??????? 初始化文件記載了許多數(shù)據(jù)庫的啟動參數(shù),如內(nèi)存,控制文件,進程數(shù)等,在數(shù)據(jù)庫啟動的時候加載(Nomount時加載)

???

??? 6.其他文件

??? ?? 密碼文件:用于Oracle 的具有sysdba權(quán)限用戶的認證.

?????? 告警日志文件:報警日志文件(alert.logalrt.ora),記錄數(shù)據(jù)庫啟動,關(guān)閉和一些重要的出錯信息

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

???

??? 7.數(shù)據(jù)庫邏輯組織結(jié)構(gòu)

?????? 表空間、段、區(qū)、塊

?????? 一個數(shù)據(jù)庫由一個或多個表空間組成,一個表空間只能屬于一個數(shù)據(jù)庫

?????? 一個表空間由一個或多個多個數(shù)據(jù)文件組成,一個數(shù)據(jù)文件只能屬于一個表空間

?????? 一個數(shù)據(jù)文件由一個或多個操作系統(tǒng)塊組成,每一個操作系統(tǒng)塊只能數(shù)以一個數(shù)據(jù)文件

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

?????? 一個段由一個或多個區(qū)組成,每一個區(qū)只能屬于一個段

?????? 一個區(qū)由一個或多個Oracle 塊組成,每一個Oracle塊只能屬于一個區(qū)

?????? 一個區(qū)只能屬于一個數(shù)據(jù)文件,數(shù)據(jù)文件的空間可以分配到一個或多個區(qū)

?????? 一個Oracle 塊由一個或多個操作系統(tǒng)塊組成,一個操作系統(tǒng)塊是一個Oracle塊的一部分

??????

??????

四、Oracle實例和Oracle數(shù)據(jù)庫的關(guān)系

??? 1.一個實例能夠裝載及打開僅僅一個數(shù)據(jù)庫??? ??

??? 2.一個數(shù)據(jù)庫能夠被多個實例裝載并打開

??? 3.實例與數(shù)據(jù)庫的對應(yīng)關(guān)系是一對一或多對一的關(guān)系

???

五、更多?? */

?

??? SQL/PLSQL 基礎(chǔ)

???

??? Oralce 10g 使用DBCA創(chuàng)建數(shù)據(jù)庫

???

??? 使用Uniread實現(xiàn)SQLplus翻頁功能

???

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

???

??? VmWare6.5.2下安裝RHEL 5.4(配置Oracle安裝環(huán)境)

???

??? Oracle相關(guān)

??? ??

?

總結(jié)

以上是生活随笔為你收集整理的Oracle实例和Oracle数据库(Oracle体系结构)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。