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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle认识

發(fā)布時間:2025/3/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle认识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標準>>>

數(shù)據(jù)庫結(jié)構(gòu)

每一個運行的Oracle 數(shù)據(jù)庫都與一個Oracle 實例關(guān)聯(lián)。在數(shù)據(jù)庫服務器上啟動數(shù)據(jù)庫后,Oracle 軟件會分配一個稱為系統(tǒng)全局區(qū)(SGA) 的共享內(nèi)存區(qū),還會啟動若干個Oracle 后臺進程。這種由SGA 和Oracle 進程組成的組合就稱為一個Oracle 實例
啟動實例后,Oracle 軟件會將實例與特定的數(shù)據(jù)庫關(guān)聯(lián)。這個過程稱為裝載數(shù)據(jù)庫。然后可打開數(shù)據(jù)庫,使得授權(quán)用戶可訪問數(shù)據(jù)庫。在同一臺計算機上可以并發(fā)執(zhí)行多個實例,每一個實例只訪問它自己的物理數(shù)據(jù)庫。
您可以將Oracle 數(shù)據(jù)庫體系結(jié)構(gòu)看作各種不同的、相互關(guān)聯(lián)的結(jié)構(gòu)化組件。
Oracle 數(shù)據(jù)庫使用內(nèi)存結(jié)構(gòu)和進程來管理、訪問數(shù)據(jù)庫。所有內(nèi)存結(jié)構(gòu)都存在于構(gòu)成數(shù)據(jù)庫服務器的計算機的主存中。進程指的是在這些計算機內(nèi)存中運行的作業(yè)。進程被定義為“控制線程”或操作系統(tǒng)中可以運行一系列步驟的一種機制。
?

?

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

與Oracle 實例關(guān)聯(lián)的基本內(nèi)存結(jié)構(gòu)包括:
? 系統(tǒng)全局區(qū)(SGA):由所有服務器進程和后臺進程共享
? 程序全局區(qū)(PGA):專用于每一個服務器進程或后臺進程。每一個進程使用一個PGA
SGA 是包含實例的數(shù)據(jù)和控制信息的內(nèi)存區(qū)。
SGA 包含以下數(shù)據(jù)結(jié)構(gòu):
? 數(shù)據(jù)庫緩沖區(qū)高速緩存:緩存從數(shù)據(jù)庫檢索的數(shù)據(jù)塊
? 重做日志緩沖區(qū):高速緩存重做信息(用于實例恢復),直到可以將其寫入磁盤中存儲的物理重做日志文件
? 共享池:緩存可在用戶間共享的各個結(jié)構(gòu)
? 大型池:是一個可選區(qū)域,可為某些大型進程(如Oracle 備份和恢復操作、I/O 服務器進程)提供大量內(nèi)存分配
? Java 池:用于Java 虛擬機(JVM) 中所有特定會話的Java 代碼和數(shù)據(jù)
? Streams 池:由Oracle Streams 使用
通過使用Enterprise Manager 或SQL*Plus 啟動實例,可以顯示為SGA 分配的內(nèi)存量。

程序全局區(qū)(PGA) 是包含每一個服務器進程的數(shù)據(jù)及控制信息的內(nèi)存區(qū)。Oracle 服務器進程為客戶機的請求提供服務。每一個服務器進程都有自己專用的PGA,這個PGA 是在服務器進程啟動時創(chuàng)建的。由該服務器進程獨占對PGA 的訪問,PGA 只由對它自身執(zhí)行操作Oracle 代碼讀寫。
使用動態(tài)SGA 基礎結(jié)構(gòu)時,可以在不關(guān)閉實例的情況下更改數(shù)據(jù)庫緩沖區(qū)高速緩存、共享池、大型池和Java 池和Streams 池的大小。
Oracle 數(shù)據(jù)庫使用初始化參數(shù)創(chuàng)建并配置內(nèi)存結(jié)構(gòu)。例如,SGA_TARGET參數(shù)用于指定
SGA 可用的總空間量。如果SGA_TARGET設置為0,則會禁用“自動共享內(nèi)存管理”。

?

進程結(jié)構(gòu)

調(diào)用應用程序或Oracle 工具時,如調(diào)用Enterprise Manager 時,Oracle 服務器會通過創(chuàng)建服務器進程來執(zhí)行應用程序發(fā)出的命令。Oracle 服務器還會針對一個實例創(chuàng)建一組后臺進程。這些進程不僅彼此進行交互操作,還與操作系統(tǒng)進行交互操作,這樣可以管理內(nèi)存結(jié)構(gòu),通過異步執(zhí)行I/O 操作將數(shù)據(jù)寫入磁盤,而且還可以執(zhí)行其它所需的任務。存在哪些后臺進程取決于數(shù)據(jù)庫中當前使用的功能。

