加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ORA-01652 unable to extend temp segment

(2014-11-17 16:33:01)
标签:

it

ora-01652

分类: SAP_Basis
ORA-01652 unable to extend temp segment by 1024 in tablespace PSAPSR3USR




SQL> show user;
USER is "JASON"
SQL> set pagesize 2000 linesize 1000
SQL> create table t7 as select rownum as id ,rownum+1 as id2,rpad('*',1000,'*') as contents from dual connect by level<=1000000;
create table t7 as select rownum as id ,rownum+1 as id2,rpad('*',1000,'*') as contents from dual connect by level<=1000000
*
ERROR at line 1:
ORA-01652: unable to extend temp segment by 1024 in tablespace PSAPSR3USR



--查询临时表空间
SQL> select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;
TABLESPACE_NAME FILE_NAME                                     FILE_SIZE AUT
--------------- --------------------------------------------- --------- ---
PSAPTEMP        /oracle/PRD/sapdata2/temp_1/temp.data1            16384 NO
PSAPTEMP        /oracle/PRD/sapdata2/temp_2/temp.data2            16384 NO
TEMP_JASON      /oracle/PRD/sapdata2/temp_2/tempjason.dbf          4096 NO


--查询表空间整体情况,确定PSAPSR3USR仍有剩余
SQL>  SELECT A.TABLESPACE_NAME "表空间名",
  2         A.TOTAL_SPACE "总空间(G)",
  3         NVL(B.FREE_SPACE, 0) "剩余空间(G)",
  4         A.TOTAL_SPACE - NVL(B.FREE_SPACE, 0) "使用空间(G)",
  5         CASE WHEN A.TOTAL_SPACE=0 THEN 0 ELSE trunc(NVL(B.FREE_SPACE, 0) / A.TOTAL_SPACE * 100, 2) END "剩余百分比%" --避免分母为0
  6    FROM (SELECT TABLESPACE_NAME, trunc(SUM(BYTES) / 1024 / 1024/1024 ,2) TOTAL_SPACE
  7            FROM DBA_DATA_FILES
  8           GROUP BY TABLESPACE_NAME) A,
  9         (SELECT TABLESPACE_NAME, trunc(SUM(BYTES / 1024 / 1024/1024  ),2) FREE_SPACE
 10            FROM DBA_FREE_SPACE
 11           GROUP BY TABLESPACE_NAME) B
 12   WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+)
 13   ORDER BY 5;
表空间名                        总空间(G) 剩余空间(G) 使用空间(G) 剩余百分比%
------------------------------ ---------- ----------- ----------- -----------
TBS_JASON                               0           0           0           0
UNDOTBS2                                0           0           0           0
PSAPSR3USR                             24         .64       23.36        2.66
PSAPSR3                              1176       67.95     1108.05        5.77
PSAPUNDO                               24        1.61       22.39         6.7
PSAPSR3700                             72        11.1        60.9       15.41
SYSTEM                                  2         .44        1.56          22
SYSAUX                                  2         .58        1.42          29
PERFSTAT                              .48         .34         .14       70.83




--查询当前用户的默认表空间
select * from database_properties where property_name = 'DEFAULT_PERMANENT_TABLESPACE';
显示SYSTEM


--修改用户的默认表空间
alter database default tablespace PSAPSR3;


--查盾表空间与其数据文件的对应关系
 select s.name, d.name from v$datafile d, v$tablespace s where d.ts# = s.ts# order by 1;
  PSAPSR3USR     /oracle/QAS/sapdata1/sr3usr_1/sr3usr.data1

oraqas> du -sm /oracle/QAS/sapdata1/sr3usr_1/sr3usr.data1
24576.38        /oracle/QAS/sapdata1/sr3usr_1/sr3usr.data1


--尝试对PSAPSR3USR扩容
oraqas>mkdir -p /oracle/QAS/sapdata1/sr3usr_2/
ALTER TABLESPACE PSAPSR3 ADD DATAFILE '/oracle/QAS/sapdata1/sr3usr_2/sr3usr.data2' SIZE 24576M;


--查看指定用户的默认表空间、默认临时表空间
col USERNAME format a8;
col DEFAULT_TABLESPACE format a20;
col TEMPORARY_TABLESPACE format a20;
select username,default_tablespace,temporary_tablespace
from dba_users
where username = 'JASON';

USERNAME DEFAULT_TABLESPACE   TEMPORARY_TABLESPACE
-------- -------------------- --------------------
JASON    PSAPSR3USR           PSAPTEMP



--调整JASON的默认表空间
ALTER USER JASON DEFAULT TABLESPACE PSAPSR3;


select username,default_tablespace,temporary_tablespace
from dba_users
where username = 'JASON';

USERNAME DEFAULT_TABLESPACE   TEMPORARY_TABLESPACE
-------- -------------------- --------------------
JASON    PSAPSR3           PSAPTEMP


--终于解决了
SQL> create table t7 as select rownum as id ,rownum+1 as id2,rpad('*',1000,'*') as contents from dual connect by level<=1000000;
Table created.

最关键的地方:
ORA-01652 <wbr>unable <wbr>to <wbr>extend <wbr>temp <wbr>segment

心得体会:
(1)开始胡乱加这空间,加那空间,其实不用加空间。
(2)一定围绕警告,深入挖掘,不要“想当然”,否则易跑偏。
(3)熟练运用脚本,也重要。
(4)最重要的一点:就是调查,调查这个用户,这个表空间,它们有何关系。


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有