日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle管理表空间和数据文件详解

發布時間:2025/7/25 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle管理表空间和数据文件详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

管理表空間和數據文件

介紹

表空間是數據庫的邏輯組成部分

從物理上將:數據庫數據存放在數據文件中

從邏輯上將:數據庫則是存放在表空間中

表空間由一個或是多個數據文件組成

?

數據庫的邏輯結構

介紹:

Oracle中邏輯結構包括表空間、段、區、塊

說明:

數據庫由表空間構成

而表空間又是由段構成

而段又是由區構成

而區又是由Oracle塊構成

?

?

這樣的一種結果,可以提高數據庫的效率

?

表空間

介紹:

表空間用于從邏輯上組織數據庫的數據

數據庫邏輯上是由一個或是多個表空間組成的

?

表空間的作用:

1、控制數據庫占用的磁盤空間

2、dba可以將不同數據類型部署到不同的位置。這樣有利于提高i/o性能,同時利于備份和恢復等管理操作

?

建立表空間

建立表空間是使用create?tablespace命令完成的,要注意時,一般情況下,建立表空間是特權用戶或是dba來執行的,如果用其它用戶來創建表空間,則用戶必須要具有create?tablespace的系統權限

?

建立數據表空間

在建立數據庫后,為便于管理表,最好建立自己的表空間

create?tablespace?表空間名?datafile?'數據文件路徑'?size?數據文件的大小?uniform?size?區的大小;

?

create?tablespace?yangmin001?datafile?'/oradataa/yangmin001.dbf'?size?20m?uniform?size?128k;

?說明:創建一個20M的表空間,且表空間的區域大小為128K? 。'/oradataa/yangmin001.dbf' 為數據文件

使用數據表空間

向新建的表空間添加表:

create table test1(testnu number(8),testname varchar2(15),testsex varchar2(13)) tablespace yangmin001;

?

說明:執行完上述命令后,會建立名稱為yangmin001?的表空間,并為該表空間建立名稱為yangmin001.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?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這個表空間上,現在可以將system改為只讀,但是不會成功。因為system是系統表空間,如果是普通表空間,可以將其設為只讀

?

刪除表空間

一般情況下,有特權用戶或是dba來操作,如果是其它用戶操作,那么要求用戶具有drop?tablespace系統權限

drop?tablespace?表空間名?including?contents?and?datafiles;

?

說明:

Including?contents?表示刪除表空間,刪除該表空間的所有數據庫對象,而datafiles表示將數據庫文件也刪除

?

擴展表空間

表空間是由數據文件組成的,表空間的大小實際上就是數據文件相加后的大小。那么我們可以想象。假定表employee存放到yangmin001表空間上,初始大小就是2m。當數據滿2m空間后,如果在向employee表插入數據,這樣就會顯示空間不足的錯誤

?

案例說明:

1、建立一個表空間yangmin001

2、在該表空間上建立一個普通表test2 其結構和test1一樣

3、向該表中加入數據insert?into?test2 select?*?from?test1;

4、當一定時候就會出現無法擴展的問題,怎么辦?

5、就擴展該表空間,為其增加更多的存儲空間。有三種方法:

?

?

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='/oradataa/yangmin001.dbf';

2、使表空間脫機

a)?確保數據文件的一致性,將表空間轉變為offline的狀態

alter?tablespace?yangmin001?offline;

3、使用命令移動數據文件到指定的目標位置

host?mv /oradataa/yangmin001.dbf?/oradatab/yangmin001.dbf;

4、執行alter?tablespace命令

a)?在物理上移動了數據后,還必須執行alter?tablespace命令對數據庫文件進行邏輯修改

alter?tablespace?yangmin001?rename?datafile?'/oradataa/yangmin001.dbf'?to?'/oradatab/yangmin001.dbf';

5、使得表空間聯機

a)?在移動了數據文件后,為了使用戶可以訪問該表空間,必須將其轉變為online的狀態

alter?tablespace?yangmin001?online;

?

表空間小結

1、了解表空間和數據文件的作用

2、掌握常用表空間,undo表空間和臨時表空間的建立方法

3、了解表空間的各個狀態

a)?Online

b)?Offline

c)?Read?write

d)?Read?only

4、了解移動數據文件的原因,即使用alter?tablespace和alter?datatable命令移動數據文件的方法

轉載于:https://www.cnblogs.com/fiberhome/p/7272893.html

總結

以上是生活随笔為你收集整理的Oracle管理表空间和数据文件详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。