?

Oracle 實例管理

Oracle 數(shù)據(jù)庫服務器由Oracle 數(shù)據(jù)庫和Oracle 實例組成。Oracle 實例由稱為系統(tǒng)全局區(qū)(SGA) 的內(nèi)存結(jié)構(gòu)和后臺進程構(gòu)成,這些后臺進程可以處理實例運行中涉及的大量后臺任務。以下是最常見的后臺進程:
? 系統(tǒng)監(jiān)視器(SMON):出現(xiàn)故障后啟動實例時執(zhí)行崩潰恢復任務
? 進程監(jiān)視器(PMON):用戶進程失敗時執(zhí)行進程清理任務
? 數(shù)據(jù)庫寫進程(DBWn):將修改后的塊從數(shù)據(jù)庫緩沖區(qū)高速緩存寫入磁盤中的數(shù)據(jù)
文件
? 檢查點(CKPT):通過更新數(shù)據(jù)庫的所有數(shù)據(jù)文件和控制文件指出最新的檢查點
? 日志寫進程(LGWR):將重做日志條目寫入磁盤
? 歸檔進程(ARCn):發(fā)生日志切換時將重做日志文件復制到歸檔存儲器

?

服務器進程和數(shù)據(jù)庫緩沖區(qū)高速緩存

處理某個查詢時,Oracle 服務器進程會在數(shù)據(jù)庫緩沖區(qū)高速緩存中查找它所需的所有數(shù)據(jù)塊。如果未在數(shù)據(jù)庫緩沖區(qū)高速緩存中找到數(shù)據(jù)塊,服務器進程會從數(shù)據(jù)文件中讀取數(shù)據(jù)塊,并在數(shù)據(jù)庫緩沖區(qū)高速緩存中添加一個副本。因為關(guān)于同一數(shù)據(jù)塊的后續(xù)請求可能會在內(nèi)存中找到該數(shù)據(jù)塊,因此,這些請求可能不需要進行物理讀操作。Oracle 服務器使用最近用過的算法騰出最近未訪問的緩沖區(qū),以便在數(shù)據(jù)庫緩沖區(qū)高速緩存中為新數(shù)據(jù)塊提供空間。
緩沖區(qū)高速緩存中的緩沖區(qū)可能處于以下四種狀態(tài)之一:
? 已連接:可防止多個會話同時對同一數(shù)據(jù)塊進行寫操作。此時,其它會話正等待訪問該塊。
? 干凈:緩沖區(qū)現(xiàn)已解除連接,如果沒有再次引用當前內(nèi)容(數(shù)據(jù)塊),該緩沖區(qū)是可以立即騰出的候選項。此時,不是緩沖區(qū)的內(nèi)容已與磁盤中存儲的數(shù)據(jù)塊內(nèi)容同步,就是緩沖區(qū)中包含塊的一致讀取(CR) 快照。
? 空閑或未使用實例剛剛啟動,緩沖區(qū)為空。此狀態(tài)與“干凈”狀態(tài)非常相似,不同之處在于緩沖區(qū)尚未使用。
? 灰數(shù)據(jù):緩沖區(qū)不再處于已連接狀態(tài),但是內(nèi)容(數(shù)據(jù)塊)已更改,DBWn必須先將內(nèi)容刷新到磁盤,才能騰出緩沖區(qū)。

?

物理數(shù)據(jù)庫結(jié)構(gòu)

構(gòu)成Oracle 數(shù)據(jù)庫的文件可分為以下幾類:
? 控制文件:包含關(guān)于數(shù)據(jù)庫本身的數(shù)據(jù)(即物理數(shù)據(jù)庫結(jié)構(gòu)信息)。這些文件對數(shù)據(jù)庫而言至關(guān)重要。沒有這些文件,就無法打開用于訪問數(shù)據(jù)庫數(shù)據(jù)的數(shù)據(jù)文件。
? 數(shù)據(jù)文件:包含數(shù)據(jù)庫中的用戶數(shù)據(jù)或應用程序數(shù)據(jù)。
? 聯(lián)機重做日志文件:用于進行數(shù)據(jù)庫實例恢復。如果數(shù)據(jù)庫已崩潰但未丟失任何數(shù)據(jù)文件,那么使用這些文件中的信息可以通過實例恢復數(shù)據(jù)庫。
要成功運行數(shù)據(jù)庫,以下附加文件非常重要:
? 參數(shù)文件:用于定義啟動實例時如何配置實例。
? 口令文件:用于將用戶遠程連接到數(shù)據(jù)庫后執(zhí)行管理任務。
? 備份文件:用于數(shù)據(jù)庫恢復。當由于出現(xiàn)介質(zhì)故障或由于用戶錯誤而損壞或刪除了原始文件時,通常需要還原備份文件。
? 歸檔日志文件:包含實例生成的數(shù)據(jù)更改(重做操作)的實時歷史記錄。使用這些文件和數(shù)據(jù)庫備份可以恢復丟失的數(shù)據(jù)文件。也就是說,使用歸檔日志可以恢復還原的數(shù)據(jù)文件。

