Oracle數(shù)據(jù)庫、表空間與存儲結(jié)構(gòu)圖文詳解
一、核心概念:像理解倉庫一樣理解Oracle
想象一下一個大倉庫(數(shù)據(jù)庫),這個倉庫被劃分成了幾個大的區(qū)域(表空間),比如“家電區(qū)”、“食品區(qū)”。每個大區(qū)域里放著很多貨架(段),比如“電視貨架”、“冰箱貨架”。每個貨架又是由一連串的貨位(區(qū)) 組成的,而最小的存儲單位就是每一個貨位(數(shù)據(jù)塊)。
1. 數(shù)據(jù)塊 (Data Block)
- 是什么:Oracle邏輯存儲結(jié)構(gòu)中最小的邏輯單位,就像倉庫中最小的一個貨位。
- 關(guān)鍵點(diǎn):
- 大小由參數(shù)
DB_BLOCK_SIZE決定。 - 一個數(shù)據(jù)塊對應(yīng)一個或多個物理塊(操作系統(tǒng)塊)。
- 結(jié)構(gòu)包括塊頭和存儲區(qū)兩部分。
- 大小由參數(shù)
2. 區(qū) (Extent)
- 是什么:由一組連續(xù)的數(shù)據(jù)塊結(jié)合而成。是Oracle存儲分配的最小單位。就像一組連續(xù)的貨位組成了一個完整的貨位區(qū)間。
3. 段 (Segment)
- 是什么:由一個或多個區(qū)組成,是數(shù)據(jù)庫對象的存儲載體。就像一整個貨架。
- 種類(PPT中明確提到的):
- 數(shù)據(jù)段:存儲表中所有數(shù)據(jù)(如一張學(xué)生表的所有數(shù)據(jù))。
- 索引段:存儲表上最佳查詢的所有索引數(shù)據(jù)。
- 臨時段:存儲表排序操作期間建立的臨時表的數(shù)據(jù)。
- 回滾段:存儲數(shù)據(jù)修改之前的位置和值(用于回滾事務(wù))。
- 注意:視圖(View)不是段,它只是一個虛擬表,不存儲數(shù)據(jù)。
4. 表空間 (Tablespace)
- 是什么:數(shù)據(jù)庫的最大邏輯劃分區(qū)域。就是一個最大的邏輯區(qū)域。
- 關(guān)鍵點(diǎn):
- 一個表空間由一個或多個數(shù)據(jù)文件組成。
- 一個數(shù)據(jù)文件只屬于一個表空間。
- 表空間的大小等于其所有數(shù)據(jù)文件大小之和。
- 默認(rèn)表空間(創(chuàng)建數(shù)據(jù)庫時自動生成):
SYSTEM:系統(tǒng)表空間SYSAUX:輔助系統(tǒng)表空間UNDO:撤銷表空間USERS:用戶表空間
5. 數(shù)據(jù)庫 (Database)
- 是什么:以上所有內(nèi)容的物理和邏輯集合。就是整個倉庫。
- 物理結(jié)構(gòu):由三種核心文件構(gòu)成:
- 數(shù)據(jù)文件 (.dbf):真正存儲數(shù)據(jù)的地方。
- 控制文件 (.ctl):數(shù)據(jù)庫中最小但最重要的文件,記錄數(shù)據(jù)庫的物理結(jié)構(gòu)。
- 日志文件 (.log):記錄所有數(shù)據(jù)變化,用于恢復(fù)。
- 重做日志文件:記錄實(shí)時變化。
- 歸檔日志文件:重做日志的歷史備份。
二、動手實(shí)踐:如何創(chuàng)建數(shù)據(jù)庫和表空間
方法一:界面方式(推薦新手使用)
創(chuàng)建數(shù)據(jù)庫:使用DBCA(數(shù)據(jù)庫配置助手)工具。
這是一個圖形化向?qū)?,按照步驟選擇數(shù)據(jù)庫名稱、字符集、存儲位置等即可輕松完成創(chuàng)建。
啟動DBCA,進(jìn)入cmd命令行輸入dbca;在搜索欄搜索dbca文件以管理員的方式運(yùn)行(推薦使用后者)出現(xiàn)“歡迎使用”界面,如圖所示,單擊“下一步”按鈕進(jìn)入創(chuàng)建數(shù)據(jù)庫的向?qū)А?/p>

