如何判断上一个数据文件是否达到最大值及达到最大值时让数据文件自动增加,
比如a1.dbf ,10个G,存储数据已达到9.9G,再存一个0.2G(200M左右)的记录,
怎么让oracle自动增加一个a2.dbf文件并把0.2G的记录存储在a2.dbf里面?

解决方案 »

  1.   

    创建表的时候不是有STORAGE么,
    如:
    CREATE TABLE emp(emp_id number,emp_name,varchar2(50))
    TABLESPACE temp
    PCTUSED 40
    PCTFREE 10
    STORAGE(INITIAL 50K NEXT 50K);
    如果要更改,可以用alter table
    如:
    ALTER TABLE emp STORAGE(NEXT 256K PCTINCREASE 0);
      

  2.   

    以下的语句可以查看数据文件的使用百分比情况
    select a.file_name,
           round(((a.BYTES - b.BYTES) / a.BYTES) * 100, 2) percent_used
      from (select file_id, file_name, sum(BYTES) BYTES
              from dba_data_files
             group by file_id, file_name) a,
           (select file_id, sum(BYTES) BYTES, max(BYTES) largest
              from dba_free_space
             group by file_id) b
     where a.file_id = b.file_id
     order by ((a.BYTES - b.BYTES) / a.BYTES) desc下面说说你的需求,第一,如果数据文件被设置成自动增大,那么可以说这个数据文件是没有最大值的,只要使用量达到接近100%,系统会自动增加文件的大小。 第二,oracle本身是没有自动增加另外一个数据文件的功能的,这个你恐怕要另想他法了,比如写个程序,时刻监控表空间的使用情况,如果不够用了,加个文件上去。第三,把0.2G存到新的数据文件上去,oracle恐怕是没有这样的功能的
      

  3.   


    没有自动增加数据文件的功能,一般都是在磁盘空间不够的时候,对空间进行shrink或者添加新的数据文件。
      

  4.   


    关键是看你原来设置数据文件的增长方式,是AUTOEXTEND!
    不行,可以手动增加 add database ?? datafile ... 100M