初學Oracle之體系結構

2021-08-07 01:13:10 字數 4319 閱讀 4136

oracle 採取的是 client/server 架構。

oracle 服務端分為兩部分:

instance例項

database資料庫

例項, 又稱為資料庫引擎,由sga(system global area, 系統全域性區)一系列後台程序組成。 它需要啟動才會生成,用來載入並管理乙個資料庫。

資料庫, 是儲存在硬碟上的檔案集合,它是資料的主要載體。

$oraclebase\oradata\[資料庫名字]\
服務啟動的大致過程:

[讀取] 讀取系統的 oracle_sid 環境變數,確定要啟動的例項名字,比如為 xxoo

[載入] 從$orabase/admin/xxoo$ora_home/database/spfilexxoo.ora等位置載入相關配置檔案。配置檔案的名字是根據 sid 來定義的。

[啟動] 從配置檔案中,讀取相關資訊,比如資料庫名字、資料庫控制檔案位置、sga 等資訊,並根據這些,初始化資料庫載入需要的記憶體空間(sga)相關程序

[裝載] 根據配置檔案中讀取的資料庫資訊,找到各種資料檔案位置,並裝載資料庫。

[啟動] 進行資料校驗等,如果沒有問題,啟動資料庫。

可以通過檢視啟動過程協助理解:

-- 首先,登入 sys 使用者,只有管理員才有完全操縱資料庫的權力

-- shutdown 用來關閉。如果不帶引數,預設為 normal

---- immediate 表示立即關閉,如果有未處理完操作,回滾並斷開

---- normal 表示等待所有連線斷開才關閉資料庫

---- 其他引數,略

shutdown immediate;

-- 啟動資料庫,分解為三個動作:

---- 啟動例項

---- 利用啟動的例項去掛載資料庫

---- 校驗並開啟資料庫

-- 只有完全開啟,才能進行完全的資料操作

-- 也可以指定引數,啟動到某個階段。這是在維護資料庫中使用的命令。

startup -- 如果不加引數,

startup nomount -- 啟動到 nomount 階段

startup mount -- 啟動到 mount 階段

-- 當然,也可以這樣分步啟動:

startup nomount

alter

database mount

alter

database open

資料庫是儲存在作業系統的一系列檔案。

預設安裝情況下,這些檔案都在$oracle_base/oradata資料夾下:

oradata/

└── orcl [資料庫的名字]

├── control01.ctl

├── control02.ctl

├── example01.dbf

├── redo01.log

├── redo02.log

├── redo03.log

├── sysaux01.dbf

├── system01.dbf

├── temp01.dbf

├── undotbs01.dbf

└── users01.dbf

從檔案角度分析,乙個資料庫包含下面幾類(元件):

控制檔案(control file)。記錄資料庫的物理結構和其他資訊,如資料庫名稱、各種檔案位置等。多副本。

select * from v$controlfile;
資料檔案(data file)。用來儲存資料的檔案,會自動擴張。資料以塊為單位進行儲存。
select name, status, enabled from v$datafile;
重做日誌檔案(redo log)。用來記錄使用者的所有操作,為了備份恢復。 乙個資料庫至少有兩個日誌組,每個日誌組至少有乙個成員,成員之間是映象關係。 使用者的操作會記錄到 redo log 中,當乙個組記錄滿了,會自動切換到下乙個組。輪流迴圈。

-- 需要理解 oracle 日誌的思路:

-- 它採取了【多個分組,輪流迴圈寫入;每組多成員,互為映象;儲存更多資訊,使用歸檔模式】的方式,保證了記錄安全性。

-- 在生產環境中,需要日誌調整到不同的磁碟中,這樣,即使某個檔案損壞,或某塊磁碟損壞,都可以通過映象的日誌檔案對資料進行恢復。

-- 檢視 redo log 日誌組

select

*from v$log;

select

*from v$logfile;

-- 增加/刪除 日誌組

alter

database add logfile 'd:/sss.rlog'

size 100m;

alter

database drop logfile 'd:/sss.rlog'

;-- 清空日誌組

alter

database clear logfile group 1;

alter

database clear unarchived logfile group 1;

-- 為日誌組 增加/刪除 成員

alter

database add logfile member 'd:/ssss.log'

to group 1;

alter

database drop logfile member 'd:/ssss.log'

;

-- 重新命名檔案

-- 首先,在資料夾管理器裡,將檔案改名,比如,改為 ssss.redolog

-- 其次,重啟資料庫到 mount 狀態,然後執行重新命名命令

alter

database rename file 'd:/ssss.log'

to 'd:/ssss.redolog'

;-- 日誌組一般是在寫滿的時候自動切換。

-- 我們也可以手動切換

alter system switch logfile;

歸檔日誌檔案。是重做日誌的補充(redo log 記錄的記錄是有限的),可以把寫滿的 redo log 進行備份。

-- oracle 的歸檔模式預設是關閉的

-- 歸檔模式會占用大量空間

-- 但他們用更多的空間,儲存更多的歷史記錄,保障更大的安全性

-- 檢視狀態

archive log list;

-- 切換資料庫到歸檔模式

alter

database archivelog;

-- 啟動

archive log start;

-- 檢視狀態

archive log list;

其他檔案

從 oracle 內部管理資料的角度,可以將 oracle 分為4個元件:

表空間(tablespace)。表空間是 oracle 中進行維護的最基本單位。 資料庫是由若干表空間組成的。乙個表空間至少對應乙個物理檔案。

-- 檢視表空間資訊

select

*from v$tablespace;

-- 檢視所有表空間跟檔案對應關係

select file_name, blocks, tablespace_name from dba_data_files;

-- 建立表空間

create

tablespace

*** datafile 'd:/sss.dbf'

size 50m

autoextend on

next 50m

maxsize 1024m;

-- 建立臨時表空間

create temporary tablespace yyy

tempfile 'd:/another_tmp.dbf'

;-- 刪除表空間

drop

tablespace ***;

段(segment)。包括索引段、資料段等。 表空間被劃分為若干區域,每個區域負責存放不同型別資料,這些區域這就是段。

區(extend)。為儲存資料分配的連續空間。

塊(block)。資料塊是 oracle 資料庫最小的邏輯單元。 它代表在讀寫操作的時候,每次處理的資料大小是多少。 正常情況下,它是作業系統塊的整數倍,預設是 8 kb。

show parameters block;

Oracle之體系結構

oracle資料庫是資料的物理儲存。包括 資料庫檔案ora或者dbf 控制檔案 聯機日誌 引數檔案 其實oracle資料庫的概念和其他資料庫不一樣,這裡的資料庫是乙個作業系統只有乙個庫。可以看作oracle就只有乙個大資料庫。乙個oracle例項 oracle instance 有一系列的後台程序 ...

Oracle體系結構之 邏輯結構

一 oracle 邏輯結構簡介 oracle的邏輯結構包括表空間 tablespace 段 segment 資料塊 data block 以及模式物件 schema oracle 資料庫在邏輯上是由多個表間組成的,表空間中儲存的物件叫段,比如資料段,索引段,和回退段。段由區組成,區是磁碟分配的最小單...

Oracle體系結構之 邏輯結構

一 oracle 邏輯結構簡介 oracle的邏輯結構包括表空間 tablespace 段 segment 資料塊 data block 以及模式物件 schema oracle資料庫在邏輯上是由多個表間組成的,表空間中儲存的物件叫段,比如資料段,索引段,和回退段。段由區組成,區是磁碟分配的最小單位...