在“操作”窗口中,用戶可以選擇要執(zhí)行的操作,這里選中“創(chuàng)建數(shù)據(jù)庫”選項,如圖所示,單擊“下一步”按鈕。

在“數(shù)據(jù)庫模板”窗口中,選擇相應(yīng)選項后單擊“顯示詳細(xì)資料”按鈕可查看該數(shù)據(jù)庫模板的各種信息。這里選擇“一般用途或事務(wù)處理”選項,如圖所示,單擊“下一步”按鈕。

在“數(shù)據(jù)庫標(biāo)識”窗口中輸入“全局?jǐn)?shù)據(jù)庫名”和“SID”,如圖所示,單擊“下一步”按鈕。

在“管理選項”窗口中可以選擇配置Enterprise Manager企業(yè)管理器或者配置Database Control管理本地數(shù)據(jù)庫,這里保持默認(rèn)設(shè)置,如圖所示,單擊“下一步”按鈕。

在“數(shù)據(jù)庫身份證明”窗口中,將所有賬戶設(shè)置為同一管理口令,如圖所示,單擊“下一步”按鈕。

在“數(shù)據(jù)庫文件所在位置”窗口中,選擇“所有數(shù)據(jù)庫文件使用公共位置”,單擊“瀏覽”按鈕選擇數(shù)據(jù)庫文件的存放路徑,如圖所示,單擊“下一步”按鈕。

下一步

選擇你自己找的到的地方

注意勾選示例方案

在“初始化參數(shù)”和“數(shù)據(jù)庫存儲”窗口中也保持默認(rèn)配置,兩次單擊“下一步”按鈕。


在“創(chuàng)建選項”窗口中選擇“創(chuàng)建數(shù)據(jù)庫”選項,如圖3.9所示,單擊“完成”按鈕,之后會彈出確認(rèn)創(chuàng)建的對話框,單擊“確定”按鈕開始創(chuàng)建數(shù)據(jù)庫。

耐心等待

創(chuàng)建數(shù)據(jù)庫完畢后,系統(tǒng)會彈出窗口顯示相關(guān)的提示信息,如圖所示,需要在這一步解鎖SCOTT、SYSTEM、SYS賬戶并設(shè)置其口令,單擊窗口中的“口令管理”按鈕,彈出“口令管理”對話框。找到以上三個用戶賬戶,將“是否鎖定賬戶”一欄里的勾去掉,修改口令。

計算機(jī)管理->服務(wù)與應(yīng)用程序->服務(wù),注意將所有與Oracle有關(guān)的服務(wù)打開

創(chuàng)建表空間:使用navicat工具。
關(guān)于nvicat連接Oracle服務(wù)器的鏈接:http://chabaoo.cn/database/349734h29.htm
連接服務(wù)器,其他->表空間

新建表空間,輸入名稱、大小;注意下面的路徑、自動擴(kuò)展和下一個大小。

保存輸入表名稱

在用戶這里查看,沒有剛剛創(chuàng)建的話就新建一個

新建用戶,注意用戶名和表空間要與剛剛創(chuàng)建的表空間一致,保存。

之后就能查詢到創(chuàng)建的表空間。

