Oracle管理表空间和数据文件详解
管理表空間和數(shù)據(jù)文件
介紹
表空間是數(shù)據(jù)庫的邏輯組成部分
從物理上將:數(shù)據(jù)庫數(shù)據(jù)存放在數(shù)據(jù)文件中
從邏輯上將:數(shù)據(jù)庫則是存放在表空間中
表空間由一個或是多個數(shù)據(jù)文件組成
?
數(shù)據(jù)庫的邏輯結(jié)構(gòu)
介紹:
Oracle中邏輯結(jié)構(gòu)包括表空間、段、區(qū)、塊
說明:
數(shù)據(jù)庫由表空間構(gòu)成
而表空間又是由段構(gòu)成
而段又是由區(qū)構(gòu)成
而區(qū)又是由Oracle塊構(gòu)成
?
?
這樣的一種結(jié)果,可以提高數(shù)據(jù)庫的效率
?
表空間
介紹:
表空間用于從邏輯上組織數(shù)據(jù)庫的數(shù)據(jù)
數(shù)據(jù)庫邏輯上是由一個或是多個表空間組成的
?
表空間的作用:
1、控制數(shù)據(jù)庫占用的磁盤空間
2、dba可以將不同數(shù)據(jù)類型部署到不同的位置。這樣有利于提高i/o性能,同時利于備份和恢復(fù)等管理操作
?
建立表空間
建立表空間是使用create?tablespace命令完成的,要注意時,一般情況下,建立表空間是特權(quán)用戶或是dba來執(zhí)行的,如果用其它用戶來創(chuàng)建表空間,則用戶必須要具有create?tablespace的系統(tǒng)權(quán)限
?
建立數(shù)據(jù)表空間
在建立數(shù)據(jù)庫后,為便于管理表,最好建立自己的表空間
create?tablespace?表空間名?datafile?'數(shù)據(jù)文件路徑'?size?數(shù)據(jù)文件的大小?uniform?size?區(qū)的大小;
?
create?tablespace?yangmin001?datafile?'/oradataa/yangmin001.dbf'?size?20m?uniform?size?128k;
?說明:創(chuàng)建一個20M的表空間,且表空間的區(qū)域大小為128K? 。'/oradataa/yangmin001.dbf' 為數(shù)據(jù)文件
使用數(shù)據(jù)表空間
向新建的表空間添加表:
create table test1(testnu number(8),testname varchar2(15),testsex varchar2(13)) tablespace yangmin001;
?
說明:執(zhí)行完上述命令后,會建立名稱為yangmin001?的表空間,并為該表空間建立名稱為yangmin001.dbf的數(shù)據(jù)文件,區(qū)的大小為128k
?
1、顯示表空間信息
a)?查詢數(shù)據(jù)字典視圖dba_tablespaces。顯示表空間信息
select?tablespace_name?from?dba_tablespaces;
2、顯示表空間所包含的數(shù)據(jù)文件
a)?查詢數(shù)據(jù)字典視圖dba_data_files,可以顯示表空間所包含的數(shù)據(jù)文件
select?file_name,bytes?from?dba_data_files?where?tablespace_name='表空間名'; ??表空間名字一定要大寫。
?
改變表空間的狀態(tài)
當建立表空間時,表空間處于聯(lián)機的(online)狀態(tài),此時該表空間是可以訪問的,并且該表空間是可以讀寫的,即可以查詢該表空間的數(shù)據(jù),而且還可以在表空間執(zhí)行各種語句。但是在進行系統(tǒng)維護或是數(shù)據(jù)維護時,可能需要改變表空間的狀態(tài),一般情況下,由特權(quán)用戶或是dba來操作
1、使表空間脫機
alter?tablespace?表空間名?offline;
?
2、使表空間聯(lián)機
alter?tablespace?表空間名?online;
?
3、只讀表空間
a)?當建立表空間時,表空間可以讀寫,如果不希望在該表空間上執(zhí)行update、delete、insert操作,那么可以將該表空間修改為只讀
alter?tablespace?表空間名?read?only;
?
案例:
1、知道表空間名。顯示該表空間的所有表
select?table_name from all_tables where TABLESPACE_NAME='表空間' ; 表空間名字一定要大寫。
2、知道表名,查看該表屬于哪個表空間
select?tablespace_name,table_name?from?user_tables?where?table_name='TEST1';
select * from user_tables where table_name=‘表名'; ?表名一定要大寫
?
注意:
通過2,可以知道scott.emp是在system這個表空間上,現(xiàn)在可以將system改為只讀,但是不會成功。因為system是系統(tǒng)表空間,如果是普通表空間,可以將其設(shè)為只讀
?
刪除表空間
一般情況下,有特權(quán)用戶或是dba來操作,如果是其它用戶操作,那么要求用戶具有drop?tablespace系統(tǒng)權(quán)限
drop?tablespace?表空間名?including?contents?and?datafiles;
?
說明:
Including?contents?表示刪除表空間,刪除該表空間的所有數(shù)據(jù)庫對象,而datafiles表示將數(shù)據(jù)庫文件也刪除
?
擴展表空間
表空間是由數(shù)據(jù)文件組成的,表空間的大小實際上就是數(shù)據(jù)文件相加后的大小。那么我們可以想象。假定表employee存放到y(tǒng)angmin001表空間上,初始大小就是2m。當數(shù)據(jù)滿2m空間后,如果在向employee表插入數(shù)據(jù),這樣就會顯示空間不足的錯誤
?
案例說明:
1、建立一個表空間yangmin001
2、在該表空間上建立一個普通表test2 其結(jié)構(gòu)和test1一樣
3、向該表中加入數(shù)據(jù)insert?into?test2 select?*?from?test1;
4、當一定時候就會出現(xiàn)無法擴展的問題,怎么辦?
5、就擴展該表空間,為其增加更多的存儲空間。有三種方法:
?
?
1、增加數(shù)據(jù)文件
alter?tablespace?表空間名?add?datafile?'數(shù)據(jù)文件存放路徑'?size?數(shù)據(jù)文件大小;
?
2、增加數(shù)據(jù)文件的大小
alter?tablespace?表空間名?add?datafile?'數(shù)據(jù)文件存放的路徑'?resize?數(shù)據(jù)文件新的大小;
這里需注意,數(shù)據(jù)文件的大小不要超過500m
?
3、設(shè)置文件的自動增長
alter?tablespace?表空間名?add?datafile?'數(shù)據(jù)文件存放路徑'?autoextend?on?next?每次增加的大小?maxsize?數(shù)據(jù)文件大小的最大值;
?
移動數(shù)據(jù)文件
有時,如果數(shù)據(jù)文件所在的磁盤損壞時,該數(shù)據(jù)文件不能再使用,為了能夠重新使用,需要將這些文件的副本移動到其它的磁盤,然后恢復(fù)
?
案例說明:
1、確定數(shù)據(jù)文件所在的表空間
select?tablespace_name?from?dba_data_files?where?file_name='/oradataa/yangmin001.dbf';
2、使表空間脫機
a)?確保數(shù)據(jù)文件的一致性,將表空間轉(zhuǎn)變?yōu)閛ffline的狀態(tài)
alter?tablespace?yangmin001?offline;
3、使用命令移動數(shù)據(jù)文件到指定的目標位置
host?mv /oradataa/yangmin001.dbf?/oradatab/yangmin001.dbf;
4、執(zhí)行alter?tablespace命令
a)?在物理上移動了數(shù)據(jù)后,還必須執(zhí)行alter?tablespace命令對數(shù)據(jù)庫文件進行邏輯修改
alter?tablespace?yangmin001?rename?datafile?'/oradataa/yangmin001.dbf'?to?'/oradatab/yangmin001.dbf';
5、使得表空間聯(lián)機
a)?在移動了數(shù)據(jù)文件后,為了使用戶可以訪問該表空間,必須將其轉(zhuǎn)變?yōu)閛nline的狀態(tài)
alter?tablespace?yangmin001?online;
?
表空間小結(jié)
1、了解表空間和數(shù)據(jù)文件的作用
2、掌握常用表空間,undo表空間和臨時表空間的建立方法
3、了解表空間的各個狀態(tài)
a)?Online
b)?Offline
c)?Read?write
d)?Read?only
4、了解移動數(shù)據(jù)文件的原因,即使用alter?tablespace和alter?datatable命令移動數(shù)據(jù)文件的方法
轉(zhuǎn)載于:https://www.cnblogs.com/fiberhome/p/7272893.html
總結(jié)
以上是生活随笔為你收集整理的Oracle管理表空间和数据文件详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bzoj 4832 抵制克苏恩
- 下一篇: tesseract 4.0 编译安装(C