表分区 无法通过 128 (在表空间 中) 扩展

本文介绍了Oracle数据库中解决表空间满的问题,通过增加新的数据文件或调整现有数据文件的大小来扩展表空间。同时提供了检查表空间状态及调整数据文件大小的具体SQL命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.chinaunix.net/uid-20423564-id-1949412.html

环境是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
NEXT 50M
MAXSIZE 10240M;


4,其它可能会用到的命令:
SQL> set linesize 800
SQL> select file_name,autoextensible,increment_by from dba_data_files;
FILE_NAME
---------------------------------------------------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\USERS01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSAUX01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\SYSTEM01.DBF

SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;
TABLESPACE_NAME SUM(BYTES)/1024/1024
------------------------------ --------------------
SYSAUX 270
UNDOTBS1 25
USERS 5
SYSTEM 510
SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;
TABLESPACE_NAME SUM(BYTES)/1024/1024
------------------------------ --------------------
UNDOTBS1 5.625
SYSAUX 13.625
USERS 4.5
SYSTEM 4.8125
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值