有關(guān)Oracle數(shù)據(jù)庫戈钢、表空間、schema概念的一些總結(jié)思考

之前學(xué)習(xí)Oracle數(shù)據(jù)庫之后是尔,對于表空間殉了、用戶、schema等概念一直有些模糊拟枚,也沒有理清楚他們之間的關(guān)系薪铜,最近回過頭重新看了這部分的知識后,將自己對這方面的知識點(diǎn)做一下小結(jié)恩溅,本篇文章并不是常規(guī)的技術(shù)文章隔箍,只作為個(gè)人的小結(jié)分享。

先說說什么是Oracle數(shù)據(jù)庫

Oracle數(shù)據(jù)庫是能滿足我們存取數(shù)據(jù)需要的數(shù)據(jù)管理系統(tǒng)脚乡。完整的Oracle數(shù)據(jù)庫通常由兩部分組成:物理數(shù)據(jù)庫和數(shù)據(jù)庫實(shí)例蜒滩。也就是說,Oracle數(shù)據(jù)庫是物理存儲和內(nèi)存進(jìn)程的集合奶稠。

  1. 數(shù)據(jù)庫是一系列物理文件的集合(數(shù)據(jù)文件俯艰,控制文件,聯(lián)機(jī)日志锌订,參數(shù)文件等)竹握;
  2. Oracle數(shù)據(jù)庫實(shí)例則是一組Oracle后臺進(jìn)程/線程以及在服務(wù)器分配的共享內(nèi)存區(qū)。

什么是數(shù)據(jù)庫實(shí)例

當(dāng)我們啟動數(shù)據(jù)庫服務(wù)時(shí)辆飘,就會在內(nèi)存中創(chuàng)建一個(gè)數(shù)據(jù)庫實(shí)例出來啦辐,由這個(gè)Oracle數(shù)據(jù)庫實(shí)例來訪問和控制磁盤中的數(shù)據(jù)文件谓传,常見的數(shù)據(jù)庫實(shí)例有ORCL這個(gè)過程可以想象成是JAVA中根據(jù)classnew出了一個(gè)對象出來昧甘,我們可以根據(jù)這個(gè)對象調(diào)用具體的數(shù)據(jù)庫方法良拼。一個(gè)數(shù)據(jù)庫可以有多個(gè)實(shí)例,在作數(shù)據(jù)庫服務(wù)集群的時(shí)候可以用到充边。
正如上面介紹的一樣庸推,數(shù)據(jù)庫實(shí)例是Oracle數(shù)據(jù)庫的組成部分,是在內(nèi)存中運(yùn)行浇冰,為用戶提供訪問和操作數(shù)據(jù)庫的后臺進(jìn)程贬媒。

什么是表空間(Table Space)?

Oracle數(shù)據(jù)庫是通過表空間來存儲物理表的肘习,一個(gè)數(shù)據(jù)庫可以劃分為多個(gè)表空間际乘,每個(gè)表空間可以存儲多張表。表空間是數(shù)據(jù)庫的邏輯劃分漂佩,每個(gè)數(shù)據(jù)庫至少有一個(gè)表空間(稱作SYSTEM表空間)脖含。把數(shù)據(jù)庫當(dāng)做一個(gè)大倉庫,為了管理方便投蝉,我們可以人工將這一片大的空間分為A养葵、B、C等區(qū)間瘩缆,這樣的A/B/C區(qū)間就相當(dāng)于是表空間关拒。(也可以理解為是去餐廳吃飯,每張桌子上面都有一個(gè)桌號庸娱,方便服務(wù)員上菜)着绊。

關(guān)于用戶

有了表空間,下一步自然是建表熟尉。但是在建表之前還有一步归露,就是要先創(chuàng)建用戶,只有用戶才能建表臣樱。用戶是獨(dú)立于表空間的存在靶擦,我們可以從上面的介紹中知道表空間其實(shí)也是數(shù)據(jù)存儲的容器,但用戶可以理解為是數(shù)據(jù)的歸屬者雇毫。還是舉倉庫的例子玄捕,倉庫提供的只是存放物料的空間,但物料的管理人還是具體的一個(gè)個(gè)的倉管棚放,也就是用戶枚粘。當(dāng)然了,倉管應(yīng)該有屬于自己的管轄范圍和權(quán)限飘蚯,所以需要為倉管定義好貨物具體存放的位置馍迄。所以對于用戶來說福也,我們也需要為其指定好對應(yīng)的表空間。

什么是Schema(方案)攀圈?

