針對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;