ORACLE 空间不足

ORACLE 空间不足,第1张

对新手来说,这种报错还是经常遇到的o(∩_∩)o 。如果你确认了你的表空间足够大,那么,我认为多半就是你在做imp时建表的问题。这个问题怎么产生的呢?可能是:
1、你在exp时使用了compress=y参数,这个参数乍一看是压缩的意思,实际上它的作用是将建表时的initial值增大到该表在原数据库中占用的空间大小。也就是说如果原表水线比较高那直接导入数据的话基本上这个错误是无法避免的。
2、你原表的initail值本来设置较大,在新数据库中虽然有空间但是这些空间并不连续。数据库找不到合适的连续块进行分配。
出现以上问题最快的解决办法就是自己先在新库中手工建立需要导入的对象,然后再进行数据导入就行。(别忘了使用 ignore=y 参数^^)
当然了还有一种比较特殊的情况,就是你的每一条数据的数据量都比较大,直接超出了一个数据块的大小,那么就会发生“行链接”的情况,这样你导入的数据的大小将会远超你看到的dmp包的大小,也会导致1658的错误发生。

电脑开机提示注册表空间不足,可以通过增加虚拟内存的方式将此提示去除,步骤如下:

1、打开电脑,鼠标右键“我的电脑”,找到属性:

2、打开属性,点击页面上面的高级,在性能选项中点击“设置”:

3、在打开的页面中选择高级,在下面的虚拟内存中选择“更改”:

4、在打开的虚拟内存页面中选择C盘,然后将初始大小和最大值都增大,然后点击确定即可,这样就把虚拟内存增大,即可去除注册表空间不足的提示了:

你的用户系统权限是不是没设置‘unlimited tablespace’?不然200G不会出现这种问题的。
使用sql查看表空间使用情况:
select atablespace_name,
abytes / 1024 / 1024 "Sum MB",
(abytes - bbytes) / 1024 / 1024 "used MB",
bbytes / 1024 / 1024 "free MB",
round(((abytes - bbytes) / abytes) 100, 2) "percent_used"
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 atablespace_name = btablespace_name
order by ((abytes - bbytes) / abytes) desc;
实在不行的话,再迁移表空间。

使用裸设备创建表空间和使用普通文件系统创建表空间没有太大区别,只是把数据文件名换成裸分区名。在裸设备上创建表空间,Oracle首先要进行格式化,这个过程比在文件系统上格式化要慢,需要等待一段时间。数据文件的体积要小于裸设备的体积,需要留出部分空间做裸设备的管理工作。

当通过ORACLE中的create table as select 语句创建一张新表时,新表的数据量为比较大,如10亿,这时SQLPlus很可能就会提示“ORA-01653: ”错误信息。这个错误信息暗示表空间大小不够,需要为表空间增加数据文件。
分析:
1 查询表空间剩余字节大小
SELECT TABLESPACE_NAME, SUM(BYTES)/1024/1024 AS FREE SPACE(M)
FROM DBA_FREE_SPACE
WHERE TABLESPACE_NAME = '&tablespace_name'
GROUP BY TABLESPACE_NAME;
注:如果是临时表空间,请查询DBA_TEMP_FREE_SPACE
SELECT TABLESPACE_NAME, FREE_SPACE/1024/1024 AS FREE SPACE(M)
FROM DBA_TEMP_FREE_SPACE
WHERE TABLESPACE_NAME = '&tablespace_name';
2 如果不知道表空间数据文件目录规划,可以先查询出表空间所有数据文件
SELECT TABLESPACE_NAME, FILE_ID, FILE_NAME, BYTES/1024/1024 AS BYTES(M)
FROM DBA_DATA_FILES
WHERE TABLESPACE_NAME = '&tablespace_name';
注:如果是临时表空间,请查询DBA_TEMP_FILES
SELECT TABLESPACE_NAME, FILE_ID, FILE_NAME, BYTES/1024/1024 AS SPACE(M)
FROM DBA_TEMP_FILES
WHERE TABLESPACE_NAME = '&tablespace_name';
3 为空间不足的表空间增加数据文件
ALTER TABLESPACE &tablespace_name ADD DATAFILE '&datafile_name' SIZE 2G;
注:如果要为临时表空间扩容,使用下面的语句


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13382758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-25
下一篇 2023-07-25

发表评论

登录后才能评论

评论列表(0条)

保存