一、数据库表空间不足导致了,插入操作会报出
conn.msg = ORA-01653: 表 *******表名字********无法通过 8192 (在表空间 USERS 中) 扩展 ORA-06512: 在 "调用的函数", line 58 ORA-01403: 未找到任何数据 [db.cpp:233]
这个操作报出 查询得到是数据表空间大小不足导致。
二、查看表空间占用的一些相关信息
--查询表空间大小 占用的内容
SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)", TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比", F.TOTAL_BYTES "空闲空间(M)", F.MAX_BYTES "最大块(M)" FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES, ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, (SELECT DD.TABLESPACE_NAME, ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 1;
结果:
这个是所有的表的空间的所有的占用的信息大小,表的空间大小是分配给表空间的所有大小信息。使用比如果比较高的话可能就会出现空间不足的情况导致数据无法插入。
三、查询表空间对应的物理磁盘的绝对地址和大小和文件ID
---查询数据文件以及数据文件大小
select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;
四、以下三种都可以进行对表空间增加大小
1、直接不改变之前的DBF文件,另外添加一个文件的语句,可以增加表空间的大小
--让数据文件自动扩展
alter tablespace users add datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF' size 32760m autoextend on next 1024m maxsize unlimited; --segment space management auto extent management local;
据说可以连接上一句一起执行(把上一句分号去掉即可),没执行,不知道执行效果,谨慎期间,慎用
2、--让数据文件自动扩展 在源文件中直接改动表空间大小 设置成自动扩展的形式 增速是以100m的大小自动扩展 扩展最大到10000m为止
alter database datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF' autoextend on next 100m maxsize 10000m
3、--把数据文件大小调整 重新调整源文件的内容大小 不是自动扩展的 直接写死的大小情况
alter database datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\EXAMPLE01.DBF' resize 500M;
五、把4的上面的操作执行完之后 在进行查询就可以看到分配的总空间有了很大的增加 占用率占用下降。
Atas ialah kandungan terperinci 怎么解决数据库表空间不足. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!