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 記錄的記錄是有限的),可以把寫滿的 redo log 進行備份。-- 它採取了【多個分組,輪流迴圈寫入;每組多成員,互為映象;儲存更多資訊,使用歸檔模式】的方式,保證了記錄安全性。
-- 在生產環境中,需要日誌調整到不同的磁碟中,這樣,即使某個檔案損壞,或某塊磁碟損壞,都可以通過映象的日誌檔案對資料進行恢復。
-- 檢視 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;
-- oracle 的歸檔模式預設是關閉的其他檔案-- 歸檔模式會占用大量空間
-- 但他們用更多的空間,儲存更多的歷史記錄,保障更大的安全性
-- 檢視狀態
archive log list;
-- 切換資料庫到歸檔模式
alter
database archivelog;
-- 啟動
archive log start;
-- 檢視狀態
archive log list;
從 oracle 內部管理資料的角度,可以將 oracle 分為4個元件:
表空間(tablespace)。表空間是 oracle 中進行維護的最基本單位。 資料庫是由若干表空間組成的。乙個表空間至少對應乙個物理檔案。
-- 檢視表空間資訊段(segment)。包括索引段、資料段等。 表空間被劃分為若干區域,每個區域負責存放不同型別資料,這些區域這就是段。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 ***;
區(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資料庫在邏輯上是由多個表間組成的,表空間中儲存的物件叫段,比如資料段,索引段,和回退段。段由區組成,區是磁碟分配的最小單位...