oracle表空间不够用怎么解决?

看到标题,首先,要知道表空间数据写不进去是什么原因。是因为系统内存不足?还是oracle用户表空间给的大小不足?这里抛开系统内存不足不说,下面介绍oracle用户表空间给的太小造成数据写不进去怎么处理。本人所在公司的业务客户是*部门,所以数据量是非常巨大的。直接在*局内网服务器上敲键盘,没有测试环境,没有业内人士全靠度娘,每条命令都再三再四地看,毕竟30g*数据,故知识、命令理解了也不敢回车,小伙子害怕.....

便于理解 可以将xxx.bdf文件是oracle用户表空间下面的数据文件,数据都存放在xxxx.bdf里面 ,创建用户以及表空间的时候已经设定xxx.bdf文件的大小,可以设置此文件允许无限增大(只要你的服务器给oracle的空间够),然后再考虑如何扩容的问题。下面介绍两种方式达到给表和空间扩容的目的。啊~请把有才打在公屏上........

1>为表空间增加数据文件(xxx.bdf的数量)

2>增加表空间原有数据文件尺寸(xxx.bdf的尺寸)

如果已经存了数据,一定要用第一种方案,如果更改原始数据文件尺寸的话可能会导致数据丢失。试想,如果原始数据文件为30g,然后你通过sql命令将此文件扩展为20g(文件空间竟然变小了),必然会导致数据丢失。这条命令就是resize 和 size的sql命令的区别了   第一种方案断然不会丢失数据,因为增加的是存数据的数据文件夹,并不是操作原始数据文件夹。

下面进入GC:

进入dba管理用户

sysplus / as dba;

1、查看表空间的名称及大小 
SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size 
FROM dba_tablespaces t, dba_data_files d 
WHERE t.tablespace_name = d.tablespace_name 
GROUP BY t.tablespace_name; 

2、查看表空间物理文件的名称及大小 
SELECT tablespace_name, 
file_id, 
file_name, 
round(bytes / (1024 * 1024), 0) total_space 
FROM dba_data_files 
ORDER BY tablespace_name;

3,开始“扩容”啦

原有一个bdf文件,内有30g数据,/home/oracledb/oradata/orcl/BHZHDP.dbf,现在TBS_BHZHDP表空间不足无法写入数据开始扩容。

alter tablespace TBS_BHZHDP add datafile '/home/oracledb/oradata/orcl/BHZHDP2.dbf' size 35g;(35g如果算是很大可能回报这个错误)

ORA-01144即表示你的单个数据文件超出了oracle的限制:
如:ORA-01144: File size (4194304 blocks) exceeds maximum of 4194303 blocks
表示你的表空间是Smallfile tablespace,单个数据文件最大只可以有2^22=4194303个blocks,换成KBytes时即乘上你数据库的block_size即可,解决方法是用多个数据文件,不是把单个数据文件设得很大.【解决】创新数据文件的时候给小一点空间10g差不多足够,也可以先看还有多少剩余嘛!可参考https://blog.csdn.net/jlds123/article/details/6771440

【注】上面的数字2,表示是在同个TBS_BHZHDP空间表下创建新数据文件存数据,标记此文件2.bdf。至此问题解决,可以执行操作1再次查看表空间的名称和大小。

 

【题外话】

刚说到直接扩容bdf文件的问题是危险的,这里不在过多描述,resize是重定义文件大小,而add xxxx size是你想要添加多少容量。总之不是专业DBA不建议通过这种方式扩容表空间。具体可以偷袭下面这篇博客,我这边直接忽略此博主写的第一种方案,本人小白。

https://www.cnblogs.com/longjshz/p/4553482.html

要了解更多的oracle查看表空间以及剩余量的sql语句请看偷袭!!!!!!!!!!!!!!!!!!!!

https://www.cnblogs.com/wolfplan/p/6874327.html

下面是我浏览过认为描述问题比较全面的博客

https://www.cnblogs.com/mzdljgz/p/11387294.html (这一篇也是我此次解决问题的关键,因为不了解直接扩bdf和增加bdf的区别,感谢此博主)

http://blog.itpub.net/29485627/viewspace-1280367/oracle表空间不够用怎么解决?

 

 

 

啊.请把有才打在公屏上

偷袭!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

 

上一篇:oracl 数据库 exp 导出 imp 导入


下一篇:oracle表空间使用情况