前言
表空間是 Oracle 特有的一種邏輯結構,是管理和組織 Oracle 數據文件一種方式,一個Oracle 數據庫能夠有一個或多個表空間,而一個表空間則對應一個或多個物理的數據庫文件。Oracle 的表空間分為永久空間和臨時表空間,同時又分為 smallfile tablespace和 bigfile tablespace。表空間管理是 Oracle dba的一項重要日常工作。

今天小編就從永久表空間管理和臨時表空間管理兩個維度,詳細介紹 Oracle表空間管理的具體操作。
永久表空間管理
1.1 創建表空間

參數說明:
- EXTENT MANAGEMENT LOCAL AUTOALLOCATE:區大小由系統自動分配。
- BLOCKSIZE 8K:塊大小為8K。
- SEGMENT SPACE MANAGEMENT AUTO:段管理是自動的。
- FLASHBACK ON:開啟閃回。
1.2 修改表空間
1、修改數據文件大小
SQL> ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/TSH1/users01.dbf'
RESIZE 10M;
2、增加表空間數據文件
ALTER TABLESPACE USERS ADD DATAFILE '/u01/app/oracle/oradata/TSH1/users02.dbf' SIZE 20M AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED;
注:日常工作中建議通過增加數據文件的方式給表空間擴容,因為對于在線業務系統來說,通過修改數據文件大小的方式,對業務會產生一定的影響。
1.3 重命名表空間
1) 設置表空間脫機
SQL> ALTER TABLESPACE USERS OFFLINE NORMAL;
2) 用一個操作系統實用程序重新命名此文件如UNIX的cp或mv,或者windows的copy命令
$cp /u01/app/oracle/test01.dbf /u02/app/oracle/test01.dbf
3) 在數據文件在線之前使用以下命令重命名數據庫中的數據文件
SQL> ALTER TABLESPACE USERS RENAME DATAFILE
'/u01/app/oracle/oradata/TSH1/users01.dbf'
TO
'/u02/app/oracle/oradata/TSH1/users01.dbf'
4)設置表空間online
SQL> ALTER TABLESPACE USERS ONLINE ;
1.4 設置表空間只讀
1) 設置表空間只讀
SQL> ALTER TABLESPACE USERS READ ONLY;
2) 設置表空間再次可寫
SQL> ALTER TABLESPACE USERS READ WRITE;
1.5 設置表空間脫機、聯機
1)設置表空間脫機
SQL> ALTER TABLESPACE USERS OFFLINE NORMAL;
2)設置表空間聯機
SQL> ALTER TABLESPACE USERS ONLINE;
1.6 刪除表空間
SQL> DROP TABLESPACE USERS INCLUDING CONTENTS AND DATAFILES;
1.7 修改表空間為默認永久表空間
1)修改表空間為默認永久表空間
SQL>ALTER DATABASE DEFAULT TABLESPACE users;
2)查詢當前數據庫默認的永久表空間
SQL>SELECT property_value from database_properties where property_name='DEFAULT_PERMANENT_TABLESPACE';
臨時表空間管理

2.1 創建臨時表空間
SQL> CREATE TEMPORARY TABLESPACE TEMP TEMPFILE
'/u01/app/oracle/oradata/TSH1/temp01.dbf' SIZE 31M AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
參數說明:
- EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M:區管理為本地管理,且區大小為1M。
2.2 修改臨時表空間
SQL> ALTER DATABASE TEMPFILE '/u01/app/oracle/oradata/TSH1/temp01.dbf'
RESIZE 60M;
2.3 刪除臨時表空間
SQL> DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES;
2.4 臨時表空間組管理
2.4.1 創建臨時表空間組
SQL> CREATE TEMPORARY TABLESPACE TEMP TEMPFILE
'/u01/app/oracle/oradata/TSH1/temp01.dbf' SIZE 31M AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
TABLESPACE GROUP tmpgrp1;
說明:
增加一個名為tmpgrp1的臨時表空間組。
2.4.2 給臨時表空間組增加表空間
SQL> ALTER TABLESPACE temp02 TABLESPACE GROUP tmpgrp2;
2.4.3 將一個組設置為默認臨時表空間
SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tmpgrp1;
表空間管理涉及的視圖
為了管理ORACLE數據庫的表空間,要熟悉幾個關鍵的字典視圖:
- DBADATAFILES
- DBA_TABLESPACES
- DBAFREESPACE
- DBA_SEGMENTS
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。
您可能感興趣的文章:- Oracle 查看表空間的大小及使用情況sql語句
- oracle 創建表空間詳細介紹
- Oracle新建用戶、角色,授權,建表空間的sql語句
- oracle表空間表分區詳解及oracle表分區查詢使用方法
- oracle增加表空間大小兩種實現方法
- Oracle 表空間查詢與操作方法
- Oracle中如何把表和索引放在不同的表空間里
- Oracle表空間數據文件移動的方法
- Oracle修改表空間大小的方法
- Linux下Oracle刪除用戶和表空間的方法