oracle表空间已满解决

       在日常的oralce使用中最长遇到的问题就是oralce的表空间满了,数据无法写入报错,这种情况下通常是磁盘没有足够的空间或者表空间的数据文件达到32G(linux最大限制单个文件不超过32G)无法继续自动扩展。

 

1、首先分享一个查看表空间使用情况的语句(看着有点恶心但是不用怕,不用看不用去理解,保存好用的时候拿来直接用即可),只用看如下红色框起来的部分即可,只要表空间大小没有到32G(一个表空间文件32G,n个表空间文件32G*n)即使后面使用率高了也不用管,不够他会自动扩展。(创建的时候开启了表空间自动扩展)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SELECT   UPPER (f.tablespace_name) AS "表空间名",
         d.tot_grootte_mb AS "表空间大小(M)",
         d.tot_grootte_mb - f.total_bytes AS "已使用空间(M)",
         TO_CHAR (ROUND (  (d.tot_grootte_mb - f.total_bytes)
                         / d.tot_grootte_mb
                         * 100,
                         2
                        ),
                  '990.99'
                 ) AS "使用比",
         f.total_bytes AS "空闲空间(M)", f.max_bytes AS "最大块(M)"
    FROM (SELECT   tablespace_name,
                   ROUND (SUM (BYTES) / (1024 * 1024), 2) AS total_bytes,
                   ROUND (MAX (BYTES) / (1024 * 1024), 2) AS max_bytes
              FROM SYS.dba_free_space
          GROUP BY tablespace_name) f,
         (SELECT   dd.tablespace_name,
                   ROUND (SUM (dd.BYTES) / (1024 * 1024),
                          2) AS tot_grootte_mb
              FROM SYS.dba_data_files dd
          GROUP BY dd.tablespace_name) d
   WHERE d.tablespace_name = f.tablespace_name
ORDER BY 4 DESC

 

 

2、查看已有的表空间物理文件在什么位置

 

1
select * from  dba_data_files

注:只看第一列即可,一看现有的表空间对应的数据文件存在/u01/app/oracle/oradata/orcl目录下,知道这个就可以了

 

3、给空间快满的表空间增加新的表空间文件并设置为可以自动扩展的(这样相当于给快满的表空间又增加了32G的可以空间)

1
2
3
alter tablespace <tablespace_name> add datafile 'filepath' size <filesize> autoextend on next <autosize> maxsize filemaxsize[unlimited];
 
例如:alter tablespace sales add  datafile '/u01/app/oracle/oradata/orcl/newsales.dbf' size 1G autoextend on next 10m maxsize unlimited

如上语句的含义是给名称为为sales的表空间新增一个物理文件/u01/app/oracle/oradata/orcl/newsales.dbf,文件初始大小为1G,是自动扩展的每次自动扩展的空间为10m。到此表空间已满无法写入的问题基本就可以解决了。

 

补充如何新创建一个可以自动扩展空间的表空间

1
2
3
4
5
create tablespace <tablespace_name> datafile '<filepath>' size <filesize> autoextend on next <autosize> maxsize <maxsize [unlimited]>
 
eg:
 
create tablespace sales datafile '/u01/app/oracle/oradata/orcl/test.dbf'  size 1G  autoextend on next 10m maxsize unlimited extent management local;

 

 

资源丰富的的网盘资源:网盘资源大全! 推荐一个适合零基础学习SQL的网站:不用安装数据库,在线轻松学习SQL!
posted @   万笑佛  阅读(3904)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示