程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> DBA_Tablespace表空間的概念和管控(概念),dba_tablespace管控

DBA_Tablespace表空間的概念和管控(概念),dba_tablespace管控

編輯:Oracle教程

DBA_Tablespace表空間的概念和管控(概念),dba_tablespace管控


2014-07-24 BaoXinjian

一、摘要


我們知道oarcle數據庫真正存放數據的是數據文件(data files);

Oarcle表空間(tablespaces)實際上是一個邏輯的概念,他在物理上是並不存在的,那麼把一組data files 捻在一起就成為一個表空間;

在ORACLE數據庫中,所有數據從邏輯結構上看都是存放在表空間當中,當然表空間下還有段、區、塊等邏輯結構;

從物理結構上看是放在數據文件中。一個表空間可由多個數據文件組成;

 

1. 表空間屬性

  • 一個數據庫可以包含多個表空間,一個表空間只能屬於一個數據庫
  • 一個表空間包含多個數據文件,一個數據文件只能屬於一個表空間
  • 表這空間可以劃分成更細的邏輯存儲單元

2. 基本的表空間(系統中默認創建的幾個表空間:)

  •     SYSTEM
  •     SYSAUX
  •     USERS
  •     UNDOTBS1
  •     EXAMPLE
  •     TEMP

3. 表空間的分類

  • 永久表空間                存放永久性數據,如表,索引等。
  • 臨時表空間                不能存放永久性對象,用於保存數據庫排序,分組時產生的臨時數據。
  • UNDO表空間             保存數據修改前的鏡象。

4. 表空間的管理

  • 字典管理:全庫所有的空間分配都放在數據字典中。容易引起字典爭用,而導致性能問題。
  • 本地管理:空間分配不放在數據字典,而在每個數據文件頭部的第3到第8個塊的位圖塊,來管理空間分配。

5. 基本操作

  • 1: 創建表空間
  • 2: 表空間管理
  • 3: 維護表空間
  • 4: 表空間配額

 

二、結構分析


1. 表空間和數據文件的關系

 2. 數據庫存儲結構

三、案例1 - 創建表空間


1. 創建表空間,並指定兩個數據庫文件

 1 CREATE TABLESPACE BXJ_DATA   
 2 DATAFILE '/oradata/BXJ_DATA_001.dbf'   
 3 SIZE 100M    
 4 EXTENT MANAGEMENT LOCAL   
 5 SEGMENT SPACE MANAGEMENT AUTO ONLINE;
 6 
 7 ALTER TABLESPACE BXJ_DATA  
 8 ADD DATAFILE '/oradata/BXJ_DATA_001.dbf'  
 9 SIZE 100M
10 AUTOEXTEND OFF;

 

四、案例2 - 表空間管理


1. 常用的表查詢

  • --包含數據庫中所有表空間的描述信息
    • SELECT * FROM DBA_TABLESPACES
  • --包含當前用戶的表空間的描敘信息
    • SELECT * FROM USER_TABLESPACES
  • --包含從控制文件中獲取的表空間名稱和編號信息
    • SELECT * FROM V$TABLESPACE;
  • --包含數據文件以及所屬的表空間的描述信息
    • SELECT * FROM DBA_DATA_FILES
  • --包含臨時數據文件以及所屬的表空間的描述信息
    • SELECT * FROM DBA_TEMP_FILES
  • --包含從控制文件中獲取的數據文件的基本信息,包括它所屬的表空間名稱、編號等
    • SELECT * FROM V$DATAFILE
  • --包含所有臨時數據文件的基本信息
    • SELECT * FROM V$TEMPFILE

2. 查看表空間使用情況

3. 計算表空間使用情況(考慮了數據文件自動增長情況)

 

五、案例3 - 維護表空間


1. 表空間狀態有下面幾種狀態:online、offline、read only、read write

SELECT FILE#, STATUS, ENABLED FROM V$DATAFILE

2. 設置為脫機狀態

SQL>ALTER TABLESPACE TBS_DM_DAT OFFLINE IMMEDIATE;

3. 設置為聯機狀態

SQL> ALTER TABLESPACE TBS_DM_DAT ONLINE;

4. 設置為只讀狀態

SQL>ALTER TABLESPACE TBS_DM_DAT READY ONLY;

5. 設置為讀寫狀態

SQL>ALTER TABLESPACE TBS_DM_DAT READ WRITE;

6. 修改表空間名稱

在ORACLE 10g 之前,表空間的名稱是不能被修改的。在ORACLE 11G中,通過ALTER TABLESPACE 語句中使用RENAME子句,數據庫管理員可以修改表空間的名稱

7. 修改表空間自動增加打開

ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' AUTOEXTEND ON;