方法二:命令方式(需掌握的核心技能)
手動創(chuàng)建數(shù)據(jù)庫(謹(jǐn)慎操作?。?/h4>
```sql
-- 1. 創(chuàng)建初始化參數(shù)文件(initmydb.ora),設(shè)置必要參數(shù)如:
DB_NAME=mydb
CONTROL_FILES=("E:\app\...\control01.ctl", "E:\app\...\control02.ctl")
...
-- 2. 連接并啟動實(shí)例到NOMOUNT狀態(tài)
CONN sys/password AS SYSDBA
STARTUP NOMOUNT pfile='E:\app\...\initmydb.ora';
-- 3. 執(zhí)行CREATE DATABASE命令(核心)
CREATE DATABASE mydb
LOGFILE GROUP 1 ('redo01.log') SIZE 50M,
GROUP 2 ('redo02.log') SIZE 50M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
CHARACTER SET ZHS16GBK -- 使用中文常用字符集
NATIONAL CHARACTER SET AL16UTF16
DATAFILE 'system01.dbf' SIZE 500M
SYSAUX DATAFILE 'sysaux01.dbf' SIZE 500M
UNDO TABLESPACE undotbs DATAFILE 'undotbs01.dbf' SIZE 200M
DEFAULT TABLESPACE users DATAFILE 'users01.dbf' SIZE 100M;
-- 4. 創(chuàng)建附加表空間(可選)
CREATE TABLESPACE mytbs DATAFILE 'mytbs01.dbf' SIZE 100M;
```
**注意**:手動創(chuàng)建極易出錯,如果出錯,需要**刪除所有已創(chuàng)建的數(shù)據(jù)文件**后重新運(yùn)行。
```sql
-- 1. 創(chuàng)建初始化參數(shù)文件(initmydb.ora),設(shè)置必要參數(shù)如:
DB_NAME=mydb
CONTROL_FILES=("E:\app\...\control01.ctl", "E:\app\...\control02.ctl")
...
-- 2. 連接并啟動實(shí)例到NOMOUNT狀態(tài)
CONN sys/password AS SYSDBA
STARTUP NOMOUNT pfile='E:\app\...\initmydb.ora';
-- 3. 執(zhí)行CREATE DATABASE命令(核心)
CREATE DATABASE mydb
LOGFILE GROUP 1 ('redo01.log') SIZE 50M,
GROUP 2 ('redo02.log') SIZE 50M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
CHARACTER SET ZHS16GBK -- 使用中文常用字符集
NATIONAL CHARACTER SET AL16UTF16
DATAFILE 'system01.dbf' SIZE 500M
SYSAUX DATAFILE 'sysaux01.dbf' SIZE 500M
UNDO TABLESPACE undotbs DATAFILE 'undotbs01.dbf' SIZE 200M
DEFAULT TABLESPACE users DATAFILE 'users01.dbf' SIZE 100M;
-- 4. 創(chuàng)建附加表空間(可選)
CREATE TABLESPACE mytbs DATAFILE 'mytbs01.dbf' SIZE 100M;
```
**注意**:手動創(chuàng)建極易出錯,如果出錯,需要**刪除所有已創(chuàng)建的數(shù)據(jù)文件**后重新運(yùn)行。
使用SQL命令創(chuàng)建表空間
這是最常用的命令操作,必須掌握: ```sql -- 創(chuàng)建一個名為`mytbs`的本地管理、自動段空間管理的表空間 CREATE TABLESPACE mytbs DATAFILE 'E:\app\oradata\mydb\mytbs01.dbf' -- 數(shù)據(jù)文件路徑 SIZE 100M -- 初始大小 AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED -- 自動擴(kuò)展 EXTENT MANAGEMENT LOCAL -- 本地化管理 SEGMENT SPACE MANAGEMENT AUTO; -- 段空間自動管理 -- 創(chuàng)建一個大數(shù)據(jù)文件表空間(BIGFILE) CREATE BIGFILE TABLESPACE liyu_big DATAFILE 'liyu_big.dbf' SIZE 2G; -- 修改表空間大小 ALTER TABLESPACE liyu_big RESIZE 1G; -- 重命名表空間(注意:SYSTEM和SYSAUX不能重命名) ALTER TABLESPACE liyu_2 RENAME TO new_liyu_2; -- 刪除表空間( INCLUDING CONTENTS 會同時刪除段數(shù)據(jù)) DROP TABLESPACE liyu_big INCLUDING CONTENTS AND DATAFILES; ```
三、總結(jié)與回顧
| 概念 | 類比 | 解釋 | 創(chuàng)建方式 |
|---|---|---|---|
| 數(shù)據(jù)庫 | 整個倉庫 | 數(shù)據(jù)物理和邏輯的集合 | CREATE DATABASE 或 DBCA |
| 表空間 | 倉庫分區(qū) | 最大的邏輯存儲單元,由數(shù)據(jù)文件組成 | CREATE TABLESPACE 或 OEM |
| 段 | 貨架 | 存儲數(shù)據(jù)庫對象(表、索引等) | (隨表/索引自動創(chuàng)建) |
| 區(qū) | 一組貨位 | 由連續(xù)數(shù)據(jù)塊組成,分配存儲的最小單位 | (自動分配) |
| 數(shù)據(jù)塊 | 單個貨位 | 最小的I/O邏輯存儲單位 | (由參數(shù)決定) |
學(xué)習(xí)建議:
- 理解概念:務(wù)必搞清這些概念之間的包含關(guān)系:數(shù)據(jù)庫 > 表空間 > 段 > 區(qū) > 數(shù)據(jù)塊。
- 動手練習(xí):在自己安裝的Oracle環(huán)境或?qū)W校實(shí)驗室中,優(yōu)先使用DBCA創(chuàng)建數(shù)據(jù)庫,然后多用SQL命令練習(xí)表空間的創(chuàng)建、修改和刪除。這是最實(shí)際有效的學(xué)習(xí)方式。
- 謹(jǐn)慎操作:
DROP命令一旦執(zhí)行無法撤回,操作前務(wù)必確認(rèn)無誤。
到此這篇關(guān)于Oracle數(shù)據(jù)庫、表空間與存儲結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)Oracle表空間與存儲結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle數(shù)據(jù)庫中外鍵的相關(guān)操作整理
這篇文章主要介紹了Oracle數(shù)據(jù)庫中外鍵的相關(guān)操作整理,包括對外鍵參照的主表記錄進(jìn)行刪除的操作方法等,需要的朋友可以參考下2016-01-01
Oracle數(shù)據(jù)庫不同損壞級別的恢復(fù)教程
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫不同損壞級別的恢復(fù)教程,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Oracle數(shù)據(jù)庫具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
centos 6.5下安裝oracle 11gR2與Oracle自動啟動的配置
CentOS 下安裝 Oracle 是一件比較麻煩的事情,下面這篇文章主要介紹了在 centos 6.5下安裝oracle 11gR2的前的配置步驟,以及安裝完成后,如何設(shè)置為隨系統(tǒng)自動啟動。配置完成后,啟動圖形化安裝,沒有什么可說的,本文就沒有一一截圖。需要的朋友可以參考借鑒。2017-01-01
navicat使用Oracle創(chuàng)建庫以及用戶超詳細(xì)教程
本文介紹如何使用Navicat連接Oracle數(shù)據(jù)庫,步驟包括準(zhǔn)備工作、新建連接、輸入用戶名和密碼、測試連接、建立庫和用戶、授權(quán)以及測試的相關(guān)資料,需要的朋友可以參考下2024-09-09
淺談oracle rac和分布式數(shù)據(jù)庫的區(qū)別
這篇文章主要介紹了oracle rac和分布式數(shù)據(jù)庫的區(qū)別的相關(guān)內(nèi)容,小編覺得挺不錯的,這里給大家分享下,需要的朋友可以參考。2017-10-10
Oracle監(jiān)聽器被優(yōu)化大師掛掉后的完美解決方法
這篇文章主要介紹了Oracle監(jiān)聽器被優(yōu)化大師掛掉后的完美解決方法,需要的朋友可以參考下2017-08-08
oracle停止數(shù)據(jù)庫后linux完全卸載oracle的詳細(xì)步驟
本文介紹了linux完全卸載oracle的詳細(xì)步驟,卸載前需使用SQL*PLUS停止數(shù)據(jù)庫和相關(guān)服務(wù),詳細(xì)步驟看下面說明,大家可以參考使用2014-01-01
oracle在導(dǎo)入數(shù)據(jù)時報600錯誤的解決方法
最近在工作中進(jìn)行oracle數(shù)據(jù)庫導(dǎo)入的時候遇到了600錯誤,通過查找相關(guān)的資料,最終終于解決了,下面這篇文章主要給大家介紹了關(guān)于oracle在導(dǎo)入數(shù)據(jù)時報600錯誤的解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-09-09

