ORA-01659,ORA-01652错误

WBOY
풀어 주다: 2016-06-07 17:35:46
원래의
1907명이 탐색했습니다.

数据库一张表进行insert时,出现ORA-01659错误ERROR at line 1:ORA-01659: unable to allocate MINEXTENTS beyond 56 in tablesp

数据库一张表进行insert时,出现ORA-01659错误
ERROR at line 1:
ORA-01659: unable to allocate MINEXTENTS beyond 56 in tablespace USER01
同时后台alert 日志出现
ORA-1652: unable to extend temp segment by 8192 in tablespace                USER01
刚开始以为是user01表空间不足导致,可是查询表空间使用率很低,也就可以排除因空间不足的原因了。
我新建了一张测试表 ,对表进行insert 和update 均没有任何问题,于是感觉可能是由于表的自身问题所致。
查看表的建表语句:
select  dbms_metadata.get_ddl('TABLE','T2') from dual;
------------------------
 CREATE TABLE scott.t2
  (    "ID" VARCHAR2(50) NOT NULL ENABLE,
      "MOBILENO" VARCHAR2(11))
 SEGMENT CREATION IMMEDIATE
 PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
 STORAGE(INITIAL 4294967296 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
 TABLESPACE "USER01"

这里可以看到STORAGE(INITIAL 4294967296 NEXT 1048576) 这个参数特别大,默认是65536.
我把建表语句放到另一个库里执行,想新建一张同样的表,,结果出现了和之前一样的报错信息。
orcl@ SCOTT>    CREATE TABLE scott.t2
 2    (    "ID" VARCHAR2(50) NOT NULL ENABLE,
 3          "MOBILENO" VARCHAR2(11))
 4    STORAGE( INITIAL 4294967296 NEXT 8192 MINEXTENTS 1)
 5    TABLESPACE "USER01";
  CREATE TABLE scott.t2
*
ERROR at line 1:
ORA-01659: unable to allocate MINEXTENTS beyond 5 in tablespace USER01
由此可以确认此错是初始化存储参数过大导致,于是重新建表 并修改初始化存储参数,于是问题解决。
 1    CREATE TABLE scott.t2
 2    (    "ID" VARCHAR2(50) NOT NULL ENABLE,
 3          "MOBILENO" VARCHAR2(11))
 4    STORAGE( INITIAL 65536 NEXT 8192 MINEXTENTS 1)
 5*  TABLESPACE "USER01"
以下是引述Oracle 文档对此错误的解释:

Error:  ORA-1652
Text:  unable to extend temp segment by %s in tablespace %s
------- -----------------------------------------------------------------------
Cause:  Failed to allocate an extent for temp segment in tablespace.
Action: Use ALTER TABLESPACE ADD DATAFILE statement to add one or more
      files to the tablespace indicated or create the object in another
      tablespace.

*** Important: The notes below are for experienced users - See Note:22080.1


Explanation:
      This error is fairly self explanatory - we cannot get enough space for a temporary segment.
      The size reported in the error message is the number of contiguous free Oracle blocks that cannot be found in the listed tablespace.

 NOTE: A "temp segment" is not necessarily a SORT segment in a temporary tablespace.
      It is also used for temporary situations while creating or dropping objects like tables and indexes in permanent tablespaces.
      eg: When you perform a CREATE INDEX a TEMP segment is created to hold what will be the final permanent index data.
            This TEMP segment is converted to a real INDEX segment in the dictionary at the end of the CREATE INDEX operation.
            It remains a temp segment for the duration of the CREATE INDEX operation and so failures to extend it report ORA-1652 rather than an INDEX related space error.

A TEMPORARY segment may be from:

A SORT Used for a SELECT or for DML/DDL

CREATE INDEX The index create performs a SORT in the users default TEMP tablespace and ALSO uses a TEMP segment to build the final index in the INDEX tablespace. Once the index build is complete the segment type is changed.

CREATE PK CONSTRAINT  

ENABLE CONSTRAINT  

CREATE TABLE New tables start out as TEMPORARY segments.
Eg: If MINEXTENTS is > 1 or you issue CREATE table as SELECT.

Accessing a GLOBAL TEMPORARY TABLE When you access a global temporary table a TEMP segment is instantiated to hold the temporary data.

It is worth making sure the TEMP tablespace PCTINCREASE is 0 and  that it has a sensible (large) storage clause to prevent fragmentation.
      For TEMPORARY temp tablespaces make sure both INITIAL and NEXT are  set to large values as extent sizes are taken from the NEXT clause and not the INITIAL clause.

linux

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!