Oracle學習日誌-2(用戶與表空間)

表空間是數據庫的邏輯存儲空間,能夠理解爲表空間是數據庫開闢的一個空間,用於存放數據庫的對象。表空間是由一個或者多個數據文件構成的。咱們存放的表,數據庫對象等,都是存放在表空間中的數據文件裏的。
表空間分爲永久表空間,臨時表空間,UNDO表空間。數據庫

  • 永久表空間主要存儲數據庫當中須要永久存儲化的一些對象。好比表,視圖等。
  • 臨時表空間主要存儲數據庫在操做過程當中,中間執行的過程,當執行結束後,存放的內容就自動被釋放掉。
  • UNDO表空間用於數據在被修改以前的數據,當一張表進行修改時,它會保存表以前的數據。用於回滾。

在oracle中,使用不一樣用戶登陸,所對應的表空間也有所不一樣。首先介紹兩個數據字典(數據字典是指對數據的數據項、數據結構、數據流、數據存儲、處理邏輯等進行定義和描述)數據結構

  • dba_tablespaces:針對系統管理員用戶來查看的數據字典。
  • user_tablespaces:普通用戶登陸後查看的數據字典。

用system用戶鏈接到數據庫後,查詢dba_tablespaces。

查詢結果表示dba_tablespaces這個數據字典有列名有TABLESPACE_NAME,NOT NULL表示不能爲空,類型爲可變字符類型,長度爲30。列名爲BOLOCK_SIZE的這一列不能爲空,類型爲NUMBER。後面的以此類推。
而後在查詢一下表空間有哪些。
oracle

能夠看到,用system登陸數據庫後,默認的表空間就有5個。spa

  1. SYSTEM:主要sys用戶存放表,視圖,也叫系統表空間。
  2. SYSAUX:做爲輔助表空間。
  3. UNDOTBS1:用於存放一些撤銷信息,屬於UNDO類型表空間。
  4. TEMP:用於存儲一些SQL語句處理的表,和索引信息,屬於臨時表空間。
  5. USERS:存儲數據庫用戶建立的數據庫對象。
    普通用戶登陸數據庫只能查看user_tablespaces,不能查看dba_tablespace。user_tablespaces的表空間與dba_tablespace的名字同樣。

每個用戶對應着默認的表空間,能夠多個用戶共用同一個表空間。也能夠指定一個用戶只用某一個表空間,若是不指定,就默認爲users表空間。
如今有兩個鏈接,一個是system系統管理員用戶登陸了數據庫。一個是scott普通用戶登陸數據庫。
我建立scott用戶的時候沒有指定表空間,因此它指定的是默認表空間。用selcet查詢一下

能夠看到scott用戶指定的表空間是默認的USERS表空間(scott用戶的名字是C##scott),scott用戶建立的表就默認放在USERS表空間
system用戶的指定表空間爲SYSTEM。

sys用戶指定的表空間爲SYSTEM。

sys、system管理員建立的表就放在SYSTEM表空間。視頻


總結:

以前邊看視頻邊查資料,對於表空間的理解仍是雲裏霧裏,可是本身動手寫了幾個例子後,仍是有了一個大概的理解。首先表空間是劃分數據庫的邏輯空間。至關於數據庫是一個大倉庫。表空間就是地上畫的粉筆線。用來區分存放物品的位置。用戶就至關於使用倉庫的人。sys和system都是管理員用戶。至關於倉庫管理員。能夠劃分新的表空間。也能夠刪除或者改動表空間。
一開始這個倉庫(數據庫)就劃分了5個區域(表空間)。用來存放東西或者使用。倉庫管理員(sys,system)就負責管理倉庫的事物。除了管理員,還有普通的員工(普通用戶)。好比今天新來了個員工小王,倉庫管理員就告訴小王。我給你劃了塊地方(給用戶指定表空間)。你之後幹什麼就用這塊地。而後又來了個員工小張,倉庫管理員也告訴小張「你和小王用同一塊地就好了」(一個表空間能夠被多個用戶共用)。以後又有一個新員工小李。倉庫管理員沒有告訴他用哪裏。小李就使用了默認的的一塊地(默認使用USER表空間)。對象

blog

相關文章
相關標籤/搜索