? 跟蹤文件:每一個服務器和后臺進程都可以對關(guān)聯(lián)的跟蹤文件進行寫操作。如果在進程中檢測到內(nèi)部錯誤,進程就會將關(guān)于錯誤的信息轉(zhuǎn)儲到進程的跟蹤文件。寫入跟蹤文件的某些信息專門供數(shù)據(jù)庫管理員使用,另一些信息則供Oracle 支持服務部門使用。
? 預警日志文件這些是特殊的跟蹤文件,又稱為預警日志。數(shù)據(jù)庫預警日志是按時間順序列出的消息日志和錯誤日志。Oracle 建議您查看這些文件。

?

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

一個數(shù)據(jù)庫可劃分為多個邏輯存儲單元,這些單元稱為表空間,表空間可用于對相關(guān)邏輯結(jié)構(gòu)進行分組。每一個數(shù)據(jù)庫都按邏輯方式劃分為一個或多個表空間。可以為每一個表空間顯式創(chuàng)建一個或多個數(shù)據(jù)文件,這樣可在表空間中按物理方式存儲所有邏輯結(jié)構(gòu)的數(shù)據(jù)。
注:還可以創(chuàng)建大文件表空間,這種表空間只有一個數(shù)據(jù)文件,但這個數(shù)據(jù)文件非常大(最多可包含40 億個數(shù)據(jù)塊)。傳統(tǒng)的小文件表空間(默認值)可以包含多個數(shù)據(jù)文件,但這些文件不可能這么大。有關(guān)大文件表空間的詳細信息,請參閱《數(shù)據(jù)庫管理員指南》。

?

SYSTEM和SYSAUX表空間

每一個Oracle 數(shù)據(jù)庫都包含SYSTEM表空間和SYSAUX表空間。這兩個表空間是在創(chuàng)建數(shù)據(jù)庫時創(chuàng)建的。系統(tǒng)默認值是創(chuàng)建小文件表空間。也可以創(chuàng)建大文件表空間,這樣可通過Oracle 數(shù)據(jù)庫管理超大文件(最大為8 EB)。
表空間的狀態(tài)可以是聯(lián)機(可訪問)或脫機(不可訪問)。打開數(shù)據(jù)庫時SYSTEM表空間始終處于聯(lián)機狀態(tài)。這個表空間可存儲支持數(shù)據(jù)庫核心功能的表,如數(shù)據(jù)字典表。
SYSAUX表空間是SYSTEM表空間的輔助表空間。SYSAUX表空間可存儲許多的數(shù)據(jù)庫組件,要使所有數(shù)據(jù)庫組件正常運行,該表空間必須處于聯(lián)機狀態(tài)。

?

段、區(qū)和塊

數(shù)據(jù)庫對象(如表和索引)以段形式存儲在表空間中。每個段包含一個或多個區(qū)。區(qū)由相鄰的數(shù)據(jù)塊組成,這意味著每一個區(qū)只可以存在于一個數(shù)據(jù)文件中。數(shù)據(jù)塊是數(shù)據(jù)庫中最小的I/O 單元。
數(shù)據(jù)庫從操作系統(tǒng)(OS) 請求數(shù)據(jù)塊集時,OS 會將數(shù)據(jù)塊集映射到存儲設備上的實際文件系統(tǒng)或磁盤塊。因此,您不必了解數(shù)據(jù)庫中任何數(shù)據(jù)的物理地址。這還意味著一個數(shù)據(jù)文件可以條帶化或鏡像在多個磁盤上。
可以在創(chuàng)建數(shù)據(jù)庫時設置數(shù)據(jù)塊的大小。對大多數(shù)數(shù)據(jù)庫而言,默認的8 KB 塊大小是足夠的。當數(shù)據(jù)庫支持擁有大型表和索引的數(shù)據(jù)倉庫應用程序時,最好設置更大的塊大小。
當數(shù)據(jù)庫支持執(zhí)行隨機讀寫的事務處理應用程序時,最好指定更小的塊大小。塊大小的最大值取決于OS。最小的Oracle 塊大小為2 KB,這個值很少使用(在任何時候)。
表空間可以有不同的塊大小。但是,這只適用于可移動表空間。有關(guān)詳細信息,請參閱《數(shù)據(jù)庫管理員指南》。

