標籤:
oracle資料庫,所有資料從邏輯結構上看都是存放在資料表空間當中,當然資料表空間下還有段、區、塊等邏輯結構。
一個ORACLE資料庫能夠有一個或多個資料表空間,而一個資料表空間則對應著一個或多個物理的資料庫檔案。
資料表空間的定義:存放資料的一個容器。資料表空間由一個資料檔案或多個資料檔案組成,一個資料檔案只屬於一個表
空間。
-----(這個容器會隨著資料檔案的增加而增大)
資料表空間的作用能協助DBA使用者完成以下工作:
1.決定資料庫實體的空間分配;
2.設定資料庫使用者的空間份額;
3.控制資料庫部分資料的可用性;
4.分布資料於不同的裝置之間以改善效能;
5.備份和恢複資料。
以oracle為準,oracle系統裡有多少基本的資料表空間。
select * from dba_tablespaces;
系統中預設建立的幾個資料表空間:
SYSTEM 系統資料表空間
SYSAUX 系統輔助資料表空間
USERS 使用者資料表空間
UNDOTBS1 復原資料表空間
EXAMPLE
TEMP 暫存資料表空間
系統中必須的資料表空間有那幾個?
答案: SYSTEM、SYSAUX、TEMP、UNDO, 像USERS、EXAMPLE等資料表空間是可有可無的。
資料表空間的分類:(按儲存時間分)
1.永久資料表空間 存放永久性的資料,如表,索引等。
2.暫存資料表空間 存放臨時資料,儲存PGA記憶體溢出時的資料排序,分組產生的臨時資料
3.UNDO資料表空間 儲存資料修改前的鏡像。(修改資料之前,oracle會拷貝一份到UNDO資料表空間)
資料表空間的管理方式:
A.本地管理資料表空間(LMT)
B.資料字典管理資料表空間(DMT)
A.本地管理資料表空間:一種比較先進的管理擴充(extent)的方式;當使用本地管理資料表空間時是使用6個塊
(從第三個到第八個)來標識整個資料表空間裡的每一個擴充(extent);
B.字典管理資料表空間:這種方式是為了與之前版本相容而提供的。11g裡是不能建立字典管理資料表空間的
,被強制推薦,只能倒入老版本中的字典管理資料表空間。
--------------------------------------------------------------------
資料表空間增刪查改相關操作:
——建立資料表空間:
1.建立包含一個初始大小為10M的資料檔案,每次自增長1M,最大自增長為20M的資料表空間。
SQL> create tablespace tbs
2 datafile ‘/oracle/tbs01.dbf‘ size 10M autoextend on next 1M maxsize 20M;
2.建立包含兩個資料檔案的資料表空間,第一個資料檔案初始大小為20m,每次自增長為1M,自增長最大為30M;
第二個資料檔案初始大小為10M,每次自增長為5M,無限制大小;
SQL> create tablespace ts
2 datafile ‘/oracle/ts01.dbf‘ size 20M autoextend on next 1M maxsize 30M,
3 ‘/oracle/ts02.dbf‘ size 10M autoextend on next 5M;
——擴充資料表空間;
當表超過資料表空間大小時,要對錶空間進行擴充。(增加資料表空間大小的方法有三種)
(1)添加資料檔案。
(2)改變資料檔案大小。
(3)允許資料檔案自動擴充。
a.添加資料檔案:
語句:alter tablespace tablespace_name add datafiel ‘path_dbf‘ size 大小;
--為ts資料表空間添加一個初始大小為3M不自增長的資料檔案;
SQL> alter tablespace ts
2 add datafile ‘/oracle/ts03.dbf‘ size 3M;
思考——
SQL> alter tablespace ts
2 add datafile ‘/oracle/ts04.dbf‘ size 2M autoextend on next 2M maxsize 10M
3 /
b. 改變資料檔案的大小
alter database datafile ‘path_.dbf‘ resze 大小;
-為ts資料表空間的資料檔案增加8m;
SQL> alter database datafile ‘/oracle/ts04.dbf‘ resize 8M;
c.允許資料檔案自動擴充
alter database datafile ‘path_.dbf‘ autoextend on next size_大小 maxsize size_大小;
-改變tbs資料表空間01號資料檔案為自增長,每次自增長1M,最大限制為10M;
SQL> alter database datafile ‘/oracle/tbs01.dbf‘ autoextend on next 1M maxsize 10M;
-------如何為建立表指定資料表空間;
兩個例子:
SQL> create table c1(a int,b char)
2 tablespace tbs
3 /
SQL> create table c2
2 tablespace ts
3 as select * from dept;
----------把表遷移到另外一個資料表空間裡;
語句:alter table table_name move tablespace new_tablespace_name;
SQL> alter table c2 move tablespace tbs;
----另------
語句:alter table table_name move;
整理資料表空間片段;
-------------刪除資料表空間:
刪除ts資料表空間;
SQL>drop tablespace tq;
刪除資料表空間,一併刪除資料檔案;
語句:drop tabelpaces tablespace_name including contents and datafiles;
SQL> drop tablespace tq including contents and datafiles;
--------修改資料表空間名稱
SQL> alter tablespace ts rename to ts1;
--------------查詢資料表空間相關:
稍微回顧一下:學習至今,學了幾個oracle視圖?
1.user_constraint 約束相關視圖
2.recyclebin 資源回收筒視圖
3.dba_tables 表屬性視圖
4.dba_tablespaces 資料表空間視圖
5.dba_data_files 資料檔案視圖
以幾個常用查詢為例:
----查詢該表屬於哪個資料表空間;
SQL>select table_name,tablespace_name from dba_tables where table_name=‘‘;
--包含資料庫中所有資料表空間的描述資訊
SQL> select * from dba_tablespaces;
--包含目前使用者的資料表空間的描敘資訊
SQL> select * from user_tablespaces;
--包含從控制檔案中擷取的資料表空間名稱和編號資訊
SQL> select * from v$tablespace;
查看資料檔案
--包含資料檔案以及所屬的資料表空間的描述資訊
SQL> select * from dba_data_files;
--包含臨時資料檔案以及所屬的資料表空間的描述資訊
SQL> select * from dba_temp_files;
--包含從控制檔案中擷取的資料檔案的基本資料,包括它所屬的資料表空間名稱、編號等
SQL> select * from dba_temp_files;
--包含所有臨時資料檔案的基本資料
SQL> select * from v$datafile;
oracle儲存結構_資料表空間-筆記