首页 > 代码库 > oracle 表空间tablespace_name 文件满了,扩充方法

oracle 表空间tablespace_name 文件满了,扩充方法

当然:还是建议在简历表空间时就让其自动扩充的,代码如下:(注意倒数三行)

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;


好吧,假如你和博主一样给忘了,就跟着博主的步骤来吧:

1、用dba的用户登陆进去

2、查询一下该库表空间情况

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

3、我们会看到表空间prmms_log使用率90%多了,查看一下这个表空间有多少个文件

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

4、博主的表空间只有一个文件,既然我们的项目都报错了,肯定就是没有允许自动扩展了,但是是查一下为好:

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

5、伤心了,当时的确是没有让自动扩展。那怎么办呢?我们要么加文件,要么增加文件大小...博主想了想,还是不加文件了,直接让表空间自动增长吧:

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

路径是第三步查出来的。

ok,再次插入数据成功了!

把另外两种方法也贴上来吧:

(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;