介紹html
表空間是數據庫的邏輯組成部分mysql
從物理上將:數據庫數據存放在數據文件中sql
從邏輯上將:數據庫則是存放在表空間中數據庫
表空間由一個或是多個數據文件組成session
數據庫的邏輯結構
介紹:oracle
Oracle中邏輯結構包括表空間、段、區、塊app
說明:post
數據庫由表空間構成性能
而表空間又是由段構成spa
而段又是由區構成
而區又是由Oracle塊構成
這樣的一種結果,能夠提升數據庫的效率
表空間
介紹:
表空間用於從邏輯上組織數據庫的數據
數據庫邏輯上是由一個或是多個表空間組成的
表空間的做用:
一、控制數據庫佔用的磁盤空間
二、dba能夠將不一樣數據類型部署到不一樣的位置。這樣有利於提升i/o性能,同時利於備份和恢復等管理操做
oracle建立數據庫和用戶、表空間
oracle的使用方式和mysql和sql server他們不一樣,oracle在建立數據庫的時候要對應一個用戶,數據庫和用戶通常一一對應,
mysql和sql server 直接經過create databse 「數據庫名」 就能夠直接建立數據庫了,而oracle建立一個數據庫須要如下三個步驟:
- 建立兩個表空間和對應的數據文件(.DBF),若已存在用戶和關聯的數據庫,則需先刪除用戶和數據庫
- 建立用戶與上面建立的文件造成映射關係
- 給用戶添加權限
1、建立兩個表空間和對應的數據文件(monitor.dbf 和monitor_temp.dbf 兩個文件) ,若已存在用戶和關聯的數據庫,則需先刪除用戶和數據庫
CREATE TABLESPACE monitor LOGGING DATAFILE 'D:\app\owner\oradata\orcl\monitor.dbf'
SIZE 100M AUTOEXTEND ON NEXT 32M MAXSIZE 500M EXTENT MANAGEMENT LOCAL;
create temporary tablespace monitor_temp tempfile 'D:\app\owner\oradata\orcl\monitor_temp.dbf'
size 100m autoextend on next 32m maxsize 500m extent management local;
tablespace:表空間名
datafile:'數據文件路徑'
size:數據文件的大小
maxsize:表數據文件最大大小
uniform size 區的大小;
2、建立用戶與上面建立的文件造成映射關係(用戶名爲monitor,密碼爲monitor)
CREATE USER monitor IDENTIFIED BY monitor DEFAULT TABLESPACE monitor TEMPORARY TABLESPACE monitor_temp;
3、添加權限
grant connect,resource,dba to monitor;
grant create session to monitor;
有時候也會用到刪除數據庫和刪除用戶的操做,這裏也給出刪除的語句
4、刪除數據庫
DROP TABLESPACE monitor INCLUDING CONTENTS AND DATAFILES;
5、刪除用戶
drop user monitor cascade;
管理表空間和數據文件簡介
創建表空間
創建表空間是使用create tablespace命令完成的,要注意時,通常狀況下,創建表空間是特權用戶或是dba來執行的,
若是用其它用戶來建立表空間,則用戶必需要具備create tablespace的系統權限
創建數據表空間
在創建數據庫後,爲便於管理表,最好創建本身的表空間
create tablespace tangtao001 datafile 'd:\t001.dbf' size 20m uniform size 128k;
使用數據表空間
向新建的表空間添加表:
create table myDept(deptno number(4),dname varchar2(15),loc varchar2(13)) tablespace tangtao001;
說明:執行完上述命令後,會創建名稱爲tangtao001 的表空間,併爲該表空間創建名稱爲t001.dbf的數據文件,區的大小爲128k
一、顯示錶空間信息
a) 查詢數據字典視圖dba_tablespaces。顯示錶空間信息
select tablespace_name from dba_tablespaces;
二、顯示錶空間所包含的數據文件
a) 查詢數據字典視圖dba_data_files,能夠顯示錶空間所包含的數據文件
select file_name,bytes from dba_data_files where tablespace_name='表空間名';
改變表空間的狀態
當創建表空間時,表空間處於聯機的(online)狀態,此時該表空間是能夠訪問的,而且該表空間是能夠讀寫的,便可以查詢該表空間的數據,並且還能夠在表空間執行各類語句。
可是在進行系統維護或是數據維護時,可能須要改變表空間的狀態,通常狀況下,由特權用戶或是dba來操做
一、使表空間脫機
alter tablespace 表空間名 offline;
二、使表空間聯機
alter tablespace 表空間名 online;
三、只讀表空間
a) 當創建表空間時,表空間能夠讀寫,若是不但願在該表空間上執行update、delete、insert操做,那麼能夠將該表空間修改成只讀
alter tablespace 表空間名 read only;
案例:
一、知道表空間名。顯示該表空間的全部表
select * from tall_tables where tablespace_name='表空間名';
二、知道代表,查看該表屬於哪一個表空間
select tablespace_name,table_name from user_tables where table_name='emp';
注意:
經過2,能夠知道scott.emp是在system這個表空間上,如今能夠將system改成只讀,可是不會成功。由於system是系統表空間,若是是普通表空間,能夠將其設爲只讀
刪除表空間
通常狀況下,有特權用戶或是dba來操做,若是是其它用戶操做,那麼要求用戶具備drop tablespace系統權限
drop tablespace 表空間名 including contents and datafiles;
說明:
Including contents 表示刪除表空間,刪除該表空間的全部數據庫對象,而datafiles表示將數據庫文件也刪除
擴展表空間
表空間是由數據文件組成的,表空間的大小實際上就是數據文件相加後的大小。那麼咱們能夠想象。假定表employee存放到tangtao001表空間上,初始大小就是2m。
當數據滿2m空間後,若是在向employee表插入數據,這樣就會顯示空間不足的錯誤
案例說明:
一、創建一個表空間tangtao001
二、在該表空間上創建一個普通標mydment 其結構和dept同樣
三、向該表中加入數據insert into mydment select * from dept;
四、當必定時候就會出現沒法擴展的問題,怎麼辦?
五、就擴展該表空間,爲其增長更多的存儲空間。有三種方法:
一、增長數據文件
alter tablespace 表空間名 add datafile '數據文件存放路徑' size 數據文件大小;
二、增長數據文件的大小
alter tablespace 表空間名 add datafile '數據文件存放的路徑' resize 數據文件新的大小;
這裏需注意,數據文件的大小不要超過500m
三、設置文件的自動增加
alter tablespace 表空間名 add datafile '數據文件存放路徑' autoextend on next 每次增長的大小 maxsize 數據文件大小的最大值;
移動數據文件
有時,若是數據文件所在的磁盤損壞時,該數據文件不能再使用,爲了可以從新使用,須要將這些文件的副本移動到其它的磁盤,而後恢復
案例說明:
一、肯定數據文件所在的表空間
select tablespace_name from dba_data_files where file_name='d:\t01.dbf';
二、使表空間脫機
a) 確保數據文件的一致性,將表空間轉變爲offline的狀態
alter tablespace tangtao001 offline;
三、使用命令移動數據文件到指定的目標位置
host move d:t01.dbf c:t01.dbf;
四、執行alter tablespace命令
a) 在物理上移動了數據後,還必須執行alter tablespace命令對數據庫文件進行邏輯修改
alter tablespace tangtao001 rename datafile 'd:t01.dbf' to 'c:t01.dbf';
五、使得表空間聯機
a) 在移動了數據文件後,爲了使用戶能夠訪問該表空間,必須將其轉變爲online的狀態
alter tablespace tangtao001 online;
表空間小結
一、瞭解表空間和數據文件的做用
二、掌握經常使用表空間,undo表空間和臨時表空間的創建方法
三、瞭解表空間的各個狀態
a) Online
b) Offline
c) Read write
d) Read only
四、瞭解移動數據文件的緣由,即便用alter tablespace和alter datatable命令移動數據文件的方法
參考博文:
https://www.cnblogs.com/qintangtao/archive/2012/11/04/2753549.html
https://www.cnblogs.com/0201zcr/p/4669548.html