EAS中用到的Oracle数据库表空间满通用处理方案原创
金蝶云社区-杨银芳_KD508
杨银芳_KD508
3人赞赏了该文章 950次浏览 未经作者许可,禁止转载编辑于2020年04月12日 17:03:05
summary-icon摘要由AI智能服务提供

本文介绍了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表空间

图标赞 3
3人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!