oracle 表空間tablespace_name 文件滿了,擴充方法

固然:仍是建議在簡歷表空間時就讓其自動擴充的,代碼以下:(注意倒數三行)sql

create tablespace prmms_log  
logging   
datafile 'C:\app\Administrator\product\11.2.0\dbhome_1\database\prmms_log.dbf'  
size 50m  
autoextend on   
next 50m maxsize 20480m  
extent management local;


好吧,假如你和博主同樣給忘了,就跟着博主的步驟來吧:app

一、用dba的用戶登錄進去spa

二、查詢一下該庫表空間狀況code

SELECT a.tablespace_name "表空間名",
a.bytes / 1024 / 1024 "表空間大小(M)",
(a.bytes - b.bytes) / 1024 / 1024 "已使用空間(M)",
b.bytes / 1024 / 1024 "空閒空間(M)",
round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "使用比"
FROM (SELECT tablespace_name, sum(bytes) bytes
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

三、咱們會看到表空間prmms_log使用率90%多了,查看一下這個表空間有多少個文件rem

SELECT file_name,
tablespace_name,
bytes / 1024 / 1024 "bytes MB",
maxbytes / 1024 / 1024 "maxbytes MB"
FROM dba_data_files
WHERE tablespace_name = 'prmms_log';

四、博主的表空間只有一個文件,既然咱們的項目都報錯了,確定就是沒有容許自動擴展了,可是是查一下爲好:table

SELECT file_id, file_name, tablespace_name, autoextensible, increment_by
FROM dba_data_files
WHERE tablespace_name = 'prmms_log'
ORDER BY file_id desc;

五、傷心了,當時的確是沒有讓自動擴展。那怎麼辦呢?咱們要麼加文件,要麼增長文件大小...博主想了想,仍是不加文件了,直接讓表空間自動增加吧:class

alter database datafile 'C:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\PRMMS_GIS2' autoextend on;

路徑是第三步查出來的。擴展

ok,再次插入數據成功了!file

把另外兩種方法也貼上來吧:簡歷

(1):直接增長文件大小

alter database datafile 'C:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\PRMMS_GIS2' resize 1500M;

(2):增長一個文件

alter tablespace prmms_log add datafile 'C:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\DATABASE\PRMMS_GIS2_add' size 5000M
autoextend on maxsize 20G;
相關文章
相關標籤/搜索