1. 程式人生 > >針對oracle資料庫表空間不足的問題

針對oracle資料庫表空間不足的問題

Oracle表空間不足的處理步驟

1.檢視所有表空間使用情況

select 
b.file_id 檔案ID號, 
b.tablespace_name 表空間名, 
b.bytes/1024/1024||'M'位元組數, 
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024||'M' 已使用, 
sum(nvl(a.bytes,0))/1024/1024||'M' 剩餘空間, 
100 - sum(nvl(a.bytes,0))/(b.bytes)*100 佔用百分比 
from dba_free_space a,dba_data_files b 
where a.file_id=b.file_id 
group by b.tablespace_name,b.file_id,b.bytes 
order by b.file_id;

2.檢視使用者預設的表空間.

sql: select username,default_tablespace from dba_users;

3.檢視要擴充套件的表空間使用的資料檔案路徑與名字

sql:select * from dba_data_files where tablespace_name like 'USERS%';

4.擴充套件表空間,表空間擴充套件有兩種方法:增加資料檔案;調整當前資料檔案的大小或擴充套件的大小。

(1)增加資料檔案

ALTER TABLESPACE TESTTBS

ADD DATAFILE 'D:/ora/datafile/users.ora' SIZE 500M

AUTOEXTEND ON

NEXT 50M

MAXSIZE 2000M;

增加了一個500M的資料檔案,並且可以自動擴充套件到2G,每次擴充套件50M。

(2)增加當前資料檔案的大小   

ALTER DATABASE

DATAFILE 'D:/ora/datafile/users.ora'

RESIZE 50000M;

或者使用file_id         //推薦使用

ALTER DATABASE

DATAFILE 10

RESIZE 50000M;

(3)在使用過程中,如果想改變某個資料檔案的最大大小,可以

ALTER DATABASE

DATAFILE 'D:/ora/datafile/users.ora'

AUTOEXTEND ON

MAXSIZE 10240M;

測試:

select 
b.file_id 檔案ID號, 
b.tablespace_name 表空間名, 
b.bytes/1024/1024||'M'位元組數, 
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024||'M' 已使用, 
sum(nvl(a.bytes,0))/1024/1024||'M' 剩餘空間, 
100 - sum(nvl(a.bytes,0))/(b.bytes)*100 佔用百分比 
from dba_free_space a,dba_data_files b 
where a.file_id=b.file_id 
group by b.tablespace_name,b.file_id,b.bytes 
order by b.file_id;

select username,default_tablespace from dba_users;

select * from dba_data_files where tablespace_name like '%LSYW';    

ALTER DATABASE DATAFILE 5 RESIZE 4500M;   
ALTER DATABASE DATAFILE 6 RESIZE 4500M;
ALTER DATABASE DATAFILE 7 RESIZE 4500M;
ALTER DATABASE DATAFILE 11 RESIZE 4500M;
ALTER DATABASE DATAFILE 16 RESIZE 4500M;