oracle管理表空間和資料檔案詳解
表空間是資料庫的邏輯組成部分
從物理上將:資料庫資料存放在資料檔案中
從邏輯上將:資料庫則是存放在表空間中
表空間由乙個或是多個資料檔案組成
介紹:oracle中邏輯結構包括表空間、段、區、塊
說明:資料庫由表空間構成
而表空間又是由段構成
而段又是由區構成
而區又是由oracle塊構成
這樣的一種結果,可以提高資料庫的效率
介紹:表空間用於從邏輯上組織資料庫的資料
資料庫邏輯上是由乙個或是多個表空間組成的
表空間的作用:
1、控制資料庫占用的磁碟空間
2、dba可以將不同資料型別部署到不同的位置。這樣有利於提高i/o效能,同時利於備份和恢復等管理操作
建立表空間是使用create tablespace命令完成的,要注意時,一般情況下,建立表空間是特權使用者或是dba來執行的,如果用其它使用者來建立表空間,則使用者必須要具有create tablespace的系統許可權
在建立資料庫後,為便於管理表,最好建立自己的表空間
create tablespace 表空間名 datafile '資料檔案路徑' size 資料檔案的大小 uniform size 區的大小;
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
1、顯示表空間資訊
a) 查詢資料字典檢視dba_tablespaces。顯示表空間資訊
select tablespace_name from dba_tablespaces;
2、顯示表空間所包含的資料檔案
a) 查詢資料字典檢視dba_data_files,可以顯示表空間所包含的資料檔案
select file_name,bytes from dba_data_files where tablespace_name='表空間名';
當建立表空間時,表空間處於聯機的(online)狀態,此時該錶空間是可以訪問的,並且該錶空間是可以讀寫的,即可以查詢該錶空間的資料,而且還可以在表空間執行各種語句。但是在進行系統維護或是資料維護時,可能需要改變表空間的狀態,一般情況下,由特權使用者或是dba來操作
1、使表空間離線
alter tablespace 表空間名 offline;
2、使表空間聯機
alter tablespace 表空間名 online;
3、唯讀表空間
a) 當建立表空間時,表空間可以讀寫,如果不希望在該錶空間上執行update、delete、insert操作,那麼可以將該錶空間修改為唯讀
alter tablespace 表空間名 read only;
案例:1、知道表空間名。顯示該錶空間的所有表
select * from tall_tables where tablespace_name='表空間名';
2、知道表明,檢視該錶屬於哪個表空間
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表插入資料,這樣就會顯示空間不足的錯誤
案例說明:
1、建立乙個表空間tangtao001
2、在該錶空間上建立乙個普通標mydment 其結構和dept一樣
3、向該表中加入資料insert into mydment select * from dept;
4、當一定時候就會出現無法擴充套件的問題,怎麼辦?
1、增加資料檔案
alter tablespace 表空間名 add datafile '資料檔案存放路徑' size 資料檔案大小;
2、增加資料檔案的大小
alter tablespace 表空間名 add datafile '資料檔案存放的路徑' resize 資料檔案新的大小;
這裡需注意,資料檔案的大小不要超過500m
3、設定檔案的自動增長
alter tablespace 表空間名 add datafile '資料檔案存放路徑' autoextend on next 每次增加的大小 maxsize 資料檔案大小的最大值;
有時,如果資料檔案所在的磁碟損壞時,該資料檔案不能再使用,為了能夠重新使用,需要將這些檔案的副本移動到其它的磁碟,然後恢復
案例說明:
1、確定資料檔案所在的表空間
select tablespace_name from dba_data_files where file_name='d:\t01.dbf';
2、使表空間離線
a) 確保資料檔案的一致性,將表空間轉變為offline的狀態
alter tablespace tangtao001 offline;
3、使用命令移動資料檔案到指定的目標位置
host move d:t01.dbf c:t01.dbf;
4、執行alter tablespace命令
a) 在物理上移動了資料後,還必須執行alter tablespace命令對資料庫檔案進行邏輯修改
alter tablespace tangtao001 rename datafile 'd:t01.dbf' to 'c:t01.dbf';
5、使得表空間聯機
a) 在移動了資料檔案後,為了使使用者可以訪問該錶空間,必須將其轉變為online的狀態
alter tablespace tangtao001 online;
1、了解表空間和資料檔案的作用
2、掌握常用表空間,undo表空間和臨時表空間的建立方法
3、了解表空間的各個狀態
a) online
b) offline
c) read write
d) read only
4、了解移動資料檔案的原因,即使用alter tablespace和alter datatable命令移動資料檔案的方法
關於System表空間
每個oracle資料庫都包含乙個名為 system 的表空間 tablespace 她在資料庫建立時由 oracle自動建立。只要資料庫處於開啟 open 狀態,system 表空間就一定是聯機 online 的。管理員可以建立本地管理的 locally managed system 表空間 tab...
oracle命令建立表空間
使用oracle10g建立資料庫後,向資料庫中匯入了部分資料,第二天繼續向資料庫中匯入資料表時發生錯誤 查了很多資料發現原來是oracle表空間限制,導致無法繼續匯入資料的原因。如果在建立資料庫時沒有設定,oracle 預設的表空間大小為400m,當資料庫中資料量達到這個值,再向資料庫中匯入資料就會...
Oracle命令建立表空間
連線本地oracel資料庫 sqlplus sys 123456 orcl37 as sysdba 建立乙個名為ahsso 口令為ah123456的使用者,並指向名為ahsso的表空間。create user ahsso profile default identified by ah123456 ...