8. 修改表空間自動增加關閉

ALTER DATABASE DATAFILE '/database/oracle/oradata/gsp/tbs_dm_data_002.dbf' AUTOEXTEND OFF;

 

六、案例4 - 表空間配額度


表空間不足與用戶配額不足是兩種不同的概念。表空間的大小是指實際的用戶表空間的大小,而配額大小指的是用戶指定使用表空間的的大小。兩者的解決方式亦不相同

1. 查看用戶和表弓箭配額

  • 查看所有用戶表空間的配額情況:    SELECT * FROM DBA_TS_QUOTAS       
  • 查看當前用戶表空間的配額情況:   SELECT * FROM USER_TS_QUOTAS

 

 ********************作者: 鮑新建********************

 

 

參考: http://www.cnblogs.com/kerrycode/p/3418694.html


小弟對表空間概念不是很理解,指教

當你用system創建了message表空間,和message用戶後,如果你不從system用戶退出,再以message用戶登陸,那麼,運行以上創建表的指令,所創建的表userinfo,就會被system用戶所擁有。所以,這個表應該在system表空間裡。在這樣的情況下,用戶message與這張表沒有任何關系。下次用message登陸時,message在一般情況下,不能往userinfo表裡插記錄,除非system給予message用戶特別許可,(GRANT insert on system.userinfo TO message;)。如果system給予了這種許可,用戶message所插的一切記錄,都會儲存在system表空間裡,而不是在message表空間中。

顯然,這是很糟糕的情況。一般情況下,應該避免讓普通用戶把數據儲存在system表空間裡。現有二種方法可以避免以上的情況:

1.從system用戶退出,再以message用戶登陸,然後運行以上創建表的指令。

2.依然是system用戶登陸,修改上述創建表的指令。在表名前,加上用戶名,並且在最後注明表空間名。請看下例:

CREATE TABLE message.userinfo
(
id VARCHAR2(32) NOT NULL,
name VARCHAR2(32) NOT NULL,
password VARCHAR2(32) NOT NULL,
CONSTRAINT userinfo_pk PRIMARY KEY (id),
CONSTRAINT userinfo_unique_name UNIQUE ( name )
)
TABLESPACE message;

用上述二種方法所創建的表userinfo,都會屬於用戶message。因此,message所插的一切記錄,都會儲存在message表空間中。
 

Oracle 10g表空間的概念、目的與意義

概念:表空間實質是組織數據文件的一種途徑,Oracle就是通過表空間這個數據庫對象完成對數據的組織的。在將數據插入Oracle數據庫之前,必須首先建立表空間,然後將數據插入表空間的一個對象中。解釋數據庫、表空間、數據文件、表、數據的最好辦法就是想象一個裝滿東西的櫃子。數據庫其實就是櫃子,櫃中的抽屜是表空間,抽屜中的文件夾是數據文件,文件夾中的紙是表,寫在紙上的信息就是數據。目的和意義:方便管理,就像每個城市會劃分成很多區,每個區又有很多街道一樣目的和意義具體體現在他的用途上:-目錄表空間
每個數據庫只有一個目錄表空間,它是在發出 CREATE DATABASE 命令時創建的。目錄表空間被 DB2 命名為 SYSCATSPACE,它保存了系統目錄表。總是在創建數據庫時創建該表空間。-常規表空間
常規表空間保存表數據和索引。它還可以保存諸如大對象(Large Object,LOB)之類的長數據,除非這些數據顯式地存儲在長表空間中。如果某些表空間是數據庫管理的空間(Database Managed Space,DMS),則可以將表及其索引分別放到單獨的常規表空間中。我們將在本文後面定義 DMS 和系統管理的空間(System Managed Space,SMS)之間的區別。每個數據庫中必須至少有一個常規表空間。創建數據庫時指定該表空間的缺省名為 USERSPACE1。-長表空間
長表空間用於存儲長型或 LOB 表列,它們必須駐留在 DMS 表空間中。它們還可以存儲結構化類型的列或索引數據。如果沒有定義長表空間,那麼將把 LOB 存儲在常規表空間中。長表空間是可選的,缺省情況下一個都不創建。-系統臨時表空間
系統臨時表空間用於存儲 SQL 操作(比如排序、重組表、創建索引和連接表)期間所需的內部臨時數據。每個數據庫必須至少有一個系統臨時表空間。隨數據庫創建的系統臨時表空間的缺省名為TEMPSPACE1。-用戶臨時表空間
用戶臨時表空間存儲已聲明的全局臨時表。創建數據庫時不存在用戶臨時表空間。至少應當創建一個用戶臨時表空間以允許定義已聲明的臨時表。用戶臨時表空間是可選的,缺省情況下一個都不創建。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved