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

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

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

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

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

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

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

下一步

選擇你自己找的到的地方

注意勾選示例方案

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


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

耐心等待

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

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

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

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

保存輸入表名稱

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

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

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

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

