一、存盤結構


二、表空間的分類
1)系統表空間:
- 隨著資料庫創建被創建
- 包含資料字典資訊
- 包含系統回滾段
2)非系統表空間:
- 不同的segments分開存放(如:回滾段,臨時段,應用資料)
- 控制元件分配給用戶物件的空間容量
三、表空間的管理
3.1、本地管理的表空間(9i后)
1)概述:
- 自由擴展資訊被記錄在本身的位圖中
- 位圖中的每一位都對應一個資料塊或一組資料塊
- 位圖中的標志位顯示資料使用或未使用狀態資訊
2)創建方法:
CREATE TABLESPACE test DATAFILE '/oracle/oradata/test.dbf' SIZE 500M EXTENT MANAGEMENT LOCAL;
- 簡化了資料字典中的內容
- 空間分配和回收不產生回滾資訊
- 沒有接合鄰近extents的要求
3.2、字典管理的表空間(9i前)
1)概述:
- 預設的表空間管理方式
- 自由擴展資訊被記錄在資料字典中
2)創建方法:
CREATE TABLESPACE test DATAFILE '/oracle/oradata/test.dbf' SIZE 500M EXTENT MANAGEMENT DICTIONARY DEFAULT STORAGE ( initial 1M NEXT 1M );
- Extents在資料字典中管理
- 每個存盤在表空間的segments都可以有不同的存盤引數設定
- 有鄰近接合extents的要求
3.3、UNDO回滾段表空間
1)概述:
- 用來存盤回滾段資訊
- 不能包含其它物件
- Extents本地管理
- 在創建時僅僅能使用DATAFILE and EXTENT MANAGEMENT條件
2)創建方法:
CREATE UNDO TABLESPACE undo1 DATAFILE '/oracle/oradata/undo01.dbf' SIZE 40M;
3.4、TEMP臨時表空間
1)概述:
- 用來做排序操作
- 不能包含固定的物件
- 最好使用本地表空間管理
2)創建方法:
CREATE TEMPORARY TABLESPACE temp TEMPFILE '/oracle/oradata/temp01.dbf' SIZE 500M EXTENT MANAGEMENT LOCAL;
3.5、洗掉表空間
1)概述:
- 從資料字典中洗掉表空間資訊
- 通過 AND DATAFILES條件可在作業系統上洗掉表空間的資料檔案
2)創建方法:
DROP TABLESPACE test INCLUDING CONTENTS AND DATAFILES;
3.6、改變表空間的大小
1)概述:
- 增加資料檔案
- 改變資料檔案大小:自動/手動
2)創建方法:
手動改變資料檔案大小
ALTER DATABASE DATAFILE '/test/oradata/app_data_02.dbf' RESIZE 200M;
3.7、在表空間中增加一個資料檔案
1)創建方法:
ALTER TABLESPACE app_data ADD DATAFILE '/u01/oradata/app_data_03.dbf' SIZE 200M;
3.8、移動資料檔案(修改表空間)
1)概述:
- 表空間必須為下線狀態
- 目標資料檔案必須存在
2)創建方法:
ALTER TABLESPACE userdata RENAME DATAFILE '/u01/oradata/userdata01.dbf' TO '/u01/oradata/userdata01.dbf';
3.9、獲取表空間資訊
1)表空間資訊:
- DBA_TABLESPACES
- V$TABLESPACE
2)資料檔案資訊:
- DBA_DATA_FILES
- V$DATAFILE
3)臨時檔案資訊:
- DBA_TEMP_FILES
- V$TEMPFILE
四、表空間的管理案例一
4.1、案例說明
- 請監控資料庫表空間使用情況,如果表空間使用比例達到80%以上,請擴展其空間,
- 要求,通過sqlplus運行sql腳本:test.sql,
4.2、前期準備
1)查看表空間資料結構:
desc dba_tablespaces;

2)查看表空間:
select TABLESPACE_NAME from dba_tablespaces;

3)查看資料檔案:
select name from v$datafile;

4)監控oracle表空間腳本:
select a.tablespace_name,a.bytes/1024/1024 "Sum MB",a.maxbytes/1024/1024 "Max MB",(a.bytes-b.bytes)/1024/1024 "used MB",b.bytes/1024/1024 "free MB", round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used", round(((a.bytes-b.bytes)/a.maxbytes)*100,2) "percent_used_max" from (select tablespace_name,sum(bytes) bytes,sum(maxbytes) maxbytes from dba_data_files group by tablespace_name) a, (select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) b where a.tablespace_name=b.tablespace_name order by ((a.bytes-b.bytes)/a.bytes) desc;

可以看到,SYSTEM和SYSAUX兩個表空間的使用率已超過80%,
4.3、擴展方法一:修改資料檔案
1)查看表空間與資料檔案的對應關系:
select FILE_NAME,TABLESPACE_NAME from dba_data_files;

2)修改資料檔案:
ALTER DATABASE DATAFILE 'C:\APP\ADMINISTRATOR\ORADATA\TEST\SYSTEM01.DBF' RESIZE 1000M; ALTER DATABASE DATAFILE 'C:\APP\ADMINISTRATOR\ORADATA\TEST\SYSAUX01.DBF' RESIZE 800M;
3)重新監控oracle表空間:

4.4、擴展方法二:增加資料檔案
1)增加資料檔案:
ALTER TABLESPACE SYSTEM ADD DATAFILE 'C:\APP\ADMINISTRATOR\ORADATA\TEST\SYSTEM02.DBF' SIZE 200M; ALTER TABLESPACE SYSAUX ADD DATAFILE 'C:\APP\ADMINISTRATOR\ORADATA\TEST\SYSAUX02.DBF' SIZE 200M;
2)重新監控oracle表空間:

五、表空間的管理案例二
5.1、案例說明:
業務系統上線,需要創建1個業務表空間:
- 表空間名test01
- 大小100M
- 自動擴展關閉
- 多個資料檔案
1)操作方法如下:
create tablespace test01 datafile 'C:\APP\ADMINISTRATOR\ORADATA\TEST\test01.dbf' size 100m autoextend off; alter tablespace test01 add datafile 'C:\APP\ADMINISTRATOR\ORADATA\TEST\test02.dbf' size 100m autoextend off; alter tablespace test01 add datafile 'C:\APP\ADMINISTRATOR\ORADATA\TEST\test03.dbf' size 100m autoextend off;
六、表空間的管理案例三
6.1、案例說明:
業務系統上線,需要創建1臨時表空間:
- 表空間名testtemp
- 大小100M
- 自動擴展關閉
1)操作方法如下:
create temporary tablespace testtemp tempfile 'C:\APP\ADMINISTRATOR\ORADATA\TEST\testtemp01.dbf' size 100m autoextend off;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/172660.html
標籤:Oracle