方案(schema)又叫模式暴凑,是比表空間小一級的邏輯概念,它也是一個(gè)邏輯容器赘来。Schema為數(shù)據(jù)庫對象的集合现喳,為了區(qū)分各個(gè)集合,我們需要給這個(gè)集合起個(gè)名字犬辰。schema里面包含了各種對象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, 和 database links嗦篱。
我們知道一共表空間可以被多個(gè)用戶共用,那如何區(qū)分開每一個(gè)用戶幌缝?那么在表空間中對每個(gè)用戶都有一個(gè)對應(yīng)的方案灸促,用于保存單個(gè)用戶的信息。舉倉庫的例子來說涵卵,我們現(xiàn)在把倉庫的A區(qū)進(jìn)一步分為N個(gè)房間浴栽,每個(gè)房間是屬于特定的倉管的,這一個(gè)個(gè)的能夠存儲貨物的房間就相當(dāng)于是schema轿偎,一個(gè)房間由一個(gè)倉管負(fù)責(zé)吃度。

關(guān)于數(shù)據(jù)文件(dbf、ora):

數(shù)據(jù)文件是數(shù)據(jù)庫的物理存儲單位贴硫。數(shù)據(jù)庫的數(shù)據(jù)是存儲在表空間中的,真 正是在某一個(gè)或者多個(gè)數(shù)據(jù)文件中伊者。而一個(gè)表空間可以由一個(gè)或多個(gè)數(shù)據(jù)文件組成英遭,一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間。一旦數(shù)據(jù)文件被加入到某個(gè)表空間后亦渗,就不能刪除這個(gè)文件挖诸,如果要刪除某個(gè)數(shù)據(jù)文件,只能刪除其所屬于的表空間才行法精。

關(guān)于表數(shù)據(jù)和用戶的關(guān)系

表的數(shù)據(jù)多律,是有用戶放入某一個(gè)表空間的,而這個(gè)表空間會隨機(jī)把這些表數(shù)據(jù)放到一個(gè)或者多個(gè)數(shù)據(jù)文件中搂蜓。由于oracle的數(shù)據(jù)庫不是普通的概念狼荞,oracle是有用戶和表空間對數(shù)據(jù)進(jìn)行管理和存放的。但是表不是有表空間去查詢的帮碰,而是由用戶去查的相味。因?yàn)椴煌脩艨梢栽谕粋€(gè)表空間建立同一個(gè)名字的表!這里區(qū)分就是用戶了殉挽!


Oracle運(yùn)作圖




2023-08補(bǔ)充

(一)缺省用戶名和缺省表空間

從上面的文字描述中我們可以知道丰涉,表空間是數(shù)據(jù)存儲的邏輯單位拓巧,但實(shí)際上一張表的歸屬不單單看表空間,還得看是屬于表空間的哪個(gè)用戶的一死。所以我們在oracle數(shù)據(jù)庫中創(chuàng)建表肛度,需要注意我們創(chuàng)建的表有沒有放在正確的位置。

我們看看下面的標(biāo)準(zhǔn)建表語句:

CREATE TABLE user_name.table_name (
    column1 datatype [constraints],
    column2 datatype [constraints],
    column3 datatype [constraints],
    ...
    table_constraints
) TABLESPACE tablespace_name;
  • 當(dāng)未顯式指定user_name時(shí)投慈,此時(shí)所創(chuàng)建的表會默認(rèn)放在當(dāng)前登錄的用戶上面
  • 當(dāng)未顯式指定tablespace_name時(shí)承耿,此時(shí)所創(chuàng)建的表會默認(rèn)放在指定用戶的默認(rèn)表空間中。若建表語句中也未指定user_name逛裤,則表會默認(rèn)放在當(dāng)前登錄用戶的默認(rèn)表空間中

為什么這里會特別強(qiáng)調(diào)表空間的歸屬呢瘩绒?
因?yàn)閷?shí)際上一個(gè)用戶可以有多個(gè)表空間,而且在一些復(fù)雜的項(xiàng)目中用戶不同的表空間存儲的數(shù)據(jù)類型带族、磁盤大小可能都是不同的锁荔。如果在建表的時(shí)候沒有注意好表存放的表空間的話,那么表就會放在用戶默認(rèn)的表空間里面蝙砌,占用了默認(rèn)表空間的存儲容量阳堕。

