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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

数据库

Oracle-Oracle数据库结构

發(fā)布時(shí)間:2025/3/21 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle-Oracle数据库结构 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

再談Oracle數(shù)據(jù)庫(kù)結(jié)構(gòu)

之前寫了一篇文章《Oracle-知識(shí)結(jié)構(gòu)漫談》 粗略的介紹了Oracle數(shù)據(jù)庫(kù)接口,在這里再更加詳細(xì)的描述一下,當(dāng)做是對(duì)原有知識(shí)的鞏固,溫故知新。


Oracle體系結(jié)構(gòu)

數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)是從某一個(gè)角度來(lái)分析和考察數(shù)據(jù)庫(kù)的組成、工作過(guò)程與原理,以及數(shù)據(jù)在數(shù)據(jù)庫(kù)中的組織與管理機(jī)制。

Oracle數(shù)據(jù)庫(kù)是一個(gè)邏輯概念,而不是一個(gè)運(yùn)行數(shù)據(jù)庫(kù)服務(wù)器的計(jì)算機(jī)系統(tǒng)或者一臺(tái)Oracle服務(wù)器。

基本術(shù)語(yǔ)

1 Oracle實(shí)例 、Oracle數(shù)據(jù)庫(kù)

一般Oracle數(shù)據(jù)庫(kù) 可以分為兩部分:

  • 實(shí)例 Instance
  • 實(shí)例是一個(gè)非固定的,基于內(nèi)存的基本進(jìn)程與內(nèi)存結(jié)構(gòu)。 當(dāng)服務(wù)器關(guān)閉之后,實(shí)例也就不存在了。

  • 數(shù)據(jù)庫(kù) Database
  • 數(shù)據(jù)庫(kù)指的是固定的、基于磁盤的數(shù)據(jù)文件、控制文件、日志文件、參數(shù)文件和歸檔日志文件等。

    一般情況下,Oracle數(shù)據(jù)庫(kù)都是一個(gè)數(shù)據(jù)庫(kù)包含一個(gè)實(shí)例。

    2 數(shù)據(jù)庫(kù)服務(wù)器

    數(shù)據(jù)庫(kù)服務(wù)器DatabaseServer 一般指的是數(shù)據(jù)庫(kù)各軟件部件(如sqlplus、oem、exp/imp等) 、 實(shí)例數(shù)據(jù)庫(kù) 3個(gè)主要部分, 是由安裝在服務(wù)器上的所有的軟件(包括各種類型的文件)及啟動(dòng)成功后的實(shí)例組成。


    體系結(jié)構(gòu)圖解

    如上圖,我們可以看出 SQL命令從客戶端發(fā)出后,由Oracle的服務(wù)器進(jìn)行響應(yīng),在內(nèi)存區(qū)域中進(jìn)行語(yǔ)法分析、編譯、執(zhí)行,將修改后的數(shù)據(jù)寫入數(shù)據(jù)庫(kù)文件,數(shù)據(jù)庫(kù)的修改信息寫入日志文件,再將SQL的執(zhí)行結(jié)果返回給客戶端。


    表空間與數(shù)據(jù)文件

    在Oracle系統(tǒng)中,表空間和數(shù)據(jù)文件是Oracle數(shù)據(jù)庫(kù)結(jié)構(gòu)的基本要素.

    1 表空間

    在Oracle數(shù)據(jù)庫(kù)中,用于存放數(shù)據(jù)庫(kù)表、索引、回滾段等對(duì)象的磁盤邏輯空間叫做表空間。 如上所示。

    一般在完成Oracle系統(tǒng)的安裝并創(chuàng)建Oracle實(shí)例后,Oracle系統(tǒng)會(huì)自動(dòng)創(chuàng)建多個(gè)表空間。

    SYSTEM表空間

    • SYSTEM表空間存放Oracle系統(tǒng)內(nèi)部表和數(shù)據(jù)字典的數(shù)據(jù),比如表名、列名、用戶名等。
    • 不贊成用戶創(chuàng)建的表、索引等存放在SYSTEM表空間。
    • SYSTEM表空間對(duì)應(yīng)的數(shù)據(jù)文件是system01.dbf ,如果有表空間對(duì)應(yīng)的數(shù)據(jù)文件比較小,可追加另外一個(gè)新的數(shù)據(jù)文件,比如system02.dbf
    alter tablespace system add datafile '/data/cc/system02.dbf' size 10240M;


    SYSAUX表空間

    • SYSAUX表空間是Oracle 11g新增加的表空間,主要用于存放Oracle系統(tǒng)內(nèi)部的常用樣例用戶的對(duì)象。
    • SYSAUX一般不存放用戶的數(shù)據(jù),由Oracle系統(tǒng)內(nèi)部自動(dòng)維護(hù)
    • SYSAUX對(duì)應(yīng)的數(shù)據(jù)文件為 sysaux01.dbf

    UDNO表空間

    • 列表內(nèi)容UNDO表空間用于存儲(chǔ)撤銷信息的表空間
    • 當(dāng)我們對(duì)數(shù)據(jù)庫(kù)進(jìn)行修改(包括INSERT、UPDATE、DELETE操作)時(shí), Oracle會(huì)自動(dòng)使用UNDO表空間來(lái)存放修改前的數(shù)據(jù)
    • 當(dāng)操作完成并提交后,Oracle系統(tǒng)會(huì)根據(jù)細(xì)腰保留修改前數(shù)據(jù)時(shí)間長(zhǎng)短來(lái)釋放UNDO表空間的部分空間。
    • 默認(rèn)的數(shù)據(jù)文件為undotbs01.dbf

    USERS表空間

    • USER是Oracle建議用戶使用的表空間,可以在這這個(gè)表空間上創(chuàng)建跟蹤對(duì)象。
    • Oracle的基本樣例用戶SCOTT的對(duì)象就存放在USERS表空間中。
    • 一般USERS的表空間對(duì)應(yīng)的數(shù)據(jù)文件是users01.dbf

    總結(jié):

    除了Oracle系統(tǒng)默認(rèn)創(chuàng)建的表空間外,用戶可以根據(jù)應(yīng)用的規(guī)模及其所要存放的對(duì)象類型創(chuàng)建多個(gè)表空間,以區(qū)分用戶數(shù)據(jù)與系統(tǒng)數(shù)據(jù)、索引和數(shù)據(jù)。

    此外,不同應(yīng)用的數(shù)據(jù)應(yīng)將不同表空間的文件放在不同的盤上,減少I/O沖突。


    2 數(shù)據(jù)文件

    數(shù)據(jù)文件DataFile是用于保存應(yīng)用數(shù)據(jù)和Oracle系統(tǒng)內(nèi)部數(shù)據(jù)的文件。
    Oracle數(shù)據(jù)庫(kù)由表空間組成,每個(gè)表空間可以包含一或者多個(gè)數(shù)據(jù)文件

    系統(tǒng)數(shù)據(jù)

    管理用戶數(shù)據(jù)和Oracle系統(tǒng)本身的數(shù)據(jù),這些數(shù)據(jù)被自動(dòng)存放在系統(tǒng)表空間對(duì)應(yīng)的system01.dbf中。

    二Oracle系統(tǒng)內(nèi)部的數(shù)據(jù)字典、表如DBA_USERS、DBA_DATA_FILES等說(shuō)存放的岠屬于Oracle系統(tǒng)的內(nèi)部數(shù)據(jù),這也數(shù)據(jù)也存放在系統(tǒng)表空間對(duì)應(yīng)的system01.dbf中。


    用戶數(shù)據(jù)

    用戶數(shù)據(jù)是指用戶應(yīng)用系統(tǒng)的數(shù)據(jù),包括與應(yīng)用系統(tǒng)先關(guān)的信息。

    select tablespace_name,file_id,file_name,round(bytes / (1024 * 1024*1024), 0) || 'G' total_spacefrom dba_data_filesorder by tablespace_name;

    從上面的查詢結(jié)果看出來(lái): 表空間和數(shù)據(jù)文件是一對(duì)不可分離的數(shù)據(jù)庫(kù)實(shí)體。

    • 表空間是一個(gè)數(shù)據(jù)庫(kù)的邏輯去
    • 每個(gè)表空間由一個(gè)或者多個(gè)數(shù)據(jù)文件組成
    • 一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間

    臨時(shí)表空間與臨時(shí)文件

    • Oracle系統(tǒng)中用于存放和排序有關(guān)的特殊表空間。

    • 當(dāng)需要排序時(shí),Oracle就將排序的數(shù)據(jù)存放在該表空間內(nèi),排序完成后即可釋放數(shù)據(jù)所占的空間,因此稱之為臨時(shí)表空間。

    • 臨時(shí)表空間也可以對(duì)應(yīng)一個(gè)或者多個(gè)臨時(shí)文件(Tempfile)

    • oracle9i后,Oracle將臨時(shí)表空間所對(duì)應(yīng)的臨時(shí)數(shù)據(jù)文件與一般數(shù)據(jù)文件分開, dba_temp_files數(shù)據(jù)字典中可以查詢臨時(shí)表空間和臨時(shí)數(shù)據(jù)文件的信息

    select tablespace_name,file_name,bytes/1024/1024 "file_size(M)",autoextensible from dba_temp_files;

    Oracle存儲(chǔ)結(jié)構(gòu)介紹

    無(wú)論是普通的表空間還是臨時(shí)表空間,當(dāng)創(chuàng)建時(shí)至少需要一個(gè)數(shù)據(jù)文件。

    Oracle創(chuàng)建數(shù)據(jù)文件時(shí),實(shí)際上是將磁盤的操作系統(tǒng)重新格式化成Oracle數(shù)據(jù)塊,并且每個(gè)Oracle數(shù)據(jù)塊都有唯一標(biāo)示。

    一般情況下,Oracle數(shù)據(jù)塊是操作系統(tǒng)塊的倍數(shù),比如操作系統(tǒng)塊大小2048B,而Oracle數(shù)據(jù)塊大小為8192B(DB_BLOCK_SIZE=8192)

    SQL> show param db_blockNAME TYPE VALUE --------------- ----------- -------- db_block_buffers integer 0 db_block_checking string FALSE db_block_checksum string TYPICAL db_block_size integer 8192


    一般的,我們?cè)谠O(shè)計(jì)數(shù)據(jù)庫(kù)結(jié)構(gòu)時(shí)需要將表、索引或者簇(Cluster)存儲(chǔ)到一個(gè)已經(jīng)存在的表空間上, 而表、索引或者簇都是占用空間的對(duì)象,Oracle把占空間的對(duì)象統(tǒng)一稱為段(Segment)。

    段是有多個(gè)區(qū)間(Extent)構(gòu)成,而區(qū)間是由多個(gè)連續(xù)(塊的編號(hào)地址相鄰)的Oracle數(shù)據(jù)塊構(gòu)成。

    所以O(shè)racle中,數(shù)據(jù)塊是一個(gè)基本的處理單位


    控制文件

    • 控制文件是一個(gè)存儲(chǔ)Oracle實(shí)例信息、數(shù)據(jù)文件和日志文件信息的內(nèi)部二進(jìn)制文件。
    • 控制文件一般在Oracle系統(tǒng)安裝時(shí)自動(dòng)創(chuàng)建。
    • 控制文件的存放路徑由服務(wù)器參數(shù)文件SPFILEsid.ora的control files的參數(shù)值來(lái)決定。

    因?yàn)榭刂莆募写娣艛?shù)據(jù)文件、日志文件等信息,所以O(shè)racle實(shí)例在啟動(dòng)的時(shí)候必須訪問(wèn)控制文件。

    Oracle實(shí)例在正常啟動(dòng)時(shí),首先要訪問(wèn)的初始化參數(shù)文件SPFILE, 然后Oracle會(huì)為系統(tǒng)全局區(qū)(SGA)分配內(nèi)存,這是Oracle實(shí)例處于安裝狀態(tài),控制文件處于打開狀態(tài); 接下來(lái),Oracle會(huì)自動(dòng)讀出控制文件中的所有數(shù)據(jù)文件和日志文件信息,并打開所有的數(shù)據(jù)文件及日志文件信息以便用戶訪問(wèn).

    控制文件內(nèi)部出了存放ORACLE實(shí)例及創(chuàng)建日期、數(shù)據(jù)文件、日志文件外,在系統(tǒng)運(yùn)行的過(guò)程中,還存放系統(tǒng)更改號(hào)、檢查點(diǎn)信息,及歸檔的當(dāng)前狀態(tài)信息等,如果開啟了RMAN備份,還會(huì)存放RMAN的備份信息。

    Oracle系統(tǒng)處于安全的考慮,建議在 系統(tǒng)安裝時(shí) 指定多個(gè)控制文件,并將它們存放在不同的磁盤路徑下。

    查詢數(shù)據(jù)庫(kù)實(shí)例包含的控制文件信息路徑

    select name, status from v$controlfile;

    日志文件

    Oracle日志文件分為 重做日志文件 和 歸檔日志文件。

    特別是重做日志文件,是Oracle數(shù)據(jù)庫(kù)系統(tǒng)正常提供服務(wù)不可或缺的。


    聯(lián)機(jī)重做日志文件(Online Redo Log File)

    Online Redo log file 是用來(lái)記錄數(shù)據(jù)庫(kù)所發(fā)生過(guò)的交易的信息及有Oracle內(nèi)部行為引起的數(shù)據(jù)庫(kù)變化信息。

    在數(shù)據(jù)庫(kù)恢復(fù)時(shí),可以從該日志文件中讀取出原來(lái)交易的數(shù)據(jù)。 在數(shù)據(jù)庫(kù)運(yùn)行期間,當(dāng)用戶發(fā)出commit命令時(shí),數(shù)據(jù)庫(kù)會(huì)將每筆交易記錄到日志文件中,寫入日志文件成功后,才會(huì)把信息傳給用戶程序。所以,在日志文件中可以隨時(shí)督促信息以恢復(fù)某些交易數(shù)據(jù)。

    當(dāng)對(duì)表或者整個(gè)表空間設(shè)置了NOLOGGING屬性時(shí),基于表或表空間中所有表的DML操作都不會(huì)生成日志信息,當(dāng)然也就減少了日志信息的產(chǎn)生。

    重做日志文件的作用

    • 記錄所有數(shù)據(jù)的改變
    • 提供恢復(fù)機(jī)制
    • 組方式管理(最少兩組,默認(rèn)為3組,每組一個(gè)重做日志文件,Oracle官方建議,所有的每組重做日志文件大小最好相同;當(dāng)然如果是為重做日志文件組添加成員的時(shí)候不能指定大小,因?yàn)槊總€(gè)重做日志文件相互冗余,所以必須一致)

    重做日志文件的狀態(tài)

    • unused:說(shuō)明此重做日志文件組沒被用過(guò)
    • current:說(shuō)明是當(dāng)前重做日志組,lgwr正在寫
    • active:說(shuō)明此重做日志文件組剛寫完,記錄在重做日志文件組中的事務(wù)所造成的數(shù)據(jù)塊的改變,沒有完全從緩沖區(qū)寫入到數(shù)據(jù)文件,重做日志文件組屬于這種狀態(tài),是不允許被覆蓋的,一旦寫完成,就變問(wèn)inactive狀態(tài)。
    • inactive:說(shuō)明記錄在重做日志文件組中的事務(wù)所造成的數(shù)據(jù)塊的改變,已經(jīng)從緩沖區(qū)寫入到數(shù)據(jù)文件,這種狀態(tài)允許被覆蓋。
      上面4中狀態(tài)是重做日志文件常見的狀態(tài),下面兩種狀態(tài)是在重做日志組損壞或者特殊情況下的狀態(tài)。
    • clearing:說(shuō)明該重做日志文件正被重建(重建后狀態(tài)變?yōu)閡nused)
    • clearing_cyrrent:說(shuō)明此重做日志文件重建是出現(xiàn)錯(cuò)誤

    為確保數(shù)據(jù)庫(kù)系統(tǒng)的安全,每個(gè)Oracle實(shí)例用一個(gè)日志線程(Thread)來(lái)近路數(shù)據(jù)庫(kù)的變化。 日志線程由若干日志組構(gòu)成,日志組又由一個(gè)或者多個(gè)日志成員構(gòu)成(當(dāng)然也可以包括一個(gè))。

    可以從v$logfile數(shù)據(jù)字典中查詢

    select group#,status , member from v$logfile ;

    可以根據(jù) v$log_history 這個(gè)動(dòng)態(tài)視圖查詢?nèi)罩厩袚Q的頻率,判斷日志的大小是否合適。 日志組空間太小的話,第一會(huì)導(dǎo)致dbwr寫的頻率增加,增加了i/o;第二會(huì)造成事務(wù)的等待,延長(zhǎng)事務(wù)周期,導(dǎo)致數(shù)據(jù)庫(kù)假死。

    按照官方建議,日志切換時(shí)間一般在10-15分鐘比較適合。

    Oracle實(shí)例在運(yùn)行中產(chǎn)生日志信息,首先被記錄在SGA中的日志緩沖區(qū)中, 當(dāng)發(fā)出commit命令后(或者日志緩沖區(qū)信息滿1/3或者3S過(guò)去)時(shí),LGWR進(jìn)程將日志信息從日志緩沖區(qū)中讀出并寫到日志文件組序列號(hào)小的文件中, 一個(gè)日志組寫滿后接著寫另外一組。

    在DBWR工作之前,LGWR首先將事務(wù)變化寫入到重做日志。
    LGWR工作觸發(fā)條件:
    1、提交事務(wù)(commit)
    2、每隔3秒鐘
    3、當(dāng)重做日志信息超過(guò)1M
    4、重做日志緩沖區(qū)超過(guò)1/3滿
    5、SCN(System Change Number)

    當(dāng)LGWR進(jìn)程將所有能用的日志文件都使用過(guò)一次后,它將再次轉(zhuǎn)向第一個(gè)日志組重新覆寫。

    Oracle用日志文件序列號(hào)來(lái)跟蹤不同的日志文件,當(dāng)LGWR進(jìn)程寫滿第一個(gè)日志組而轉(zhuǎn)向另外一組時(shí),稱之為日志切換。

    當(dāng)日志發(fā)生切換時(shí),Oracle會(huì)往警告日志文件(alter_sid.log) 記錄相應(yīng)的信息,以幫助用戶觀察各日志組的使用情況。


    歸檔日志文件

    oracle系統(tǒng)運(yùn)行有兩種模式——?dú)w檔模式和非歸檔模式。

    非歸檔模式

    非歸檔模式就是在系統(tǒng)運(yùn)行期間,所產(chǎn)生的日志信息不斷的記錄到各日志文件組中,當(dāng)所有的重做日志組被寫滿年后又重新從第一個(gè)日志組開始覆寫日志信息內(nèi)容。

    歸檔模式

    歸檔模式就是在各日志文件(成員)都寫滿即將被覆蓋前,現(xiàn)有歸檔進(jìn)程(ARCH)將即將被覆蓋的日志文件中的日志信息讀取出來(lái)并寫到歸檔日志文件中,以便后面的恢復(fù)操作時(shí)查找。

    默認(rèn)情況下,Oracle系統(tǒng)不采用歸檔運(yùn)行模式。

    查看數(shù)據(jù)庫(kù)是否處于歸檔模式

    SQL> SELECT log_mode FROM v$database; LOG_MODE------------NOARCHIVELOG

    如果將數(shù)據(jù)庫(kù)設(shè)置為歸檔模式下運(yùn)行, 歸檔日志的領(lǐng)有服務(wù)器參數(shù)文件SPFILE的log_archive_dest參數(shù)確定。

    SQL> show param log_archive_destNAME TYPE VALUE --------------- ----------- ------------------------------ log_archive_dest string log_archive_dest_1 string LOCATION=/ccarch/cc valid_for=(all_logfiles,all_roles) db_unique_name=pr_cc

    服務(wù)器參數(shù)文件

    服務(wù)器參數(shù)文件SPFILE(Server Parmater File)是二進(jìn)制文件,用來(lái)記錄Oracle實(shí)例的基本參數(shù)信息,包括數(shù)據(jù)庫(kù)實(shí)例名、控制文件所在路徑、進(jìn)程等。

    服務(wù)器參數(shù)文件在Oracle安裝時(shí)已默認(rèn)的方式創(chuàng)建, 文件名為 SPFILEsid.ora , 其中sid為數(shù)據(jù)庫(kù)實(shí)例名。

    SPFILE中的參數(shù)由oracle系統(tǒng)自動(dòng)維護(hù),如過(guò)要修改某些參數(shù),不能對(duì)SPFILE進(jìn)行直接編輯, 需要通過(guò)alter system命令來(lái)修改。


    密碼文件、跟蹤文件、警告日志

    密碼文件

    作用:主要進(jìn)行DBA權(quán)限的身份認(rèn)證

    密碼文件的位置:

    $ORACLE_HOME/dbs/orapw$ORACLE_SID

    密碼文件查找的順序

    --->orapw<sid>--->orapw--->Failure

    Oracle的兩種認(rèn)證方式;
    - 使用與操作系統(tǒng)集成的身份驗(yàn)證
    - 使用Oracle數(shù)據(jù)庫(kù)的密碼文件進(jìn)行身份認(rèn)證

    兩種認(rèn)證方式, 決定在兩個(gè)參數(shù)中

    創(chuàng)建Oracle密碼文件的命令

    orapwd file=<fname> password=<password> entries=<users> force=<y/n>
    • file - name of password file (mand), 密碼文件的名字orapw
    • password - password for SYS (mand), sys用戶的密碼
    • entries - maximum number of distinct DBA
    • force - whether to overwrite existingfile (opt),10g新增的參數(shù),默認(rèn)值為n ,y表示允許覆蓋

    警告日志文件

    告警日志文件是一個(gè)存放在Oracle系統(tǒng)目錄下的特殊文本文件(trace file),用來(lái)記錄數(shù)據(jù)庫(kù)運(yùn)行期間錯(cuò)誤信息。

    告警日志文件命名一般為alert_<SID>.log,其中SID為ORACLE數(shù)據(jù)庫(kù)實(shí)例名稱。

    10G中告警日志的路徑 由Oracle系統(tǒng)的background_dump_dest參數(shù)指定。

    SQL> show parameter background_dump_destNAME TYPE VALUE ------------------- ----------- -------------------- background_dump_dest string /oracle/diag/rdbms/pr_cc/cc/trace

    11G及12C中,引入了ADR(Automatic Diagnostic Repository:一個(gè)存放數(shù)據(jù)庫(kù)診斷日志、跟蹤文件的目錄),關(guān)于ADR對(duì)應(yīng)的目錄位置可以通過(guò)查看v$diag_info系統(tǒng)視圖

    SQL> select * from v$diag_info;

    Diag Trace對(duì)應(yīng)的目錄為文本格式的告警日志文件所在的目錄,而Diag Alert對(duì)應(yīng)的目錄為XML格式的警告日志(對(duì)應(yīng)為log_x.xml)

    SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Default Trace File';

    這里的Default Trace File就是缺省的會(huì)話跟蹤文件名稱


    后臺(tái)跟蹤文件和用戶跟蹤文件

    跟蹤文件(trace file)的作用,通常是一個(gè)服務(wù)器進(jìn)程對(duì)某種異常錯(cuò)誤條件做出響應(yīng)時(shí)創(chuàng)建的診斷文件。

    路徑由服務(wù)器參數(shù)文件SPFILEsid.ora的user_dump_dest參數(shù)指定。

    SQL>show parameter DUMP_DEST NAME TYPE VALUE ---------------- ----------- ------------------------------ background_dump_dest string /oracle/diag/rdbms/pr_cc/cc/trace core_dump_dest string /oracle/diag/rdbms/pr_cc/cc/cdump user_dump_dest string /oracle/diag/rdbms/pr_cc/cc/trace

    background_dump_dest(后臺(tái)轉(zhuǎn)儲(chǔ))
    core_dump_dest(內(nèi)核轉(zhuǎn)儲(chǔ))
    user_dump_dest(用戶轉(zhuǎn)儲(chǔ))

    跟蹤文件名形:SID名+進(jìn)程名+進(jìn)程ID


    Oracle服務(wù)器結(jié)構(gòu)

    Oracle服務(wù)器與Oracle實(shí)例

    Oracle服務(wù)器是由Oracle實(shí)例+Oracle數(shù)據(jù)庫(kù)組成。

    Oracle實(shí)例是有SGA+后臺(tái)進(jìn)程組成。 每一個(gè)Oracle實(shí)例都有自己的SGA和獨(dú)立的Oracle進(jìn)程集。


    物理結(jié)構(gòu)與邏輯結(jié)構(gòu)的關(guān)系


    系統(tǒng)全局區(qū)(SGA)

    之前的博客 Oracle-內(nèi)存管理解讀

    • SGA = 數(shù)據(jù)高速緩沖區(qū)+ 重做日志緩沖區(qū)+ 共享池+ 大池+ Java 池+ 流池

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

    查看當(dāng)前系統(tǒng)的SGA大小:

    SQL>show parameter sga_max_size NAME TYPE VALUE ------------------ ----------- ---------------------------- sga_max_size big integer 116992M

    修改當(dāng)前系統(tǒng)的SGA大小:

    alter system set sga_max_size=1024m scope=spfile;

    因?yàn)閷?shí)例內(nèi)存的分配是在數(shù)據(jù)庫(kù)啟動(dòng)時(shí)進(jìn)行的,所以要讓修改生效,要重啟數(shù)據(jù)庫(kù)。

    數(shù)據(jù)高速緩沖區(qū)(Data Buffer Cache)

    存儲(chǔ)Oracle系統(tǒng)中最近使用過(guò)的數(shù)據(jù)塊(即用戶的高速緩沖區(qū))

    數(shù)據(jù)告訴緩沖區(qū)有3種類型
    - 臟區(qū)Dirty Buffers
    - 自由區(qū)Free Buffers
    - 保留區(qū)Pinned Bffer

    大小由db_cache_size 決定
    查看:

    SQL> show parameter db_cache_sizeNAME TYPE VALUE -------------- ----------- ------------------------- db_cache_size big integer 99G

    修改:

    SQL>alter system set db_cache_size=1024m;

    重做日志緩沖區(qū)(Redo Log Buffer)

    在這些日志在寫入重做日志文件之前, 必須先寫入到從昨日之緩沖區(qū),然后由LGWR進(jìn)程將它寫入磁盤,大小由LOG_BUFFER決定


    共享池(Share Pool)

    • 共享池是SGA的保留區(qū), 用于存儲(chǔ)SQL、PL/SQL、包、數(shù)據(jù)字典、鎖、字符集 安全屬性等。
    • 共享池包含庫(kù)高速緩沖區(qū)(Library Cache) 和 指點(diǎn)高速緩沖區(qū)(Dictionary Cache)
    • 庫(kù)緩存大小由shared_pool_size 決定

    查看:

    SQL>show parameter shared_pool_size NAME TYPE VALUE --------------------- ----------- ------------------------ shared_pool_size big integer 10G

    修改:

    SQL>alter system set shared_pool_size=120m;

    大池(Large Pool)

    是一個(gè)可選的區(qū)域,用于一些大型的進(jìn)程如Oracle的備份恢復(fù)操作、IO服務(wù)器進(jìn)程等

    Java 池

    該程序緩沖區(qū)就是為Java 程序保留的。如果不用Java程序沒有必要改變?cè)摼彌_區(qū)的默認(rèn)大小

    流池(Stream pool)

    被Oracle流所使用


    后臺(tái)進(jìn)程

    SQL>select name description from v$bgprocess ;

    數(shù)據(jù)庫(kù)寫入器(DBwn)

    Database Writer 數(shù)據(jù)庫(kù)寫。主要作用是將Database buffer cache(數(shù)據(jù)庫(kù)緩沖區(qū))里那些被更新過(guò)、但還沒有被寫入數(shù)據(jù)文件的數(shù)據(jù)寫入到數(shù)據(jù)文件中。這里的n表示可以有多個(gè)數(shù)據(jù)庫(kù)寫操作.

    可以修改SPFILE的DB_WRITER_PROCESSES參數(shù),以允許使用多個(gè)DBWR進(jìn)程,進(jìn)程的名字分別為 DBW0、DBW1、DBW2等…

    SQL>alter system set db_writer_processes=3 scope=spfile;

    檢查點(diǎn)進(jìn)程(CKPT)

    可選進(jìn)程。

    可以通過(guò)SPFILE中的CHECKPOINT_PROCESS參數(shù)為TRUE來(lái)啟動(dòng)檢查點(diǎn)進(jìn)程


    日志寫入器(LGWR)

    日志文件寫進(jìn)程:是日志緩沖區(qū)的治理進(jìn)程,負(fù)責(zé)把日志緩沖區(qū)中的日志項(xiàng)寫入磁盤中的日志文件上。每個(gè)實(shí)例只有一個(gè)LGWR進(jìn)程.


    系統(tǒng)監(jiān)控器(SMON)

    System Monitor,負(fù)責(zé)完成自動(dòng)實(shí)例恢復(fù)和回收分類(sort)表空間。


    進(jìn)程監(jiān)控器(PMON)

    PRocess monitor ,實(shí)現(xiàn)用戶進(jìn)程故障恢復(fù)、清理內(nèi)存區(qū)和釋放該進(jìn)程所需資源等。

    清除失敗的進(jìn)程
    回滾事務(wù)
    釋放鎖
    釋放其他資源


    歸檔器(ARCH)

    archiver process
    把已經(jīng)填滿的在線日志文件拷貝到一個(gè)指定的存儲(chǔ)設(shè)備上。僅當(dāng)日志文件組開關(guān)(switch)出現(xiàn)時(shí),才進(jìn)行ARCH操作。ARCH不是必須的,而只有當(dāng)自動(dòng)歸檔可使用或者當(dāng)手工歸檔請(qǐng)求時(shí)才發(fā)出。


    鎖(LCKn)

    可選進(jìn)程
    封鎖進(jìn)程:用于并行服務(wù)器系統(tǒng),主要完成實(shí)例之間的封鎖。


    調(diào)度(Dnnn)

    可選進(jìn)程

    恢復(fù)器(RECO)

    負(fù)責(zé)解決分布事物中的故障。Oracle可以連接遠(yuǎn)程的多個(gè)數(shù)據(jù)庫(kù),當(dāng)由于網(wǎng)絡(luò)問(wèn)題,有些事物處于懸而未決的狀態(tài)。
    RECO進(jìn)程試圖建立與遠(yuǎn)程服務(wù)器的通信,當(dāng)故障消除后,RECO進(jìn)程自動(dòng)解決所有懸而未決的會(huì)話。

    快照進(jìn)程(SNPn)

    負(fù)責(zé)出護(hù)理數(shù)據(jù)庫(kù)快照的自動(dòng)刷新,并通過(guò)dbms_job包運(yùn)行預(yù)定的數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程.

    并行查詢進(jìn)程(Pnnn)



    程序全局區(qū)(PGA)

    與SGA不同,PGA是一個(gè)私有區(qū)。

    http://blog.csdn.net/yangshangwei/article/details/53124044#t25

    SQL> show parameter pga NAME TYPE VALUE ------------------ ----------------- ------------------ pga_aggregate_target big integer 10G

    Oracle數(shù)據(jù)字典

    之前的博客 Oracle-數(shù)據(jù)字典解讀

    Oracle數(shù)據(jù)字典的構(gòu)成


    Oracle常用的數(shù)據(jù)字典

    基本的數(shù)據(jù)字典


    與數(shù)據(jù)庫(kù)組建相關(guān)的數(shù)據(jù)字典



    Oracle常用的動(dòng)態(tài)性能視圖


    總結(jié)


    總結(jié)

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

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