?

邏輯和物理數(shù)據(jù)庫結(jié)構(gòu)

Oracle 數(shù)據(jù)庫是按單元處理的數(shù)據(jù)的集合。數(shù)據(jù)庫的一般用途是存儲和檢索相關(guān)信息。數(shù)據(jù)庫具有邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。
表空間
數(shù)據(jù)庫被分為多個邏輯存儲單元,這些單元稱為表空間,表空間可以將相關(guān)的邏輯結(jié)構(gòu)分組在一起。例如,為了簡化某些管理操作,表空間通常用于將應用程序的所有對象分組。此時,對應用程序數(shù)據(jù)可以使用一個表空間,對應用程序索引可以使用另一個表空間。
數(shù)據(jù)庫、表空間和數(shù)據(jù)文件
在幻燈片中會演示數(shù)據(jù)庫、表空間和數(shù)據(jù)文件之間的關(guān)系。每一個數(shù)據(jù)庫按邏輯方式劃分為一個或多個表空間。可以為每個表空間顯式創(chuàng)建一個或多個數(shù)據(jù)文件,這樣可在表空間中按物理方式存儲所有邏輯結(jié)構(gòu)的數(shù)據(jù)。如果它是TEMPORARY表空間而不是數(shù)據(jù)文件,則這個表空間擁有一個臨時文件。

方案
方案是數(shù)據(jù)庫用戶擁有的數(shù)據(jù)庫對象的集合。方案對象是直接引用數(shù)據(jù)庫數(shù)據(jù)的邏輯結(jié)構(gòu)。方案對象包括諸如表、視圖、序列、存儲過程、同義詞、索引、集群和數(shù)據(jù)庫鏈接這樣的結(jié)構(gòu)。一般而言,方案對象包括應用程序在數(shù)據(jù)庫中創(chuàng)建的任何內(nèi)容。
數(shù)據(jù)塊
Oracle 數(shù)據(jù)庫的數(shù)據(jù)以最細的粒度級存儲在數(shù)據(jù)塊中。一個數(shù)據(jù)塊對應于磁盤上特定字節(jié)數(shù)的物理數(shù)據(jù)庫空間。每個表空間的數(shù)據(jù)塊大小是在創(chuàng)建表空間時指定的。數(shù)據(jù)庫可以使用和分Oracle 數(shù)據(jù)塊中的空閑數(shù)據(jù)庫空間。
區(qū)
塊的上一級邏輯數(shù)據(jù)庫空間稱為區(qū)。區(qū)是特定數(shù)目的相鄰數(shù)據(jù)塊(在一次分配中獲取的),用于存儲特定類型的信息。

區(qū)之上的邏輯數(shù)據(jù)庫存儲級別稱為段。段代表為特定邏輯結(jié)構(gòu)分配的區(qū)集。例如,各種類型的段包括:
? 數(shù)據(jù)段:每一個非集群、非索引的組織表都有一個數(shù)據(jù)段。該表的所有數(shù)據(jù)都存儲在表數(shù)據(jù)段的區(qū)中。對于分區(qū)表,每一個分區(qū)都有一個數(shù)據(jù)段。每一個集群都有一個數(shù)據(jù)段。集群中每個表的數(shù)據(jù)都存儲在集群的數(shù)據(jù)段中。
? 索引段:每一個索引都有一個索引段,用于存儲索引的所有數(shù)據(jù)。對于已分區(qū)索引,每一個分區(qū)都有一個索引段。
? 還原段:數(shù)據(jù)庫管理員會創(chuàng)建一個UNDO表空間,用于臨時存儲還原信息。還原段中的信息用于生成一致讀取信息,在數(shù)據(jù)庫恢復過程中,還可用于回退用戶的未提交事務。
? 臨時段:當SQL 語句需要一個臨時工作區(qū)來完成執(zhí)行時,Oracle 數(shù)據(jù)庫會創(chuàng)建臨時段。語句結(jié)束執(zhí)行后,臨時段的區(qū)會返回到實例,以便供將來使用。請為每個用戶指定一個默認臨時表空間,或指定一個在數(shù)據(jù)庫級別使用的默認臨時表空間。
Oracle 數(shù)據(jù)庫可動態(tài)分配空間。如果段的現(xiàn)有區(qū)已滿,則會添加更多的區(qū)。由于區(qū)是按需分配的,因此,段的區(qū)在磁盤上不一定是相鄰的。

?

數(shù)據(jù)庫體系結(jié)構(gòu):結(jié)構(gòu)化組件概要

轉(zhuǎn)載于:https://my.oschina.net/u/242764/blog/377301

總結(jié)

以上是生活随笔為你收集整理的Oracle认识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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