精华内容
下载资源
问答
  • 昨天开发人员跟我说,执行一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时...
    解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程
     
    昨天开发人员跟我说,执行一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。
    分析过程:
       既然是temp表空间有问题,那当然就要从temp表空间说起啦。首先要说明的是temp表空间的作用,temp表空间主要是用作需要排序的操作。
       1.临时表空间 是用于在进行排序操作(如大型查询,创建索引和联合查询期间存储临时数据)每个用户都有一个临时表空间。
       2.对于大型操作频繁,(大型查询,大型分类查询,大型统计分析等),应指定单独的临时表空间,以方便管理。 
       3.分配用户单独临时表空间,一般是针对 大型产品数据库,OLTP数据库,数据库仓库对于小型产品不需要单独制定临时表空间,使用默认临时表空间。
       正常情况下,一个sql执行之后,返回结果后系统会自动收回分配给这个用户的空间。以便可以把此部分空间再分配给其他用户。
    好了,既然问题出在临时表空间,那就查看一下临时表空间信息:
       select * from dba_tablespaces;
       select * from dba_temp_files;
       select * from v$tempfile
       通过观察发现,temp表空间只有一个数据文件,大小为4G,不自动扩展。大小为4G,应该说是不能算小啦。这时想到,需要看一看执行的sql语句到底是什么样的,难道它能把这个空间用完(由于系统事务非常少,所以暂不考虑其它用户语句对temp的影响),于是就把那个语句拷贝下拉,研究一番:
    SELECT a.TASKID, a.EXAMTYPECODE, a.CONTROLDEPARTMENT, a.DEFAULTRECRUITSPEC, a.ISUPCUNTRYLINE, 
     a.ISUPCOLLEGELINE, a.ISMAYJOINRETRIAL, a.JOINRETRIALGIST, a.JOINRETRIALBAK, a.TEMPERSIGN, 
     a.RECRUITSTUDENTTYPE, a.MATRICULATEGIST, a.ISNOTICEEXAMINEE, a.AFTERHANDLEDEP, a.TUITION, 
     a.KSBH, a.BH, a.XXB, a.BMDDM, a.BMDMC, 
     a.BMH, a.XM, a.XMPY, a.ZJLX, a.ZJLXMC, 
     a.ZJHM, a.CSRQ, a.MZM, a.MZ, a.XBM, 
     a.XB, a.HFM, a.HF, a.ZZMMM, a.ZZMM, 
     a.HKSZSSM, a.HKSZSSMC, a.HKSZDXXDZ, a.CSDSSM, a.CSDSSMC, 
     a.CSDXXDZ, a.XXGZDW, a.TXDZ, a.YZBM, a.LXDH, 
     a.DZXX, a.BYNY, a.XLM, a.XL, a.XWM, 
     a.XW, a.KSLYM, a.KSLY, a.KSFSM, a.KSFS, 
     a.BKLBM, a.BKLB, a.DASZDWSSM, a.DASZDWSSMC, a.DASZDW, 
     a.DASZDWDZ, a.DASZDWYZBM, a.XXGZJL, a.BYXX, a.BYXX1, 
     a.BYXX2, a.BYXX3, a.BYXX4, a.JL, a.JTCY, 
     a.BYDW, a.BYDWM, a.BYZYDM, a.BYZYMC, '0'||a.DWDM DWDM, 
     a.DWMC, a.TJDWDM, a.TJDWMC, a.ZYDM, a.ZYMC, 
     a.YXSM, a.YXSMC, a.YJFXM, a.YJFX, a.DSXM, 
     a.ZZLLM, a.ZZLLMC, a.WGYM, a.WGYMC, a.YWK1M, 
     a.YWK1MC, a.YWK2M, a.YWK2MC, a.YWK3M, a.YWK3MC, 
     a.XYJRM, a.XYJR, a.JFBZ, a.ZXBZ, a.BMSJ, 
     a.BYXXBZ, a.SFZH, a.BYND, a.KSDW, a.DWSZSSM, 
     a.DWSZSSMC, a.ZZLL, a.WGY, a.YWK1, a.YWK2, 
     a.YWK3, a.ZF, (NVL(a.fscj,0)) FSCJ, a.LQLBM, a.LQLB, 
     a.DXWPDW, a.PG, a.PGBZ, a.BZ, a.WDDWLM, 
     a.WDDWL, a.JFLY, a.LQQK, a.BLDW, a.NRXNY, 
     a.LQND, a.BZ1, a.BZ2, a.KCH, a.KCDD, 
     a.ZWH,a.ZPPATH, a.XH, a.BKZYM, a.BKZY, 
     a.XVH,a.DY6FLAG, a.BXYWK1MC, a.BXYWK2MC, a.BXYWK3MC, 
     a.QKBZ1, a.QKBZ2, a.QKBZ3, a.QKBZ4, a.QKBZ5, 
     a.SSMZLQ, a.KSQK, a.JGM, a.JGS, a.JGSX, 
     a.NLDM, a.NL, a.DXZYM, a.DXZY, a.HKSZDSX, 
     a.DQDM, a.YDWYB, a.BRTXZ, a.GZDWZ, a.YDWLM, 
     a.DWLB, a.BRYB, a.BRDH, a.JTDWM, a.GL, 
     a.TSLB, a.TSLBM, a.XXFSM, a.XXFS, a.LQZYM, 
     LQZY, ZPCJ, DSXHMH1, DSXHMH2, DSXHMH3, 
     a.DSXHMH4, a.SZSSM, a.ZXJH, a.ZXJHBZ, a.BLZGNX, 
     BLZG, BLZG1, BLZBZ, JS1MC, JS1CJ, 
     a.JS2MC, a.JS2CJ, a.SSMZ, a.SSMZBZ, a.DXWPSSM, 
     a.DXWPSS, a.LQXSM, a.LQXSMC, a.LQDSM, a.LQDSXM, 
     a.LQYJFXM, a.LQYJFXMC, a.HANDLERESULT, a.XLZSBH, a.XWZSBH, 
     a.LQYJFXID, a.XXXS,nvl2(a.reexam , ROUND(GYZF),(zf * ( 1- 0.3))) GYZF,a.GYFS, a.GYCS, 
     b.reexam ,a.SPECIALITYNO,a.SPECIALITYNAME,
       (
       SELECT STUDENTTYPE FROM CODE_STUDENTTYPE 
       WHERE STUDENTTYPECODE=A.recruitstudenttype ) STUDENTTYPE,
       (SELECT collegename FROM ENROL_COLLEGEINFO)  FSDWMC,
       (SELECT collegecode FROM ENROL_COLLEGEINFO) FSDWDM,
       (CASE WHEN a.handleresult='已录取' THEN '1' ELSE '0' END ) nlq,'' HKSZDM
    FROM
     ( SELECT X.*, Y.SPECIALITYNO,Y.SPECIALITYNAME FROM ENROL_EXAMINEE X,   BASE_SPECIALITY Y WHERE X.DEFAULTRECRUITSPEC=Y.SPECSTANDCODE AND x.CONTROLDEPARTMENT IS NOT NULL  ) A
     ,(SELECT taskid,reexam FROM ENROL_EXAMINEE) b WHERE a.taskid=b.taskid
     ORDER BY A.KSBH ASC
     咋一看,真不赖,字段将近一百个,而且原表记录数有15000多条。所以可能真的把临时表空间吃完。于是对涉及到的基表做了一个空间占用情况统计:
    SQL> set serveroutput on
    SQL> exec show_space('ENROL_EXAMINEE','AUTO');
    Total Blocks............................2432                                    
    Total Bytes.............................19922944                                
    Unused Blocks...........................0                                       
    Unused Bytes............................0                                       
    Last Used Ext FileId....................11                                      
    Last Used Ext BlockId...................301576                                  
    Last Used Block.........................128                                    
    计算一下基表占用19922944字节,大约是19M。还不包括其它的表的字段统计。先将temp数据文件自动扩展。先不管这个sql语句是否优化,做一个执行计划和统计分析,得到如下结果:
    PLAN_TABLE_OUTPUT                                                               
    ----------------------------------------------------------------------------------------------------                                     
    | Id  | Operation                     |  Name                       | Rows  | Bytes |TempSpc| Cost  |                                    
    |   0 | SELECT STATEMENT              |                             |  9023K|  9130M|       |  3579K|                                    
    |   1 |  SORT ORDER BY                |                             |  9023K|  9130M|    19G|  3579K|
    |*  2 |   HASH JOIN                   |                             |  9023K|  9130M|       |   439 |                                    
    |   3 |    TABLE ACCESS FULL          | ENROL_EXAMINEE              | 15146 |   310K|       |   231 |                                    
    |*  4 |    TABLE ACCESS BY INDEX ROWID| ENROL_EXAMINEE              |   596 |   591K|       |     2 |                                    
    |   5 |     NESTED LOOPS              |                             |  4171 |  4236K|       |   170 |          
    |   6 |      TABLE ACCESS FULL        | BASE_SPECIALITY             |    84 |  2016 |       |     2 |        
    |*  7 |      INDEX RANGE SCAN         | EXAMINEE_DEFAULTSPEC_INDEX  |   202 |       |       |     1 |          
    PLAN_TABLE_OUTPUT                                                               
    --------------------------------------------------------------------------------
    Predicate Information (identified by operation id):                             
    ---------------------------------------------------                             
                                                                                    
       2 - access("SYS_ALIAS_1"."TASKID"="ENROL_EXAMINEE"."TASKID")                 
       4 - filter("SYS_ALIAS_1"."CONTROLDEPARTMENT" IS NOT NULL)                    
       7 - access("SYS_ALIAS_1"."DEFAULTRECRUITSPEC"="Y"."SPECSTANDCODE")          
    PLAN_TABLE_OUTPUT                                                               
    --------------------------------------------------------------------------------
           filter("SYS_ALIAS_1"."DEFAULTRECRUITSPEC" IS NOT NULL)                   
                                                                                    
    Note: cpu costing is off                                          
    由此可知,临时表空间扩展到19G。这当然会把临时表空间全部吃掉。这时应该从sql语句本身来找问题。
    那个sql语句基表大约有15000,而且涉及将近100个字段,最后还有一个非常耗费资源的排序操作。去掉那个order by 查看记录的返回数。
    发现返回的记录数为26950729。这对我们数据库的硬件配置来说是一个很大数量级的数据,而且字段有非常多,所以占用既定的temp表空间的之后还不停的扩展,如果没有设置自动扩展,必然导致无法分配temp段。所以那个问题的产生就是必然的啦。现在追究为什么基表只有15000多条,而查询结构却是26950729条,所以怀疑是sql语句中存在cartesian,于是开始从业务需求来分析这个语句,果然是将最后一个(SELECT taskid,reexam FROM ENROL_EXAMINEE) b 中的基表应该是enrol_task而不是enrol_examinee,因为会产生两个表同个taskid来连接,而每个taskid下有很多学生,这就导致产生了一个庞大的cartesian乘积。最终导致对26950729条记录的排序而使临时表空间用尽。(此时没有自动扩展)将b结果集中ENROL_EXAMINEE用ENROL_TASK来替换,即使还有一个排序,结果也会在很短的时间内返回。
    最后需要说明的是:
        1、sql语句完成之后,需要检查记录的准确性。
        2、尽量不要在视图中进行order by ,这是一个非常耗费资源的操作。
    写下拉,以存警示!

    =======================================================================

    ORA-01652:unable to extend temp segment by num in tablespace name

    产生原因:ORACLE临时段表空间不足,因为ORACLE总是尽量分配连续空间,一但没有足够的可分配空间或者分配不连续就会出现上述的现象。

    解决方法:我们知道由于ORACLE将表空间作为逻辑结构-单元,而表空间的物理结构是数据文件,数据文件在磁盘上物理地创建,表空间的所有对象也存在于磁盘上,为了给表空间增加空间,就必须增加数据文件。先查看一下指定表空间的可用空间,使用视图SYS.DBA_FREE_SPACE,视图中每条记录代表可用空间的碎片大小:

    SQL>Select file_id,block_id,blocks,bytes from sys.dba_free_space where tablespace_name=’’;

    返回的信息可初步确定可用空间的最大块,看一下它是否小于错误信息中提到的尺寸,再查看一下缺省的表空间参数:

    SQL>SELECT INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,PCT_INCREASE FROM SYS.DBA_TABLESPACES WHERE TABLESPACE_NAME=name;

    通过下面的SQL命令修改临时段表空间的缺省存储值:

    SQL>ALTER TABLESPACE name DEFAULT STORAGE (INITIAL XXX NEXT YYY);

    适当增大缺省值的大小有可能解决出现的错误问题,也可以通过修改用户的临时表空间大小来解决这个问题:

    SQL>ALTER USER username TEMPORARY TABLESPACE new_tablespace_name;

    使用ALTER TABLESPACE命令,一但完成,所增加的空间就可使用,无需退出数据库或使表空间脱机,但要注意,一旦添加了数据文件,就不能再删除它,若要删除,就要删除表空间。

    一个报错例子如下:

    ORA-1652:unable to extend temp segment by 207381 in tablespace TEMPSPACE

    相应的英文如下:

    Cause: Failed to allocate extent for temp segment in tablespace

    Action:Use the ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the specified tablespace or create the object in another tablespace.

     

    补充:

    重建Temp表空间 

    1. startup --启动数据库      
    2.      
    3. create temporary tablespace TEMP2 TEMPFILE '/home2/oracle/oradata/sysmon/temp02.dbf' SIZE 512M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED; --创建中转临时表空间      
          alter database default temporary tablespace temp2; --改变缺省临时表空间 为刚刚创建的新临时表空间temp2             drop tablespace temp including contents and datafiles;--删除原来临时表空间             create temporary tablespace TEMP TEMPFILE '/home2/oracle/oradata/sysmon/temp01.dbf' SIZE 512M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED; --重新创建临时表空间             alter database default temporary tablespace temp--重置缺省临时表空间为新建的temp表空间             drop tablespace temp2 including contents and datafiles;--删除中转用临时表空间             alter user roll temporary tablespace temp--重新指定用户表空间为重建的临时表空间  

     

    转载于:https://www.cnblogs.com/rootq/archive/2009/02/05/1384539.html

    展开全文
  • 昨天开发人员跟我说,执行一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ORA-01652错误,查阅了oracle错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时...

    昨天开发人员跟我说,执行一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ORA-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。

    分析过程:
       既然是temp表空间有问题,那当然就要从temp表空间说起啦。首先要说明的是temp表空间的作用,temp表空间主要是用作需要排序的操作。
       1.临时表空间 是用于在进行排序操作(如大型查询,创建索引和联合查询期间存储临时数据)每个用户都有一个临时表空间。
       2.对于大型操作频繁,(大型查询,大型分类查询,大型统计分析等),应指定单独的临时表空间,以方便管理。
       3.分配用户单独临时表空间,一般是针对 大型产品数据库,OLTP数据库,数据库仓库对于小型产品不需要单独制定临时表空间,使用默认临时表空间。
       正常情况下,一个sql执行之后,返回结果后系统会自动收回分配给这个用户的空间。以便可以把此部分空间再分配给其他用户。
    好了,既然问题出在临时表空间,那就查看一下临时表空间信息:
       select * from dba_tablespaces;
       select * from dba_temp_files;
       select * from v$tempfile
       通过观察发现,temp表空间只有一个数据文件,大小为4G,不自动扩展。大小为4G,应该说是不能算小啦。这时想到,需要看一看执行的sql语句到底是什么样的,难道它能把这个空间用完(由于系统事务非常少,所以暂不考虑其它用户语句对temp的影响),于是就把那个语句拷贝下拉,研究一番:
    SELECT a.TASKID, a.EXAMTYPECODE, a.CONTROLDEPARTMENT, a.DEFAULTRECRUITSPEC, a.ISUPCUNTRYLINE,
    a.ISUPCOLLEGELINE, a.ISMAYJOINRETRIAL, a.JOINRETRIALGIST, a.JOINRETRIALBAK, a.TEMPERSIGN,
    a.RECRUITSTUDENTTYPE, a.MATRICULATEGIST, a.ISNOTICEEXAMINEE, a.AFTERHANDLEDEP, a.TUITION,
    a.KSBH, a.BH, a.XXB, a.BMDDM, a.BMDMC,
    a.BMH, a.XM, a.XMPY, a.ZJLX, a.ZJLXMC,
    a.ZJHM, a.CSRQ, a.MZM, a.MZ, a.XBM,
    a.XB, a.HFM, a.HF, a.ZZMMM, a.ZZMM,
    a.HKSZSSM, a.HKSZSSMC, a.HKSZDXXDZ, a.CSDSSM, a.CSDSSMC,
    a.CSDXXDZ, a.XXGZDW, a.TXDZ, a.YZBM, a.LXDH,
    a.DZXX, a.BYNY, a.XLM, a.XL, a.XWM,
    a.XW, a.KSLYM, a.KSLY, a.KSFSM, a.KSFS,
    a.BKLBM, a.BKLB, a.DASZDWSSM, a.DASZDWSSMC, a.DASZDW,
    a.DASZDWDZ, a.DASZDWYZBM, a.XXGZJL, a.BYXX, a.BYXX1,
    a.BYXX2, a.BYXX3, a.BYXX4, a.JL, a.JTCY,
    a.BYDW, a.BYDWM, a.BYZYDM, a.BYZYMC, '0'||a.DWDM DWDM,
    a.DWMC, a.TJDWDM, a.TJDWMC, a.ZYDM, a.ZYMC,
    a.YXSM, a.YXSMC, a.YJFXM, a.YJFX, a.DSXM,
    a.ZZLLM, a.ZZLLMC, a.WGYM, a.WGYMC, a.YWK1M,
    a.YWK1MC, a.YWK2M, a.YWK2MC, a.YWK3M, a.YWK3MC,
    a.XYJRM, a.XYJR, a.JFBZ, a.ZXBZ, a.BMSJ,
    a.BYXXBZ, a.SFZH, a.BYND, a.KSDW, a.DWSZSSM,
    a.DWSZSSMC, a.ZZLL, a.WGY, a.YWK1, a.YWK2,
    a.YWK3, a.ZF, (NVL(a.fscj,0)) FSCJ, a.LQLBM, a.LQLB,
    a.DXWPDW, a.PG, a.PGBZ, a.BZ, a.WDDWLM,
    a.WDDWL, a.JFLY, a.LQQK, a.BLDW, a.NRXNY,
    a.LQND, a.BZ1, a.BZ2, a.KCH, a.KCDD,
    a.ZWH,a.ZPPATH, a.XH, a.BKZYM, a.BKZY,
    a.XVH,a.DY6FLAG, a.BXYWK1MC, a.BXYWK2MC, a.BXYWK3MC,
    a.QKBZ1, a.QKBZ2, a.QKBZ3, a.QKBZ4, a.QKBZ5,
    a.SSMZLQ, a.KSQK, a.JGM, a.JGS, a.JGSX,
    a.NLDM, a.NL, a.DXZYM, a.DXZY, a.HKSZDSX,
    a.DQDM, a.YDWYB, a.BRTXZ, a.GZDWZ, a.YDWLM,
    a.DWLB, a.BRYB, a.BRDH, a.JTDWM, a.GL,
    a.TSLB, a.TSLBM, a.XXFSM, a.XXFS, a.LQZYM,
    LQZY, ZPCJ, DSXHMH1, DSXHMH2, DSXHMH3,
    a.DSXHMH4, a.SZSSM, a.ZXJH, a.ZXJHBZ, a.BLZGNX,
    BLZG, BLZG1, BLZBZ, JS1MC, JS1CJ,
    a.JS2MC, a.JS2CJ, a.SSMZ, a.SSMZBZ, a.DXWPSSM,
    a.DXWPSS, a.LQXSM, a.LQXSMC, a.LQDSM, a.LQDSXM,
    a.LQYJFXM, a.LQYJFXMC, a.HANDLERESULT, a.XLZSBH, a.XWZSBH,
    a.LQYJFXID, a.XXXS,nvl2(a.reexam , ROUND(GYZF),(zf * ( 1- 0.3))) GYZF,a.GYFS, a.GYCS,
    b.reexam ,a.SPECIALITYNO,a.SPECIALITYNAME,
       (
       SELECT STUDENTTYPE FROM CODE_STUDENTTYPE
       WHERE STUDENTTYPECODE=A.recruitstudenttype ) STUDENTTYPE,
       (SELECT collegename FROM ENROL_COLLEGEINFO) FSDWMC,
       (SELECT collegecode FROM ENROL_COLLEGEINFO) FSDWDM,
       (CASE WHEN a.handleresult='已录取' THEN '1' ELSE '0' END ) nlq,'' HKSZDM
    FROM
    ( SELECT X.*, Y.SPECIALITYNO,Y.SPECIALITYNAME FROM ENROL_EXAMINEE X,   BASE_SPECIALITY Y WHERE X.DEFAULTRECRUITSPEC=Y.SPECSTANDCODE AND x.CONTROLDEPARTMENT IS NOT NULL ) A
    ,(SELECT taskid,reexam FROM ENROL_EXAMINEE) b WHERE a.taskid=b.taskid
    ORDER BY A.KSBH ASC
    咋一看,真不赖,字段将近一百个,而且原表记录数有15000多条。所以可能真的把临时表空间吃完。于是对涉及到的基表做了一个空间占用情况统计:
    SQL> set serveroutput on
    SQL> exec show_space('ENROL_EXAMINEE','AUTO');
    Total Blocks............................2432                                    
    Total Bytes.............................19922944                                
    Unused Blocks...........................0                                       
    Unused Bytes............................0                                       
    Last Used Ext FileId....................11                                      
    Last Used Ext BlockId...................301576                                  
    Last Used Block.........................128                                    
    计算一下基表占用19922944字节,大约是19M。还不包括其它的表的字段统计。先将temp数据文件自动扩展。先不管这个sql语句是否优化,做一个执行计划和统计分析,得到如下结果:
    PLAN_TABLE_OUTPUT                                                               
    ----------------------------------------------------------------------------------------------------                                     
    | Id | Operation                     | Name                       | Rows | Bytes |TempSpc| Cost |                                    
    |   0 | SELECT STATEMENT              |                             | 9023K| 9130M|       | 3579K|                                    
    |   1 | SORT ORDER BY                |                             | 9023K| 9130M|    19G| 3579K|
    |* 2 |   HASH JOIN                   |                             | 9023K| 9130M|       |   439 |                                    
    |   3 |    TABLE ACCESS FULL          | ENROL_EXAMINEE              | 15146 |   310K|       |   231 |                                    
    |* 4 |    TABLE ACCESS BY INDEX ROWID| ENROL_EXAMINEE              |   596 |   591K|       |     2 |                                    
    |   5 |     NESTED LOOPS              |                             | 4171 | 4236K|       |   170 |          
    |   6 |      TABLE ACCESS FULL        | BASE_SPECIALITY             |    84 | 2016 |       |     2 |        
    |* 7 |      INDEX RANGE SCAN         | EXAMINEE_DEFAULTSPEC_INDEX |   202 |       |       |     1 |          
    PLAN_TABLE_OUTPUT                                                               
    --------------------------------------------------------------------------------
    Predicate Information (identified by operation id):                             
    ---------------------------------------------------                             
                                                                                    
       2 - access("SYS_ALIAS_1"."TASKID"="ENROL_EXAMINEE"."TASKID")                 
       4 - filter("SYS_ALIAS_1"."CONTROLDEPARTMENT" IS NOT NULL)                    
       7 - access("SYS_ALIAS_1"."DEFAULTRECRUITSPEC"="Y"."SPECSTANDCODE")          
    PLAN_TABLE_OUTPUT                                                               
    --------------------------------------------------------------------------------
           filter("SYS_ALIAS_1"."DEFAULTRECRUITSPEC" IS NOT NULL)                   
                                                                                    
    Note: cpu costing is off                                          
    由此可知,临时表空间扩展到19G。这当然会把临时表空间全部吃掉。这时应该从sql语句本身来找问题。
    那个sql语句基表大约有15000,而且涉及将近100个字段,最后还有一个非常耗费资源的排序操作。去掉那个order by 查看记录的返回数。
    发现返回的记录数为26950729。这对我们数据库的硬件配置来说是一个很大数量级的数据,而且字段有非常多,所以占用既定的temp表空间的之后还不停的扩展,如果没有设置自动扩展,必然导致无法分配temp段。所以那个问题的产生就是必然的啦。现在追究为什么基表只有15000多条,而查询结构却是26950729条,所以怀疑是sql语句中存在cartesian,于是开始从业务需求来分析这个语句,果然是将最后一个(SELECT taskid,reexam FROM ENROL_EXAMINEE) b 中的基表应该是enrol_task而不是enrol_examinee,因为会产生两个表同个taskid来连接,而每个taskid下有很多学生,这就导致产生了一个庞大的cartesian乘积。最终导致对26950729条记录的排序而使临时表空间用尽。(此时没有自动扩展)将b结果集中ENROL_EXAMINEE用ENROL_TASK来替换,即使还有一个排序,结果也会在很短的时间内返回。
    最后需要说明的是:
        1、sql语句完成之后,需要检查记录的准确性。
        2、尽量不要在视图中进行order by ,这是一个非常耗费资源的操作。
    写下拉,以存警示!

    =======================================================================

    ORA-01652:unable to extend temp segment by num in tablespace name

    产生原因:ORACLE临时段表空间不足,因为ORACLE总是尽量分配连续空间,一但没有足够的可分配空间或者分配不连续就会出现上述的现象。

    解决方法:我们知道由于ORACLE将表空间作为逻辑结构-单元,而表空间的物理结构是数据文件,数据文件在磁盘上物理地创建,表空间的所有对象也存在于磁盘上,为了给表空间增加空间,就必须增加数据文件。先查看一下指定表空间的可用空间,使用视图SYS.DBA_FREE_SPACE,视图中每条记录代表可用空间的碎片大小:

    SQL>Select file_id,block_id,blocks,bytes from sys.dba_free_space where tablespace_name=’’;

    返回的信息可初步确定可用空间的最大块,看一下它是否小于错误信息中提到的尺寸,再查看一下缺省的表空间参数:

    SQL>SELECT INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,PCT_INCREASE FROM SYS.DBA_TABLESPACES WHERE TABLESPACE_NAME=name;

    通过下面的SQL命令修改临时段表空间的缺省存储值:

    SQL>ALTER TABLESPACE name DEFAULT STORAGE (INITIAL XXX NEXT YYY);

    适当增大缺省值的大小有可能解决出现的错误问题,也可以通过修改用户的临时表空间大小来解决这个问题:

    SQL>ALTER USER username TEMPORARY TABLESPACE new_tablespace_name;

    使用ALTER TABLESPACE命令,一但完成,所增加的空间就可使用,无需退出数据库或使表空间脱机,但要注意,一旦添加了数据文件,就不能再删除它,若要删除,就要删除表空间。

    一个报错例子如下:

    ORA-1652:unable to extend temp segment by 207381 in tablespace TEMPSPACE

    相应的英文如下:

    Cause: Failed to allocate extent for temp segment in tablespace

    Action:Use the ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the specified tablespace or create the object in another tablespace.

     

    补充:

    重建Temp表空间

    1. startup --启动数据库      
    2.      
    3. create temporary tablespace TEMP2 TEMPFILE '/home2/oracle/oradata/sysmon/temp02.dbf' SIZE 512M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED; --创建中转临时表空间      
    4.      
    5. alter database default temporary tablespace temp2; --改变缺省临时表空间 为刚刚创建的新临时表空间temp2      
    6.      
    7. drop tablespace temp including contents and datafiles;--删除原来临时表空间      
    8.      
    9. create temporary tablespace TEMP TEMPFILE '/home2/oracle/oradata/sysmon/temp01.dbf' SIZE 512M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED; --重新创建临时表空间      
    10.      
    11. alter database default temporary tablespace temp; --重置缺省临时表空间为新建的temp表空间      
    12.      
    13. drop tablespace temp2 including contents and datafiles;--删除中转用临时表空间      
    14.      
    15. alter user roll temporary tablespace temp; --重新指定用户表空间为重建的临时表空间  
    展开全文
  • 执行一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是...
    执行一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。 
    分析过程:
    既然是temp表空间有问题,那当然就要从temp表空间说起啦。首先要说明的是temp表空间的作用,temp表空间主要是用作需要排序的操作。
    1.临时表空间 是用于在进行排序操作(如大型查询,创建索引和联合查询期间存储临时数据)每个用户都有一个临时表空间。
    2.对于大型操作频繁,(大型查询,大型分类查询,大型统计分析等),应指定单独的临时表空间,以方便管理。
    3.分配用户单独临时表空间,一般是针对 大型产品数据库,OLTP数据库,数据库仓库对于小型产品不需要单独制定临时表空间,使用默认临时表空间。
    正常情况下,一个sql执行之后,返回结果后系统会自动收回分配给这个用户的空间。以便可以把此部分空间再分配给其他用户。
    好了,既然问题出在临时表空间,那就查看一下临时表空间信息:
    select * from dba_tablespaces;
    select * from dba_temp_files;
    select * from v$tempfile
    通过观察发现,temp表空间只有一个数据文件,大小为4G,不自动扩展。大小为4G,应该说是不能算小啦。这时想到,需要看一看执行的sql语句到底是什么样的,难道它能把这个空间用完(由于系统事务非常少,所以暂不考虑其它用户语句对temp的影响),于是就把那个语句拷贝下拉,研究一番:
    SELECT a.TASKID, a.EXAMTYPECODE, a.CONTROLDEPARTMENT, a.DEFAULTRECRUITSPEC, a.ISUPCUNTRYLINE,
    a.ISUPCOLLEGELINE, a.ISMAYJOINRETRIAL, a.JOINRETRIALGIST, a.JOINRETRIALBAK, a.TEMPERSIGN,
    a.RECRUITSTUDENTTYPE, a.MATRICULATEGIST, a.ISNOTICEEXAMINEE, a.AFTERHANDLEDEP, a.TUITION,
    a.KSBH, a.BH, a.XXB, a.BMDDM, a.BMDMC,
    a.BMH, a.XM, a.XMPY, a.ZJLX, a.ZJLXMC,
    a.ZJHM, a.CSRQ, a.MZM, a.MZ, a.XBM,
    a.XB, a.HFM, a.HF, a.ZZMMM, a.ZZMM,
    a.HKSZSSM, a.HKSZSSMC, a.HKSZDXXDZ, a.CSDSSM, a.CSDSSMC,
    a.CSDXXDZ, a.XXGZDW, a.TXDZ, a.YZBM, a.LXDH,
    a.DZXX, a.BYNY, a.XLM, a.XL, a.XWM,
    a.XW, a.KSLYM, a.KSLY, a.KSFSM, a.KSFS,
    a.BKLBM, a.BKLB, a.DASZDWSSM, a.DASZDWSSMC, a.DASZDW,
    a.DASZDWDZ, a.DASZDWYZBM, a.XXGZJL, a.BYXX, a.BYXX1,
    a.BYXX2, a.BYXX3, a.BYXX4, a.JL, a.JTCY,
    a.BYDW, a.BYDWM, a.BYZYDM, a.BYZYMC, '0'||a.DWDM DWDM,
    a.DWMC, a.TJDWDM, a.TJDWMC, a.ZYDM, a.ZYMC,
    a.YXSM, a.YXSMC, a.YJFXM, a.YJFX, a.DSXM,
    a.ZZLLM, a.ZZLLMC, a.WGYM, a.WGYMC, a.YWK1M,
    a.YWK1MC, a.YWK2M, a.YWK2MC, a.YWK3M, a.YWK3MC,
    a.XYJRM, a.XYJR, a.JFBZ, a.ZXBZ, a.BMSJ,
    a.BYXXBZ, a.SFZH, a.BYND, a.KSDW, a.DWSZSSM,
    a.DWSZSSMC, a.ZZLL, a.WGY, a.YWK1, a.YWK2,
    a.YWK3, a.ZF, (NVL(a.fscj,0)) FSCJ, a.LQLBM, a.LQLB,
    a.DXWPDW, a.PG, a.PGBZ, a.BZ, a.WDDWLM,
    a.WDDWL, a.JFLY, a.LQQK, a.BLDW, a.NRXNY,
    a.LQND, a.BZ1, a.BZ2, a.KCH, a.KCDD,
    a.ZWH,a.ZPPATH, a.XH, a.BKZYM, a.BKZY,
    a.XVH,a.DY6FLAG, a.BXYWK1MC, a.BXYWK2MC, a.BXYWK3MC,
    a.QKBZ1, a.QKBZ2, a.QKBZ3, a.QKBZ4, a.QKBZ5,
    a.SSMZLQ, a.KSQK, a.JGM, a.JGS, a.JGSX,
    a.NLDM, a.NL, a.DXZYM, a.DXZY, a.HKSZDSX,
    a.DQDM, a.YDWYB, a.BRTXZ, a.GZDWZ, a.YDWLM,
    a.DWLB, a.BRYB, a.BRDH, a.JTDWM, a.GL,
    a.TSLB, a.TSLBM, a.XXFSM, a.XXFS, a.LQZYM,
    LQZY, ZPCJ, DSXHMH1, DSXHMH2, DSXHMH3,
    a.DSXHMH4, a.SZSSM, a.ZXJH, a.ZXJHBZ, a.BLZGNX,
    BLZG, BLZG1, BLZBZ, JS1MC, JS1CJ,
    a.JS2MC, a.JS2CJ, a.SSMZ, a.SSMZBZ, a.DXWPSSM,
    a.DXWPSS, a.LQXSM, a.LQXSMC, a.LQDSM, a.LQDSXM,
    a.LQYJFXM, a.LQYJFXMC, a.HANDLERESULT, a.XLZSBH, a.XWZSBH,
    a.LQYJFXID, a.XXXS,nvl2(a.reexam , ROUND(GYZF),(zf * ( 1- 0.3))) GYZF,a.GYFS, a.GYCS,
    b.reexam ,a.SPECIALITYNO,a.SPECIALITYNAME,
    (
    SELECT STUDENTTYPE FROM CODE_STUDENTTYPE
    WHERE STUDENTTYPECODE=A.recruitstudenttype ) STUDENTTYPE,
    (SELECT collegename FROM ENROL_COLLEGEINFO) FSDWMC,
    (SELECT collegecode FROM ENROL_COLLEGEINFO) FSDWDM,
    (CASE WHEN a.handleresult='已录取' THEN '1' ELSE '0' END ) nlq,'' HKSZDM
    FROM
    ( SELECT X.*, Y.SPECIALITYNO,Y.SPECIALITYNAME FROM ENROL_EXAMINEE X, BASE_SPECIALITY Y WHERE X.DEFAULTRECRUITSPEC=Y.SPECSTANDCODE AND x.CONTROLDEPARTMENT IS NOT NULL ) A
    ,(SELECT taskid,reexam FROM ENROL_EXAMINEE) b WHERE a.taskid=b.taskid
    ORDER BY A.KSBH ASC
    咋一看,真不赖,字段将近一百个,而且原表记录数有15000多条。所以可能真的把临时表空间吃完。于是对涉及到的基表做了一个空间占用情况统计:
    SQL> set serveroutput on
    SQL> exec show_space('ENROL_EXAMINEE','AUTO');
    Total Blocks............................2432
    Total Bytes.............................19922944
    Unused Blocks...........................0
    Unused Bytes............................0
    Last Used Ext FileId....................11
    Last Used Ext BlockId...................301576
    Last Used Block.........................128
    计算一下基表占用19922944字节,大约是19M。还不包括其它的表的字段统计。先将temp数据文件自动扩展。先不管这个sql语句是否优化,做一个执行计划和统计分析,得到如下结果:
    PLAN_TABLE_OUTPUT
    ----------------------------------------------------------------------------------------------------
    | Id | Operation | Name | Rows | Bytes |TempSpc| Cost |
    | 0 | SELECT STATEMENT | | 9023K| 9130M| | 3579K|
    | 1 | SORT ORDER BY | | 9023K| 9130M| 19G| 3579K|
    |* 2 | HASH JOIN | | 9023K| 9130M| | 439 |
    | 3 | TABLE ACCESS FULL | ENROL_EXAMINEE | 15146 | 310K| | 231 |
    |* 4 | TABLE ACCESS BY INDEX ROWID| ENROL_EXAMINEE | 596 | 591K| | 2 |
    | 5 | NESTED LOOPS | | 4171 | 4236K| | 170 |
    | 6 | TABLE ACCESS FULL | BASE_SPECIALITY | 84 | 2016 | | 2 |
    |* 7 | INDEX RANGE SCAN | EXAMINEE_DEFAULTSPEC_INDEX | 202 | | | 1 |
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------
    Predicate Information (identified by operation id):
    ---------------------------------------------------

    2 - access("SYS_ALIAS_1"."TASKID"="ENROL_EXAMINEE"."TASKID")
    4 - filter("SYS_ALIAS_1"."CONTROLDEPARTMENT" IS NOT NULL)
    7 - access("SYS_ALIAS_1"."DEFAULTRECRUITSPEC"="Y"."SPECSTANDCODE")
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------
    filter("SYS_ALIAS_1"."DEFAULTRECRUITSPEC" IS NOT NULL)

    Note: cpu costing is off
    由此可知,临时表空间扩展到19G。这当然会把临时表空间全部吃掉。这时应该从sql语句本身来找问题。
    那个sql语句基表大约有15000,而且涉及将近100个字段,最后还有一个非常耗费资源的排序操作。去掉那个order by 查看记录的返回数。
    发现返回的记录数为26950729。这对我们数据库的硬件配置来说是一个很大数量级的数据,而且字段有非常多,所以占用既定的temp表空间的之后还不停的扩展,如果没有设置自动扩展,必然导致无法分配temp段。所以那个问题的产生就是必然的啦。现在追究为什么基表只有15000多条,而查询结构却是26950729条,所以怀疑是sql语句中存在cartesian,于是开始从业务需求来分析这个语句,果然是将最后一个(SELECT taskid,reexam FROM ENROL_EXAMINEE) b 中的基表应该是enrol_task而不是enrol_examinee,因为会产生两个表同个taskid来连接,而每个taskid下有很多学生,这就导致产生了一个庞大的cartesian乘积。最终导致对26950729条记录的排序而使临时表空间用尽。(此时没有自动扩展)将b结果集中ENROL_EXAMINEE用ENROL_TASK来替换,即使还有一个排序,结果也会在很短的时间内返回。
    最后需要说明的是:
    1、sql语句完成之后,需要检查记录的准确性。
    2、尽量不要在视图中进行order by ,这是一个非常耗费资源的操作。
    写下拉,以存警示!


    =======================================================================
    以下摘自[url]http://blog.csdn.net/luojunjing/archive/2005/02/12/286327.aspx[/url]
    ORA-01652:unable to extend temp segment by num in tablespace name
    产生原因:ORACLE临时段表空间不足,因为ORACLE总是尽量分配连续空间,一但没有足够的可分配空间或者分配不连续就会出现上述的现象。
    解决方法:我们知道由于ORACLE将表空间作为逻辑结构-单元,而表空间的物理结构是数据文件,数据文件在磁盘上物理地创建,表空间的所有对象也存在于磁盘上,为了给表空间增加空间,就必须增加数据文件。先查看一下指定表空间的可用空间,使用视图SYS.DBA_FREE_SPACE,视图中每条记录代表可用空间的碎片大小:
    SQL>Select file_id,block_id,blocks,bytes from sys.dba_free_space where tablespace_name=’’;
    返回的信息可初步确定可用空间的最大块,看一下它是否小于错误信息中提到的尺寸,再查看一下缺省的表空间参数:
    SQL>SELECT INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,PCT_INCREASE FROM SYS.DBA_TABLESPACES WHERE TABLESPACE_NAME=name;
    通过下面的SQL命令修改临时段表空间的缺省存储值:
    SQL>ALTER TABLESPACE name DEFAULT STORAGE (INITIAL XXX NEXT YYY);
    适当增大缺省值的大小有可能解决出现的错误问题,也可以通过修改用户的临时表空间大小来解决这个问题:
    SQL>ALTER USER username TEMPORARY TABLESPACE new_tablespace_name;
    使用ALTER TABLESPACE命令,一但完成,所增加的空间就可使用,无需退出数据库或使表空间脱机,但要注意,一旦添加了数据文件,就不能再删除它,若要删除,就要删除表空间。
    一个报错例子如下:
    ORA-1652:unable to extend temp segment by 207381 in tablespace TEMPSPACE
    相应的英文如下:
    Cause: Failed to allocate extent for temp segment in tablespace
    Action:Use the ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the specified tablespace or create the object in another tablespace.
    本文出自 51CTO.COM技术博客
    展开全文
  • ORACLE ORA-01653: unable to extend table错误 今天用PL SQL Developer往oracle数据库中导入数据时,突然报错,只能终止,错误具体内容如下: ...出现这种表空间不足问题一般有两种情况:一种是表空间的自动扩.

    ORACLE ORA-01653: unable to extend table 的错误

    今天用PL SQL Developer往oracle数据库中导入数据时,突然报错,只能终止,错误的具体内容如下:

    ORA-01653: unable to extend table USER_DATA.JKHDFXJL by 128 in tablespace MSMS

    大概意思是说USER_DATA表空间不足了,于是google了一下,大概有了些眉目。出现这种表空间不足的问题一般有两种情况:一种是表空间的自动扩展功能没有开;另一种是空间确实不够用了,已经达到了自动扩展的上限。

    所以我们解决问题的步骤就是先查看Oracle数据库表空间大小,然后看一下表空间下的所有的数据文件的自动扩展功能是否打开;若确实是表空间不够用了,那么我们就需要扩大表空间了。

    具体步骤如下:

    1. 在PL SQL Developer中执行如下SQL语句

    SELECT a.tablespace_name "表空间名",
    
    a.bytes / 1024 / 1024 "表空间大小(M)",
    
    (a.bytes - b.bytes) / 1024 / 1024 "已使用空间(M)",
    
    b.bytes / 1024 / 1024 "空闲空间(M)",
    
    round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "使用比"
    
    FROM (SELECT tablespace_name, sum(bytes) bytes
    
    FROM dba_data_files
    
    GROUP BY tablespace_name) a,
    
    (SELECT tablespace_name, sum(bytes) bytes, max(bytes) largest
    
    FROM dba_free_space
    
    GROUP BY tablespace_name) b
    
    WHERE a.tablespace_name = b.tablespace_name
    
    ORDER BY ((a.bytes - b.bytes) / a.bytes) DESC

     

    "表空间大小(M)"表示表空间所有的数据文件总共在操作系统占用磁盘空间的大小;

    比如:USER_DATA表空间有2个数据文件,datafile1为300MB,datafile2为400MB,那么USER_DATA表空间的"表空间大小"就是700MB。

    "已使用空间(M)"表示表空间已经使用了多少;

    "空闲空间(M)"表示表空间剩余多少;

    "使用比"表示已经使用的百分比;

    1. 比如从步骤1中查看到USER_DATA表空间已使用百分比达到90%以上,可以查看该表空间总共有几个数据文件,每个数据文件是否自动扩展,可以自动扩展的最大值。

    SELECT file_name,
    
    tablespace_name,
    
    bytes / 1024 / 1024 "bytes MB",
    
    maxbytes / 1024 / 1024 "maxbytes MB"
    
    FROM dba_data_files
    
    WHERE tablespace_name = 'USER_DATA';

     

    1. 查看 MSMS 表空间是否为自动扩展 

    SELECT file_id, file_name, tablespace_name, autoextensible, increment_by
    
    FROM dba_data_files
    
    WHERE tablespace_name = 'USER_DATA'
    
    ORDER BY file_id desc;

     

    查看"autoextensible"对应的值是YES还是NO,若是NO,说明MSMS表空间的自动扩展功能没有开,改成YES就可以了。

    1. 比如MSMS表空间目前的大小为0.9GB,但最大每个数据文件只能为1GB,数据文件快要写满,那么我们就需要扩大表空间了。

    扩大表空间又分两种做法:一种是增大数据文件大小,一种是增加数据文件数量。


    首先找出该表空间对应的数据文件及路径

    SELECT * FROM dba_data_files t WHERE t.tablespace_name='表空间名称';

     

    --查找对应的表空间中的数据文件的全路径,该路径对应FILE_NAME字段。

    1. 解决方法1:增大数据文件

    alter database datafile '全路径的数据文件名称' resize ***M;

     

    --增加对应的表空间里面的某个数据文件的大小为***M。

    1. 解决方法2:增加数据文件

    获取创建表空间的语句:

    SELECT dbms_metadata.get_ddl('TABLESPACE', 'USER_DATA') FROM dual;

     

    1. 确认磁盘空间足够,增加一个数据文件【用操作系统UNIX、Linux中的df -g命令(查看下可以使用的磁盘空间大小)】

    alter tablespace 表空间名称 add datafile '全路径的数据文件名称' size ***M autoextend on maxsize 20G;

     

    --新增一个数据文件,全路径的数据文件名称为该新增数据文件的全路径文件名称。大小为***M,自动扩展功能打开,且该数据文件的最大扩展值为20G。

    1. 验证已经增加的数据文件

    
    SELECT file_name, file_id, tablespace_name
    
    FROM dba_data_files
    
    WHERE tablespace_name = '表空间名称'

     

    1. 如果删除表空间数据文件

    altertablespace 表空间名称 DROP datafile '/u01/app/oracle/product/10.2.0/oradata/orcl/USER_DATA.dbf '

     

     

    PS:表空间一般让空闲百分比保持在10%以上,且数据文件大小最好不要超过2G。当表空间不足时,要么resieze datafile,要么增加datafile。

    展开全文
  • Tag: ... ...昨天开发人员跟我说,执行一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle错误代码说明:意思是指temp表空间无法自动扩展te...
  • oracle系统表空间和自定义表空间

    千次阅读 2017-08-16 07:57:50
    1,如何建立表空间 create tablespace 空间逻辑名称 datafile 'G:\\space\data.dnf...autoextend on(这句是自动扩展的意思) next 大小(2m)(每次扩展的大小2m最大是下面的一句maxsize 最大值) maxsize 最
  • 查阅了oracle错误代码说明:意思是指temp表空间无法自动扩展temp段。 这种问题一般有两种原因: 一是临时表空间空间太小,二是不能自动扩展。 分析过程: temp表空间主要是用作需要排序操作。 1.临时表...
  • ORACLE表空间限额

    2014-06-30 19:38:22
    通过功能号查到是HS_CRDT用户表,以为是表空间满了,又对数据文件没有设置自动扩展, select t1.name,t2.name from v$tablespace t1,v$datafile t2 where t1.TS#=t2.TS#;查看数据文件位置就进行了数据文件...
  • 今天用PL SQL Developer往oracle数据库中导入数据时,突然报错,只能终止,错误具体内容如下:ORA-01653: ...出现这种表空间不足问题一般有两种情况:一种是表空间的自动扩展功能没有开;另一种是空间确实不够用...
  • 一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能...
  • 随着自动化和认知技术从制造业领域扩展到知识型劳动者的办公空间,企业领导者必须知道的术语也在增多。尽管RPA行业使用了许多传统物理机器人领域所用到的术语,但当这些术语转移到办公语境下,它们的意思往往不一样...
  • 另一种是空间确实不够用了,已经达到了自动扩展的上限。 所以我们解决问题的步骤就是先查看Oracle数据库表空间大小,然后看一下表空间下的所有的数据文件的自动扩展功能是否打开;若确实是表空间不够用了,那么我们...
  • ORA-01653: unable to extend table HSDC.ADDRESS by 128 in tablespace DATACENTER大概的意思是说HSDC表空间不足了,在网上搜了一下出现这种表空间不足的问题一般有两种情况:一种是表空间自动扩展功能没有打开;...
  •  意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。 二、分析  查看temp表空间的数据文件个数,当前大小,是否自动扩展 SQL> SELECT TABLESPACE_...
  • iOS 栈和堆区别

    2016-03-21 16:02:10
    iOS 栈和堆的区别管理方式:...这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的。因此,能从栈获得的空间较小。 堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内
  • android真机启动

    2018-09-18 11:04:10
    导入 1.2gdmp文件 时候 发现报错 oracle 1658 意思 是 你表空间的容量 不够了 有几种可能性: ...FILE_NAME as 数据文件,TABLESPACE_NAME as 表空间名称,AUTOEXTENSIBLE as 自动扩展,STATUS...
  • 数据库移植过程中出现问题 unable to create INITIAL ...意思是 TEST 表空间太小了, 而又不能自动扩展 extern 解决方案一: 重新定义表空间大小: ALTER TABLESPACE DATA01 RESIZE 5G ; 又出现...
  • 最近在用PL/SQL对环境插入5千多万条数据复现测试环境问题。...大概意思是说table_space表空间不足,出现这种问题一般有两种情况:一种是表空间的自动扩展功能没有打开;另一种是空间确实不够用了,已...
  • 这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在 WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的...
  • 在测试oracle数据库时出现错误ORA-01653: unable ...意思是在表空间TS_U_DEFAULT上不能扩展表T_USI_PAYACC的大小以128个字节为单位. 造成此错误的原因有两个 1.一种是空间确实不够用了,已经达到了自动扩展的上限 2.一
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    如果我将指针值设为0,编译器可能会自动将它转换为非零空指针内部表示。 5.20运行时“nullpointerassignment”错误是什么意思?应该怎样捕捉它? 第6章 数组和指针 数组和指针基本关系 6.1 我在一个...
  • 意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。 然后查询临时表空间的使用情况:![图片说明]...

空空如也

空空如也

1 2 3 4 5
收藏数 88
精华内容 35
关键字:

表空间自动扩展的意思