1. 程式人生 > 其它 >oracle表空間

oracle表空間

目錄

oracle表空間

1、查詢表空間目錄

select * from dba_directories;

查詢表空間datafile以及狀態

select file#,name,status from v$datafile;

2、建立表空間

2.1、linux建立表空間檔案根路徑以及表空間檔案

mkdir -p /home/oracle/u01/oradata/APIDEV
touch /home/oracle/u01/oradata/APIDEV/api_data_01.dbf

2.2、plsql執行建立表空間

TABLESPACE:設定表空間名稱

SIZE:設定初始值的容量大小

AUTOEXTEND ON NEXT:設定自動擴容的大小

MAXSIZE UNLIMITED:設定最大容量,目前最大容量沒有上限

CREATE TABLESPACE API_DATA LOGGING 
     DATAFILE '/home/oracle/u01/oradata/APIDEV/api_data_01.dbf' 
     SIZE 32M REUSE AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED 
     EXTENT MANAGEMENT LOCAL;

3、刪除表空間(謹慎操作)

語法:drop tablespace tablespace_name [including contents] [cascade constraints]

語法解析

drop tablespace:刪除表空間的關鍵字,tablespace_name 表示表空間名字

[including contents]:表示在刪除表空間的時候把表空間中的資料檔案一併刪除

[cascade constraints]:表示在刪除表空間的時候把表空間的完整性也一併刪除。比如表的外來鍵,和觸發器等就是表的完整性約束。

3.1、刪除非空表空間,包含物理檔案

drop tablespace tablespace_name including contents and datafiles;

如果其他表空間中的表有外來鍵等約束關聯到了本表空間中的表的欄位,就要加上CASCADE CONSTRAINTS

drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;

3.2、刪除非空表空間,不包含物理檔案

drop tablespace tablespace_name including contents;

3.3、刪除空的表空間,不包含物理檔案

drop tablespace tablespace_name;

3.4、刪除空表空間,包含物理檔案

drop tablespace tablespace_name including datafiles;

4、查看錶空間使用大小

--查看錶空間使用率(包含臨時表空間)
select * from (
Select a.tablespace_name,
(a.bytes- b.bytes) "表空間使用大小(BYTE)",
a.bytes/(1024*1024*1024) "表空間大小(GB)",
b.bytes/(1024*1024*1024) "表空間剩餘大小(GB)",
(a.bytes- b.bytes)/(1024*1024*1024) "表空間使用大小(GB)",
to_char((1 - b.bytes/a.bytes)*100,'99.99999') || '%' "使用率"
from (select tablespace_name,
sum(bytes) bytes
from dba_data_files
group by tablespace_name) a,
(select tablespace_name,
sum(bytes) bytes
from dba_free_space
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
union all
select c.tablespace_name,
d.bytes_used "表空間使用大小(BYTE)",
c.bytes/(1024*1024*1024) "表空間大小(GB)",
(c.bytes-d.bytes_used)/(1024*1024*1024) "表空間剩餘大小(GB)",
d.bytes_used/(1024*1024*1024) "表空間使用大小(GB)",
to_char(d.bytes_used*100/c.bytes,'99.99999') || '%' "使用率"
from
(select tablespace_name,sum(bytes) bytes
from dba_temp_files group by tablespace_name) c,
(select tablespace_name,sum(bytes_cached) bytes_used
from v$temp_extent_pool group by tablespace_name) d
where c.tablespace_name = d.tablespace_name
)
order by tablespace_name;

4、擴容表空間

4.1、設定擴容表空間大小

alter database datafile '/home/oracle/u01/oradata/APIDEV/api_data_01.dbf' autoextend on;
alter database datafile '/home/oracle/u01/oradata/APIDEV/api_data_01.dbf' resize 6G;

4.2、設定自動擴容表空間大小

alter database datafile '/home/oracle/u01/oradata/APIDEV/api_data_01.dbf' autoextend on next 200M;