Oracle - 數(shù)據(jù)庫的實例、表空間、用戶、表之間關(guān)系

完整的Oracle數(shù)據(jù)庫通常由兩部分組成:Oracle數(shù)據(jù)庫和數(shù)據(jù)庫實例。

1) 數(shù)據(jù)庫是一系列物理文件的集合(數(shù)據(jù)文件,控制文件,聯(lián)機日志,參數(shù)文件等);

2) Oracle數(shù)據(jù)庫實例則是一組Oracle后臺進程/線程以及在服務(wù)器分配的共享內(nèi)存區(qū)。

在啟動Oracle數(shù)據(jù)庫服務(wù)器時,實際上是在服務(wù)器的內(nèi)存中創(chuàng)建一個Oracle實例(即在服務(wù)器內(nèi)存中分配共享內(nèi)存并創(chuàng)建相關(guān)的后臺內(nèi)存),然后由這個Oracle數(shù)據(jù)庫實例來訪問和控制磁盤中的數(shù)據(jù)文件。Oracle有一個很大的內(nèi)存快,成為全局區(qū)(SGA)。

一、數(shù)據(jù)庫、表空間、數(shù)據(jù)文件

1、數(shù)據(jù)庫

數(shù)據(jù)庫是數(shù)據(jù)集合。Oracle是一種數(shù)據(jù)庫管理系統(tǒng),是一種關(guān)系型的數(shù)據(jù)庫管理系統(tǒng)。

通常情況了我們稱的“數(shù)據(jù)庫”,并不僅指物理的數(shù)據(jù)集合,他包含物理數(shù)據(jù)、數(shù)據(jù)庫管理系統(tǒng)。也即物理數(shù)據(jù)、內(nèi)存、操作系統(tǒng)進程的組合體。

我們在安裝Oracle數(shù)據(jù)庫時,會讓我們選擇安裝啟動數(shù)據(jù)庫(即默認的全局數(shù)據(jù)庫)如下圖:

全局數(shù)據(jù)庫名:就是一個數(shù)據(jù)庫的標識,在安裝時就要想好,以后一般不修改,修改起來也麻煩,因為數(shù)據(jù)庫一旦安裝,數(shù)據(jù)庫名就寫進了控制文件,數(shù)據(jù)庫表,很多地方都會用到這個數(shù)據(jù)庫名。

啟動數(shù)據(jù)庫:也叫全局數(shù)據(jù)庫,是數(shù)據(jù)庫系統(tǒng)的入口,它會內(nèi)置一些高級權(quán)限的用戶如SYS,SYSTEM等。我們用這些高級權(quán)限賬號登陸就可以在數(shù)據(jù)庫實例中創(chuàng)建表空間,用戶,表了。

查詢當前數(shù)據(jù)庫名:

selectnamefromv$database;


2、數(shù)據(jù)庫實例

用Oracle官方描述:實例是訪問Oracle數(shù)據(jù)庫所需的一部分計算機內(nèi)存和輔助處理后臺進程,是由進程和這些進程所使用的內(nèi)存(SGA)所構(gòu)成一個集合。

其實就是用來訪問和使用數(shù)據(jù)庫的一塊進程,它只存在于內(nèi)存中。就像Java中new出來的實例對象一樣。

我們訪問Oracle都是訪問一個實例,但這個實例如果關(guān)聯(lián)了數(shù)據(jù)庫文件,就是可以訪問的,如果沒有,就會得到實例不可用的錯誤。

實例名指的是用于響應(yīng)某個數(shù)據(jù)庫操作的數(shù)據(jù)庫管理系統(tǒng)的名稱。她同時也叫SID。實例名是由參數(shù)instance_name決定的。

查詢當前數(shù)據(jù)庫實例名:

selectinstance_namefromv$instance;

數(shù)據(jù)庫實例名(instance_name)用于對外部連接。在操作系統(tǒng)中要取得與數(shù)據(jù)庫的聯(lián)系,必須使用數(shù)據(jù)庫實例名。比如我們作開發(fā),要連接數(shù)據(jù)庫,就得連接數(shù)據(jù)庫實例名:

jdbc:oracle:thin:@localhost:1521:orcl(orcl就為數(shù)據(jù)庫實例名)

一個數(shù)據(jù)庫可以有多個實例,在作數(shù)據(jù)庫服務(wù)集群的時候可以用到。

3、表空間

Oracle數(shù)據(jù)庫是通過表空間來存儲物理表的,一個數(shù)據(jù)庫實例可以有N個表空間,一個表空間下可以有N張表。

有了數(shù)據(jù)庫,就可以創(chuàng)建表空間。

表空間(tablespace)是數(shù)據(jù)庫的邏輯劃分,每個數(shù)據(jù)庫至少有一個表空間(稱作SYSTEM表空間)。為了便于管理和提高運行效率,可以使用一些附加表空間來劃分用戶和應(yīng)用程序。例如:USER表空間供一般用戶使用,RBS表空間供回滾段使用。一個表空間只能屬于一個數(shù)據(jù)庫。

創(chuàng)建表空間語法:

Create TableSpace 表空間名稱?

DataFile? ? ? ? ? 表空間數(shù)據(jù)文件路徑?

Size? ? ? ? ? ? ? 表空間初始大小?

Autoextend on

如:

create tablespace db_test?

datafile 'D:\oracle\product\10.2.0\userdata\db_test.dbf'?

size 50m?

autoextend on;

查看已經(jīng)創(chuàng)建好的表空間:

select default_tablespace, temporary_tablespace, d.username? fromdba_users d


4、用戶

Oracle數(shù)據(jù)庫建好后,要想在數(shù)據(jù)庫里建表,必須先為數(shù)據(jù)庫建立用戶,并為用戶指定表空間。

上面我們建好了數(shù)據(jù)庫和表空間,接下來建用戶:

創(chuàng)建新用戶:

CREATEUSER? ? ? ? ? 用戶名?

IDENTIFIED BY? ? ? ? 密碼? DEFAULT TABLESPACE? 表空間(默認USERS)? TEMPORARYTABLESPACE 臨時表空間(默認TEMP)

如:

CREATEUSER utest?

IDENTIFIED BY utestpwd? DEFAULT TABLESPACE db_test? TEMPORARYTABLESPACEtemp;(這里臨時表空間不能使用我們創(chuàng)建的db_test,不知為何?)

有了用戶,要想使用用戶賬號管理自己的表空間,還得給它分權(quán)限:

GRANTCONNECTTO utest;? GRANTRESOURCETO utest;? GRANTdbaTOutest;--dba為最高級權(quán)限,可以創(chuàng)建數(shù)據(jù)庫,表等。

查看數(shù)據(jù)庫用戶:

select*fromdba_users;

5、表

有了數(shù)據(jù)庫,表空間和用戶,就可以用自定義的用戶在自己的表空間創(chuàng)建表了。有了表,我們可以開發(fā)了。


轉(zhuǎn)載:http://yuwenlin.iteye.com/blog/1882988

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容