本文介绍了EAS表空间及其相关处理方案。EAS标准包含四种表空间,用于存储不同类型的数据。当表空间满时,提供了针对不同类型表空间的解决方案,包括将非自动扩展的数据文件设为自动扩展、新增数据文件、重定向临时表空间及undo表空间等。此外,还提供了Oracle TEMP表空间占用较多时的释放处理方案,包括删除并重建TEMP表空间以释放空间。
EAS表空间间知识普及:
EAS标准有四个表空间:
EAS_D_XXXX 为存放EAS主数据表空间
EAS_D_XX_TEMP2 为存放EAS VT中间表表空间
EAS_X_XX_INDEX 为存放EAS 索引表空间(老版本升级上来的客户一般没有这个表空间)
EAS_T_XX_XXXX 为EAS数据中心专用的oracle临时表空间
数据库UNDO回滚表空间:
UNDOTBS1 为存放EAS操作回滚数据的undo表空间
EAS中用到的Oracle表空间满时处理方案:
一、EAS_D_XXXX,EAS_D_XX_TEMP2,EAS_X_XX_INDEX 这三类数据表空间不足处理方案:
问题描述及分析:
当EAS客户端或WEB端操作业务时报如下数据库错误,说明EAS表空间不足。
ORA-01658: unable to create INITIAL extent for segment in tablespace EAS_D_XX_XXXX
解决方案:
1.查找表空间对应的数据文件及数据文件的路径(file_name):
SQL>select file_name from dba_data_files where
tablespace_name='EAS_D_XX_XXXX';
查出来如E:\APP\LANCE_CAO\PRODUCT\11.2.0\DBHOME_1\ORADATA\DEMODATA\EAS_D_EAS75_STANDARD.ORA
2.查找以上表空间对应的的数据文件是否为自动扩展:
select file_name,tablespace_name,autoextensible from dba_data_files where tablespace_name='EAS_D_EAS75_STANDARD';
查出来如(AUTOEXTENSIBLE为YES则为自动扩展):
如果不是自动扩展,则将数据文件变为自动扩展。如:
SQL>alter DATABASE datafile 'E:\APP\LANCE_CAO\PRODUCT\11.2.0\DBHOME_1\ORADATA\DEMODATA\EAS_D_EAS75_STANDARD.ORA' autoextend on next 200M size unlimited;
3.如果数据文件已是自动扩展,空间利用率仍是90%以上,则对表空间新增一个数据文件:
SQL>alter tablespace EAS_D_EAS75_STANDARD add datafile '/PATH/FILENAME' size 2204m
autoextend on next 512M maxsize unlimited;
注:上面sql中 ‘/PATH/FILENAME’值改为上面1中查出来的file_name的值,名称做一下相应的修改,
不同名即可。
SQL>alter tablespace EAS_D_EAS75_STANDARD add datafile
'E:\APP\LANCE_CAO\PRODUCT\11.2.0\DBHOME_1\ORADATA\DEMODATA\EAS_D_EAS75_STAN
DARD.ORA' size 2204m autoextend on next 512M maxsize unlimited;
注: 表空间名称不能用单引号括起来(报表空间名无效错误),可用双引号、什么引号都不用加(推荐)。
二、EAS_T_XX_XXXX EAS数据中心专用的oracle临时表空间不足时处理方案
原因分析:
1.ORACLE临时表空间是由oracle数据库定时对表空间进行释放,但也会出现表空间释放不及时的现象。这属于oracle问题,无参数进行配置来解决,
只能通过重定向临时表空间来释放空间。 2.随着业务量的增大,ORACLE临时表空间需求会增大,需新增数据文件。
解决方案:
1.普通临时表空间的数据文件扩展一般设置无限制(即最大为32G),如不够有时需要再再新增一个数据文件。2.如果临时表空间使用到32G或更多,
则可以通过重定向临时表空间以来达到临时表空间资源释放。 3.相应的措施如下所示: 3.1 (1).查找表空间对应的数据文件(以EAS_T_FANHUA_STANDARD
临时表空间为例)
select file_name,tablespace_name from dba_temp_files where tablespace_name='EAS_T_FANHUA_STANDARD'
(2).查看此路径下的数据文件/PATH/FILENAME(为上面sql查出来的filename的值)大小,如果小于32G,让数据文件进行自动扩展,扩展到32G。
alter DATABASE tempfile '/PATH/FILENAME' autoextend on next 200M maxsize unlimited
(3).如果数据文件为32G 则需加个数据文件
alter tablespace EAS_T_FANHUA_STANDARD add tempfile '/PATH/FILENAME' size 100m autoextend on next 100M maxsize unlimited
3.2 (1).重新建一个临时表空间,重定向表空间的方法来释放表空间,如下所示:如重建的临时表空间名为EAS_T_EAS59_STANDARD,
临时数据文件的存放路径为D:\ORACLE11G\ORADATA\ORACLE10G\,临时数据文件为EAS_T_EAS59_STANDARD.ORA,EAS账套用户为EASDB,
脚本如下所示:CREATE TEMPORARY TABLESPACE "EAS_T_EAS59_STANDARD" TEMPFILE 'D:\ORACLE11G\ORADATA\ORACLE10G\EAS_T_EAS59_STANDARD.ORA'
SIZE 500M AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED; --新建一个临时表空间
ALTER USER EASDB TEMPORARY TABLESPACE EAS_T_EAS59_STANDARD; --表空间重定向
drop tablespace EAS_T_EAS59_STANDARN including contents and datafiles; --将之前的临时表空间删除
三、 undo表空间满处理方案
1.查找表空间对应的数据文件及数据文件是否处理扩展状态(autoextensible的值为yes,则为扩展状态)
select file_name,tablespace_name,autoextensible from dba_data_files where tablespace_name='UNDOTBS1'
2.查看此路径下的数据文件大小,如果小于32G,让数据文件进行自动扩展,扩展到32G。
alter DATABASE datafile '/PATH/FILENAME' autoextend on next 200M maxsize unlimited
3.如果数据文件为32G 则考虑加个数据文件或重建一个undo表空进行重定向
新增一个数据文件:
alter tablespace UNDOTBS2 add datafile '/PATH/FILENAME' size 1204m autoextend on next 200M maxsize unlimited
或
1.重建一个undo表空进行重定向:
SQL> CREATE UNDO TABLESPACE "UNDOTBS2" DATAFILE '/PATH/undotbs02.dbf' SIZE 8480m REUSE AUTOEXTEND ON NEXT 200m MAXSIZE 32767M;
SQL> alter system set undo_tablespace=undotbs2 scope=both;
2.将旧的undo表空间进行删除
SQL> drop tablespace undotbs1 including contents and datafiles;
四、Oracle TEMP表空间占用较多释放处理方案(可以腾出几十G空间)
重弄TEMP表空间 由于TEMP为默认的临时表空间,则出现TEMP表空间不能删除,会报错: (X)
alter tablespace temp offline;
drop tablespace temp including contents and datafiles; --将之前的临时表空间删除 语句执行成功后,查看/oradata/orcl/目录下的temp01.dbf ~temp05.dbf是否已被删除,如没有要手工删除
CREATE TEMPORARY TABLESPACE "TEMP" TEMPFILE '/oradata/orcl/temp01.dbf' SIZE 500M AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED; --新建temp表空间
推荐阅读