oracle数据库表空间的扩展

来源:互联网 发布:药品怎么在淘宝上买 编辑:程序博客网 时间:2024/06/18 13:14
由于有一天凌晨3点发生了数据库表空间不足的错误(正在写方案打瞌睡的时候被电话叫醒,呵呵),用户怕其他的表空间也满了,这几天总是被催促扩展表空间,下面我就把相关的东东写下来,同大家一起讨论一下。

      环境是Solaris 9和10,oracle 10g。以下表空间名称我用TESTTBS代替

     当时查看alert日志,oracle报错:

ORA-1692: unable to extend lobsegment XXUSER.SYS_LOB0000012657C00008$$ partition SYS_LOB_P422 by 128               in tablespace TESTTBS

 

    查看TESTTBS的数据文件,可以使用oracle Enterprise Manager Console客户端连接数据库直观地查看,也可以使用命令行:

 select * from dba_data_files where tablespace_name like 'TESTT%';

为了大家看的清楚,我把格式调了一下,输出如下:

FILE_NAME                  +DG1/ora/datafile/testtbs.ora

FILE_ID                      10

TABLESPACE_NAME     TESTTBS 

BYTES                       3.4360E+10

BLOCKS                    4194302

STATUS                   AVAILABLE

RELATIVE_FNO         10

AUT                       YES

MAXBYTES             3.4360E+10

MAXBLOCKS            4194302

INCREMENT_BY        32768

USER_BYTES          3.4360E+10

USER_BLOCKS         4194288

其中BYTES是当前数据文件的大小,MAXBYTES 是数据库文件可扩展的最大大小(AUT 是 YES 表示数据文件可以自动扩展),可以看到表空间TESTTBS 对应的数据文件testtbs.ora

已经达到可扩展的最大值了,所以数据库报错。

 

一般Enterprise Manager Console上看到的数据文件的占用情况百分比,是使用的数据空间占现有分配的空间的大小,不是占最大数据空间的大小。如,我创建了一个500M的数据文件,可以扩展到2000M,如果使用了450M,我们看见占用已经90%了,但是其实还有1550M的空间还可以使用(只要磁盘空间足够),因此我们需要查看数据文件是否是自动扩展的,可以扩到多大。而这次的确是扩展到可以扩展的最大值了。

 

据我所知,表空间的扩展有两种方法:

1、增加数据文件

2、调整当前数据文件的大小或扩展的大小

 

1、增加数据文件

ALTER TABLESPACE TESTTBS

ADD DATAFILE '+DG1/ora/datafile/testtbs01.ora' SIZE 500M

AUTOEXTEND ON

NEXT 50M

MAXSIZE 2000M;

 

增加了一个500M的数据文件,并且可以自动扩展到2G,每次扩展50M。

 

2、增加当前数据文件的大小:

ALTER DATABASE

DATAFILE '+DG1/ora/datafile/testtbs.ora'

RESIZE  50000M;

 

或者使用file_id

ALTER DATABASE

DATAFILE 10

RESIZE  50000M;

 

3、在使用过程中,如果想改变某个数据文件的最大大小,可以

 

ALTER DATABASE

DATAFILE  '+DG1/ora/datafile/test.ora'

AUTOEXTEND ON

MAXSIZE  10240M;

    

声名:

  以上操作请在使用前测试,并谨慎操作,出现一切后果本人概不负责。