查看數據庫表空間
select tablespace_name,contents from dba_tablespaces;
TABLESPACE_NAME CONTENTS
------------------------------ ---------
SYSTEM PERMANENT
SYSAUX PERMANENT
UNDOTBS1 UNDO
TEMP TEMPORARY
USERS PERMANENT
EXAMPLE PERMANENT
6 rows selected.
Elapsed: 00:00:00.01
一、永久表空間(PERMANENT):存儲永久對象(表,索引)
創建永久表空間
create tablespace data01 datafile size 10m;
select tablespace_name,contents from dba_tablespaces order by contents;
TABLESPACE_NAME CONTENTS
------------------------------ ---------
SYSTEM PERMANENT
SYSAUX PERMANENT
EXAMPLE PERMANENT
DATA01 PERMANENT
USERS PERMANENT
TEMP TEMPORARY
UNDOTBS1 UNDO
7 rows selected.
Elapsed: 00:00:00.01
查看錶空間所對應的物理文件
select tablespace_name,file_name from dba_data_files;
TABLESPACE_NAME FILE_NAME
USERS +DATA/orcl/datafile/users.259.974086707
UNDOTBS1 +DATA/orcl/datafile/undotbs1.258.974086707
SYSAUX +DATA/orcl/datafile/sysaux.257.974086707
SYSTEM +DATA/orcl/datafile/system.256.974086707
EXAMPLE +DATA/orcl/datafile/example.265.974086801
DATA01 +DATA/orcl/datafile/data01.275.975123385
在表空間下創建表
create table scott.t01 tablespace data01 as select * from scott.emp;
查看錶所在的表空間信息
select tablespace_name,table_name from dba_tables where table_name='T01';
TABLESPACE_NAME TABLE_NAME
------------------------------ ------------------------------
DATA01 T01
查看錶空間狀態
select tablespace_name,contents,status from dba_tablespaces order by contents;
TABLESPACE_NAME CONTENTS STATUS
------------------------------ --------- ---------
SYSTEM PERMANENT ONLINE
SYSAUX PERMANENT ONLINE
EXAMPLE PERMANENT ONLINE
DATA01 PERMANENT ONLINE
USERS PERMANENT ONLINE
TEMP TEMPORARY ONLINE
UNDOTBS1 UNDO ONLINE
7 rows selected.
Elapsed: 00:00:00.00
修改表空間的狀態
alter tablespace data01 read only;
在read only狀態下是不能對錶空間內的對象做改寫的,查詢、drop表是沒有問題的
alter tablespace data01 read write;
系統表空間、系統輔助表空間、UNDO表空間、TEMP表空間是不能被設置爲只讀的
alter tablespace data01 offline;
select tablespace_name,contents,status from dba_tablespaces order by contents;
TABLESPACE_NAME CONTENTS STATUS
------------------------------ --------- ---------
SYSTEM PERMANENT ONLINE
SYSAUX PERMANENT ONLINE
EXAMPLE PERMANENT ONLINE
DATA01 PERMANENT OFFLINE
USERS PERMANENT ONLINE
TEMP TEMPORARY ONLINE
UNDOTBS1 UNDO ONLINE
7 rows selected.
Elapsed: 00:00:00.01
select * from scott.t01;
select * from scott.t01
*
ERROR at line 1:
ORA-00376: file 6 cannot be read at this time
ORA-01110: data file 6: '+DATA/sundb/datafile/data01.275.975123385'
Elapsed: 00:00:00.03
表空間在OFFLINE狀態下是不能進行查詢修改操作的,但是可以進行DROP操作
alter tablespace data01 online;
表空間的空間監控
select tablespace_name,sum(blocks)/128 curr_mb from dba_data_files group by tablespace_name;
TABLESPACE_NAME CURR_MB
------------------------------ ----------
UNDOTBS1 545
SYSAUX 500
USERS 190
SYSTEM 680
EXAMPLE 100
DATA01 10
6 rows selected.
Elapsed: 00:00:00.04
select tablespace_name,sum(blocks)/128 curr_mb,round(sum(maxblocks)/128,0) max_mb from dba_data_files group by tablespace_name;
TABLESPACE_NAME CURR_MB MAX_MB
------------------------------ ---------- ----------
UNDOTBS1 545 32768
SYSAUX 500 32768
USERS 190 32768
SYSTEM 680 32768
EXAMPLE 100 32768
DATA01 10 0
6 rows selected.
Elapsed: 00:00:00.02
查看錶空間空閒大小
select tablespace_name,round(sum(blocks)/128,0) free_mb from dba_free_space group by tablespace_name;
TABLESPACE_NAME FREE_MB
------------------------------ ----------
SYSAUX 31
UNDOTBS1 142
USERS 10
SYSTEM 7
EXAMPLE 22
DATA01 9
6 rows selected.
Elapsed: 00:00:00.02
如果表空間已經沒有剩餘空間了,那麼它將從dba_free_space中消失表空間擴容
1.修改現有數據文件大小
select file_name from dba_data_files where tablespace_name='DATA01';
alter database datafile '+DATA/sundb/datafile/data01.275.975123385' resize 20m;
select tablespace_name,round(sum(blocks)/128,0) free_mb from dba_free_space group by tablespace_name;
TABLESPACE_NAME FREE_MB
------------------------------ ----------
SYSAUX 31
UNDOTBS1 142
USERS 10
SYSTEM 7
EXAMPLE 22
DATA01 19
6 rows selected.
Elapsed: 00:00:00.03
select tablespace_name,sum(blocks)/128 curr_mb,round(sum(maxblocks)/128,0) max_mb from dba_data_files group by tablespace_name;
TABLESPACE_NAME CURR_MB MAX_MB
------------------------------ ---------- ----------
UNDOTBS1 545 32768
SYSAUX 500 32768
USERS 190 32768
SYSTEM 680 32768
EXAMPLE 100 32768
DATA01 20 0
6 rows selected.
Elapsed: 00:00:00.02
2.打開數據文件的自動增長屬性
alter database datafile '+DATA/sundb/datafile/data01.275.975123385' autoextend on;
select tablespace_name,sum(blocks)/128 curr_mb,round(sum(maxblocks)/128,0) max_mb from dba_data_files group by tablespace_name;
TABLESPACE_NAME CURR_MB MAX_MB
------------------------------ ---------- ----------
UNDOTBS1 545 32768
SYSAUX 500 32768
USERS 190 32768
SYSTEM 680 32768
EXAMPLE 100 32768
DATA01 20 32768
6 rows selected.
Elapsed: 00:00:00.06
3.向表空間增加新的數據文件
alter tablespace data01 add datafile size 10m;
select tablespace_name,sum(blocks)/128 curr_mb,round(sum(maxblocks)/128,0) max_mb from dba_data_files group by tablespace_name;
TABLESPACE_NAME CURR_MB MAX_MB
------------------------------ ---------- ----------
UNDOTBS1 545 32768
SYSAUX 500 32768
USERS 190 32768
SYSTEM 680 32768
EXAMPLE 100 32768
DATA01 30 32768
6 rows selected.
Elapsed: 00:00:00.03
數據庫默認永久表空間
select * from database_properties where rownum<4;
PROPERTY_NAME PROPERTY_VALUE DESCRIPTION
DICT.BASE 2 dictionary base tables version #
DEFAULT_TEMP_TABLESPACE TEMP Name of default temporary tablespace
DEFAULT_PERMANENT_TABLESPACE USERS Name of default permanent tablespace
USER表空間現在屬於默認永久表空間,當我們創建了一個用戶,而且用戶沒有指明使用哪個表空間,那麼這個用戶所創建的所有對象都放到了USERS這個默認永久表空間裏面,默認永久表空間是不允許被刪除的drop tablespace data01 including contents and datafiles;
Tablespace dropped.
Elapsed: 00:00:00.75
drop tablespace users including contents and datafiles;
drop tablespace users including contents and datafiles
*
ERROR at line 1:
ORA-12919: Can not drop the default permanent tablespace
Elapsed: 00:00:00.01
二、UNDO表空間:不保存任何對象,這裏面存儲ROLLBACK SEGMENT回滾段(爲事物提供回退、恢復、讀一致性、閃回)
創建UNDO表空間
create undo tablespace undo02 datafile size 10m;
select tablespace_name,contents,status from dba_tablespaces;
TABLESPACE_NAME CONTENTS STATUS
------------------------------ --------- ---------
SYSTEM PERMANENT ONLINE
SYSAUX PERMANENT ONLINE
UNDOTBS1 UNDO ONLINE
TEMP TEMPORARY ONLINE
USERS PERMANENT ONLINE
EXAMPLE PERMANENT ONLINE
UNDO02 UNDO ONLINE
7 rows selected.
Elapsed: 00:00:00.00
剛創建的UNDO表空間是沒有用的,因爲數據庫在同一時刻只能使用一個UNDO表空間,show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
undo_tablespace參數顯示了數據庫當前用的UNDO表空間
alter system set undo_tablespace=undo02;
show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDO02
三、臨時表空間:不能保存永久對象,保存排序的中間結果,臨時表的數據
創建臨時表空間
create temporary tablespace temp02 tempfile size 10m;
select tablespace_name,contents,status from dba_tablespaces;
TABLESPACE_NAME CONTENTS STATUS
------------------------------ --------- ---------
SYSTEM PERMANENT ONLINE
SYSAUX PERMANENT ONLINE
UNDOTBS1 UNDO ONLINE
TEMP TEMPORARY ONLINE
USERS PERMANENT ONLINE
EXAMPLE PERMANENT ONLINE
UNDO02 UNDO ONLINE
TEMP02 TEMPORARY ONLINE
8 rows selected.
Elapsed: 00:00:00.00