oracle异常:ORA-01144: 文件大小 (5242880 块) 超出 4194303 块的最大数的错误

在对oracle数据库表空间进行扩容时报错

可能扩容的大小>文件可设置最大值

问题出现:

1、查询表空间存储文件所在的位置: XXXX为表空间名字

 select a.tablespace_name,total,free,total-free used,a.file_name from
  ( select tablespace_name,sum(bytes)/1024/1024 total,file_name from dba_data_files group by tablespace_name,file_name) a,
  ( select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space group by tablespace_name) b
where a.tablespace_name=b.tablespace_name
and a.tablespace_name='XXXX';

2、进行扩容: XXX为表空间名字,路径是上一句查询出的

 alter database datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\USER.DBF' resize 40G;

解决思路:

1、创建多个数据文件,都不能超过32g
2、创建大表空间。create bigfile tablespace  他的上限是32t,不过,oracle10及以后版本才能用。

这里之讲加数据文件: USER是表空间名称, 后面是限制大小的

 alter tablespace USER add datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\USER1.DBF' size 1024M autoextend on next 1024M maxsize unlimited;

扩展:

以下语句可以查看所有表空间名称以及使用情况

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

你可能感兴趣的:(oracle,数据库)