(二)關(guān)于oracle的版本
oracle版本 時(shí)間
Oracle 1 1979年
Oracle 2 1983年
Oracle 3 1984年
Oracle 4 1985年
Oracle 5 1986年
Oracle 6 1988年
Oracle 7 1992年
Oracle 8 1997年
Oracle 8i 1999年("i"代表Internet
Oracle 9i 2001年
Oracle 10g 2003年("g"代表grid網(wǎng)格計(jì)算)
Oracle 11g 2007年
Oracle 12c 2013年("c"代表cloud云計(jì)算)
Oracle 18c 2018年
Oracle 19c 2019年
Oracle 21c 2020年

oracle自1979年推出以來,有三個(gè)標(biāo)志性的版本择克,分別是8i恬总、10g、12c肚邢,代表著不同版本中oracle的戰(zhàn)略性目標(biāo)壹堰,oracle8i,引入了一些針對互聯(lián)網(wǎng)應(yīng)用的功能和改進(jìn)骡湖,包括更好的分布式數(shù)據(jù)庫支持贱纠、Java集成和Web應(yīng)用程序開發(fā)工具;oracle10g這個(gè)版本引入了網(wǎng)格計(jì)算的概念响蕴,旨在提供更高的可伸縮性谆焊、可靠性和性能。它支持在多個(gè)服務(wù)器上分布和管理數(shù)據(jù)庫資源浦夷,以實(shí)現(xiàn)更好的負(fù)載平衡和容錯(cuò)能力辖试;oracle12c強(qiáng)調(diào)了Oracle數(shù)據(jù)庫在云計(jì)算環(huán)境中的功能和優(yōu)勢。它引入了一些云相關(guān)的功能劈狐,如多租戶架構(gòu)罐孝、自動化管理和數(shù)據(jù)庫即服務(wù)(Database as a Service)等。

需要注意的是肥缔,oracle并不是在oracle10g版本后才有分布式數(shù)據(jù)庫的管理能力肾档,之前就有了。只是10g版本推出的網(wǎng)格計(jì)算功能增強(qiáng)了分布式數(shù)據(jù)庫的管理能力和資源分配能力,使得數(shù)據(jù)庫能夠更好地適應(yīng)大規(guī)模數(shù)據(jù)處理和分析的需求怒见。

oracle在12c版本中俗慈,提出了"多租戶架構(gòu)",允許在單個(gè)數(shù)據(jù)庫實(shí)例中創(chuàng)建多個(gè)獨(dú)立的容器數(shù)據(jù)庫(CDB)和子數(shù)據(jù)庫(PDB)遣耍。這種架構(gòu)可以實(shí)現(xiàn)更高級別的資源隔離和共享闺阱,簡化管理,并提供更好的多租戶支持舵变。這種特性讓我們在數(shù)據(jù)庫的管理上更加的靈活酣溃,在原先我們要想實(shí)現(xiàn)資源隔離類似的功能應(yīng)該是只能通過創(chuàng)建多個(gè)數(shù)據(jù)庫實(shí)例來實(shí)現(xiàn),而現(xiàn)在只需要在一個(gè)數(shù)據(jù)庫實(shí)例中創(chuàng)建多個(gè)容器數(shù)據(jù)庫纪隙,或者在一個(gè)容器數(shù)據(jù)庫創(chuàng)建多個(gè)子數(shù)據(jù)庫就可以實(shí)現(xiàn)資源隔離(和共享)的效果赊豌。(在容器數(shù)據(jù)庫級別上創(chuàng)建的用戶、角色绵咱、表空間等對象可以被所有子數(shù)據(jù)庫共享和使用)

參考資料:
Oracle數(shù)據(jù)庫碘饼、實(shí)例、用戶悲伶、表空間艾恼、表之間的關(guān)系 https://blog.csdn.net/NRlovestudy/article/details/49684571
表空間與用戶的關(guān)系 表空間和數(shù)據(jù)文件的關(guān)系 https://www.cnblogs.com/lion88/p/4343890.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市麸锉,隨后出現(xiàn)的幾起案子钠绍,更是在濱河造成了極大的恐慌,老刑警劉巖花沉,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柳爽,死亡現(xiàn)場離奇詭異,居然都是意外死亡碱屁,警方通過查閱死者的電腦和手機(jī)泻拦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忽媒,“玉大人,你說我怎么就攤上這事腋粥』抻辏” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵隘冲,是天一觀的道長闹瞧。 經(jīng)常有香客問我,道長展辞,這世上最難降的妖魔是什么奥邮? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上洽腺,老公的妹妹穿的比我還像新娘脚粟。我一直安慰自己,他們只是感情好蘸朋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布核无。 她就那樣靜靜地躺著,像睡著了一般藕坯。 火紅的嫁衣襯著肌膚如雪团南。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天炼彪,我揣著相機(jī)與錄音吐根,去河邊找鬼。 笑死辐马,一個(gè)胖子當(dāng)著我的面吹牛拷橘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播齐疙,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼膜楷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了贞奋?” 一聲冷哼從身側(cè)響起赌厅,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎轿塔,沒想到半個(gè)月后特愿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡勾缭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年揍障,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俩由。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡毒嫡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幻梯,到底是詐尸還是另有隱情兜畸,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布碘梢,位于F島的核電站咬摇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏煞躬。R本人自食惡果不足惜肛鹏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一逸邦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧在扰,春花似錦缕减、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至妓局,卻和暖如春总放,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背好爬。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工局雄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人存炮。 一個(gè)月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓炬搭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親穆桂。 傳聞我的和親對象是個(gè)殘疾皇子宫盔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容