day06:02oracle体系结构_存储结构
?存儲(chǔ)結(jié)構(gòu)
一? 邏輯結(jié)構(gòu)
?段、區(qū)、塊
?Segments/Extents/DataBlocks
? 從存儲(chǔ)的角度只有段
? ?記錄到數(shù)據(jù)字典
? ?創(chuàng)建段
1、表空間 tablespace
? 表空間是數(shù)據(jù)庫的最大邏輯存儲(chǔ)結(jié)構(gòu),和物理數(shù)據(jù)文件相對(duì)應(yīng),一個(gè)表空間可以由多個(gè)數(shù)據(jù)文件組成,一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間
? 主要的幾個(gè)表空間:
SYSAUX: 系統(tǒng)輔助表空間,由ORACLE自行維護(hù)
UNDO: 存放撤銷信息的表空間
USERS; 建議用戶使用的表空間,scott用戶的表就在這個(gè)表空間上
建議:不同應(yīng)用系統(tǒng)存放在不同的表空間上,不同的表空間的文件放在不同的磁盤上,減少并發(fā),提高性能。
??
?段 一個(gè)獨(dú)立的邏輯存儲(chǔ)結(jié)構(gòu),用于存儲(chǔ)表、索引或簇等占用空間的對(duì)象,一個(gè)段只能屬于一個(gè)數(shù)據(jù)庫對(duì)象
? 有以下幾種段:
? ?數(shù)據(jù)段
? ? 數(shù)據(jù)段存放的是數(shù)據(jù)表中的數(shù)據(jù),數(shù)據(jù)段的增大時(shí)向數(shù)據(jù)段增加區(qū),創(chuàng)建表時(shí),系統(tǒng)自動(dòng)創(chuàng)建一個(gè)同名的段
? ?索引段
? ? 包含了用于提高系統(tǒng)性能的索引,一旦建立索引,系統(tǒng)自動(dòng)創(chuàng)建一個(gè)同名的索引段
? ?回滾段
? ? 也叫撤銷段,該段保存了回滾的條目,oracle將修改前的舊數(shù)據(jù)存放在回滾段中,利用這個(gè),可以撤銷未提交的操作
? ?臨時(shí)段
? ? 當(dāng)執(zhí)行創(chuàng)建索引、查詢等操作時(shí),系統(tǒng)會(huì)使用一些臨時(shí)空間用來保存解析過的查詢語句以及在排序過程中產(chǎn)生的臨時(shí)數(shù)據(jù)
?區(qū): 段空間分配時(shí)最小的單位,由連續(xù)的數(shù)據(jù)塊組成
?塊 :組成區(qū)的最小單位,通常是操作系統(tǒng)數(shù)據(jù)塊的整數(shù)倍,ORACLE支持同時(shí)使用多種大小
SQL> col name for a30; SQL> col value for a30; SQL> select name,value from v$parameter where name='db_block_size'; NAME VALUE ------------------------------ ------------------------------ db_block_size 8192
塊組成部分:
? ?塊頭 存放數(shù)據(jù)塊的基本信息,如塊的物理地址,塊所屬段的類型
? ?表目錄 如果是數(shù)據(jù)表,存放數(shù)據(jù)表的相關(guān)信息
? ?行目錄 如果有行數(shù)據(jù),那么存儲(chǔ)行信息
? ?空余空間 新行插入和存在行的更新
? ?行數(shù)據(jù) 存放表數(shù)據(jù)和索引數(shù)據(jù)
表空間: 大于數(shù)據(jù)文件的邏輯概念
分類:
?基本表空間: 一般為用戶使用的永久性表空間,存儲(chǔ)用戶永久性數(shù)據(jù)
?臨時(shí)表空間: 臨時(shí)表空間是一個(gè)磁盤空間,存儲(chǔ)用戶在執(zhí)行ORDER BY等語句進(jìn)行排序或匯總時(shí)產(chǎn)生的臨時(shí)數(shù)據(jù),默認(rèn)情況下所有用戶都使用temp作為默認(rèn)的臨時(shí)表空間,也允許使用其他臨時(shí)表空間作為默認(rèn)臨時(shí)表空間,需要在創(chuàng)建用戶時(shí)指定
?大文件表空間: 存儲(chǔ)大型數(shù)據(jù)
?非標(biāo)準(zhǔn)數(shù)據(jù)塊表空間:在一個(gè)實(shí)例中創(chuàng)建數(shù)據(jù)庫大小不同的表空間
?撤銷表空間:存儲(chǔ)事務(wù)的撤銷數(shù)據(jù),在數(shù)據(jù)恢復(fù)時(shí)使用,一個(gè)數(shù)據(jù)庫中可以有多個(gè)撤銷表空間,但是數(shù)據(jù)庫一次只能使用一個(gè),默認(rèn)使用自動(dòng)創(chuàng)建的undotbs撤銷表空間。
默認(rèn):
?SYSTEM: 數(shù)據(jù)字典
?SYSAUX: 輔助系統(tǒng)表空間
?UNDOTBS1: UNDO回滾段,存儲(chǔ)修改前的數(shù)據(jù)
?TEMP: 臨時(shí)表空間,會(huì)話使用
?USERS:?
狀態(tài)屬性:
?ONLINE: ?在線,允許訪問該表空間中的數(shù)據(jù)
?OFFLINE: 離線,不允許訪問該表空間的數(shù)據(jù)
?READ ONLY: 只讀,只允許讀
? 必須處于ONLINE狀態(tài)
? 不能包含任何事務(wù)的回滾段
? 不能處于在線備份期間
?READ WRITE: 讀寫,可以讀寫
? 必須處于ONLINE狀態(tài)
2、段管理
?使用自動(dòng)段管理,使用位圖進(jìn)行管理
3、區(qū)管理
?區(qū)管理方法為每個(gè)表空間設(shè)置,應(yīng)用于表空間中的所有段,可使用字典管理或者本地管理,但是請(qǐng)不要使用字典管理。
?字典管理:
? 使用兩張表對(duì)區(qū)進(jìn)行管理
?本地管理:
? 使用位圖來管理區(qū)
使用uniform size指定每次分配的區(qū)大小
#創(chuàng)建一個(gè)區(qū)大小為150m的表空間dabiao SQL> create tablespace dabiao datafile '/u01/app/oracle/oradata/orcl/dabiao_01.dbf' size 1g extent management local uniform size 150m;#查看創(chuàng)建好的表空間中數(shù)據(jù)文件的大小 SQL> select name,bytes/1024/1024 from v$datafile;#查看表空間的信息 SQL> select tablespace_name, next_extent,min_extlen from dba_tablespaces;#創(chuàng)建一個(gè)區(qū)大小為150k的表空間xiaobiao SQL> create tablespace xiaobiao datafile '/u01/app/oracle/oradata/orcl/xiaobiao_01.dbf' size 2g extent management local uniform size 150k;#查看創(chuàng)建好的表空間中數(shù)據(jù)文件的大小 SQL> select name,bytes/1024/1024 from v$datafile;#查看表空間信息 SQL> select tablespace_name,next_extent,min_extlen from dba_tablespaces;#OEACLE公司建議使用autoallcate關(guān)鍵字 SQL> create tablespace xiaobiao1 datafile '/u01/app/oracle/oradata/orcl/all_01.dbf' size 2g extent management local autoallocate;?
二 物理結(jié)構(gòu)
數(shù)據(jù)文件
?操作系統(tǒng)塊 os blocks
數(shù)據(jù)庫的幾類文件
?CONTROL FILE ?控制文件 ?在線
?DATA FILE ? 數(shù)據(jù)文件 ?在線
?REDO LOG FILE ?重做日志文件 在線
?PARAMETER FILE ?參數(shù)文件 ?在線
?
?ARCHIVE LOG FILE 歸檔日志文件 離線
?PASSWORD FILE ?密碼文件 ?離線
?alert file ? 告警文件
?trace file ? ?追蹤文件
?
?在線文件 文件實(shí)時(shí)改變,不能進(jìn)行操作
?離線文件 文件生成后不會(huì)改變
?安全:
? 復(fù)用:一個(gè)不行就兩個(gè)
? 分散:一個(gè)地方不保險(xiǎn)就整兩個(gè)地方
1、控制文件 (control file)
==========================
?? ?每個(gè)數(shù)據(jù)庫都有一個(gè)唯一的控制文件,其中包含關(guān)于數(shù)據(jù)庫本身的數(shù)據(jù),可以維護(hù)多個(gè)副本以防止完全丟失,還可以包含與備份相關(guān)的元數(shù)據(jù),控制文件對(duì)數(shù)據(jù)庫至關(guān)重要,沒有控制文件,數(shù)據(jù)庫無法打開
作用:
?用于記錄數(shù)據(jù)庫的物理結(jié)構(gòu),屬于重要角色,沒有控制文件,實(shí)例立即崩潰,數(shù)據(jù)庫的啟動(dòng)和正常運(yùn)行都離不開控制文件。
包含的內(nèi)容:
?數(shù)據(jù)庫物理結(jié)構(gòu)信息
?數(shù)據(jù)庫歸檔歷史信息
?各個(gè)數(shù)據(jù)文件的SCN號(hào)和系統(tǒng)檢查點(diǎn)信息
?RMAN元數(shù)據(jù)
?
性質(zhì):
?控制文件是一個(gè)二進(jìn)制文件,不可以通過文本編輯器編輯,該文件由oracle自行維護(hù),oracle建議至少有兩份冗余,并且放在不同的磁盤上。
2、數(shù)據(jù)文件
=====================================================
?? ?包含數(shù)據(jù)庫的用戶或應(yīng)用程序數(shù)據(jù),以及元數(shù)據(jù)和數(shù)據(jù)字典
作用:
?用來存儲(chǔ)實(shí)際數(shù)據(jù),數(shù)據(jù)文件是存儲(chǔ)數(shù)據(jù)的物理概念。
數(shù)據(jù)文件的狀態(tài)
?ONLINE: ?聯(lián)機(jī)狀態(tài)
?OFFLINE: 脫機(jī)狀態(tài)
?OFFLINE DROP: 刪除數(shù)據(jù)文件
?
?將數(shù)據(jù)文件OFFLINE時(shí),不影響表空間的狀態(tài),但是表空間的狀態(tài)會(huì)影響到數(shù)據(jù)文件的狀態(tài)。
3、 日志文件 (redo??log)
============================================================
?? ?允許數(shù)據(jù)庫實(shí)例恢復(fù),如果數(shù)據(jù)庫服務(wù)器崩潰并且沒有丟失任何數(shù)據(jù)文件,實(shí)例可以用這些文件中的信息恢復(fù)數(shù)據(jù)庫
作用:記錄數(shù)據(jù)文件的每一個(gè)變化過程,保證數(shù)據(jù)庫一致性
包含:
?三組redo log
?每組中有多個(gè)成員
?成員和成員之間是完全相同的關(guān)系
?無需備份,無法備份
?使用復(fù)用來保護(hù)
?
狀態(tài):
?unused ?剛啟用的時(shí)候,還沒有循環(huán)過來
?inactive 沒有啟用
?active ?啟用
?current ?當(dāng)前
?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的day06:02oracle体系结构_存储结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: day06 : 01 Oracle 体
- 下一篇: 06day 03cdbpdb也成为 多租