ora-1652
###检查是否有temp 在使用
step 2: 检查是否有事务使用到temp,并且进行删除。
SELECT vt.inst_id,
vs.sid,
vs.serial#,
vs.username,
vs.osuser,
vs.machine,
vs.saddr,
vs.client_info,
vs.program,
vs.module,
vs.logon_time,
vt.tempseg_usage,
vt.segtype
FROM gv$session vs,
(SELECT inst_id,
username,
session_addr,
segtype,
ROUND(SUM(blocks) * 8192 / 1024 / 1024 / 1024, 2) tempseg_usage
FROM gv$tempseg_usage
GROUP BY inst_id, username, session_addr, segtype
ORDER BY 4 DESC) vt
WHERE vs.inst_id = vt.inst_id
AND vs.saddr = vt.session_addr
order by tempseg_usage desc;
SELECT sysdate,a.username, a.sid, a.serial#, a.osuser, b.blocks, c.sql_text
FROM v$session a, v$sort_usage b, v$sqlarea c
WHERE b.tablespace = 'TEMP'
and a.saddr = b.session_addr
AND c.address= a.sql_address
AND c.hash_value = a.sql_hash_value
AND b.blocks*(select block_size from dba_tablespaces where tablespace_name = b.tablespace) > 1024;
| TROUBLESHOOTING GUIDE (TSG) : ORA-1652: unable to extend temp segment (文档 ID 1267351.1) | 转到底部 |
![]() |

|
In this Document
APPLIES TO:Oracle Database - Enterprise Edition - Version 8.0.6.0 to 11.2.0.2.0 [Release 8.0.6 to 11.2] SYMPTOMSOracle database instances will from time to time experience ORA-1652: unable to extend temp segment by %s in tablespace %s A vast majority of the time this is a normal but annoying condition due to a temporary tablespace having its space exhausted CAUSEEXAMPLE 1: Temporary tablespace TEMP is being used and is 50gb in size (a recommended minimum for 11g) TIME 1 : Session 1 starts a long running query EXAMPLE 2: Permanent tablespace INDEX_TBS is being used and has 20gb of space free TIME 1 : Session 1 begins a CREATE INDEX command with the index stored in INDEX_TBS SOLUTIONFirst it is important to forget what is known about past behavior of the instance as the current tablespace size is insufficient to handle the demand by current sessions There are three recommended methods of supplying sufficient storage space to meet the needs of current sessions by increasing the size of your temporary tablespace 1) Set one or more of the tempfiles|datafiles for the tablespace to AUTOEXTEND with MAXSIZE set ... so that you do not exhaust all available disk volume space After a month or so of having this setting ... AUTOEXTEND can be disabled .. as it is likely that the system has found its true high watermark for temporary segment usage (This is the most recommended method as it allows the database instance to find its own high watermark) 2) Monitor the temporary segment usage via queries like SELECT sum(blocks)*<block size of the temporary tablespace> and resize one or more of the tempfiles|datafiles for the tablespace as the tablespace becomes close to exhausted 3) Add a tempfile|datafile to the temporary tablespace with the problem and monitor usage as described in #2 Another good idea is to monitor temporary tablespace usage over time to determine what queries are consuming the temporary space space For example: How Can Temporary Segment Usage Be Monitored Over Time? (Doc ID 364417.1) This note was written to monitor temporary tablespaces .. but may be able to be modified to also monitor permanent tablespaces If after adjusting the 'granularity' of the monitoring job (Doc ID 364417.1) to a small sampling period (1 min should be sufficient) it is found that there truly are never any points in time where temporary segment usage approaches the point where the tablespace has been exhausted then we recommend opening a service request via My Oracle Support so a possible bug can be investigated |
| How Can Temporary Segment Usage Be Monitored Over Time? (文档 ID 364417.1) | 转到底部 |
![]() |

|
In this Document
APPLIES TO:Oracle Database - Enterprise Edition - Version 8.1.7.0 and later GOALSuggest a method by which temporary segment usage be monitored over time Such a process would aid greatly in investigating ORA-1652 "unable to extend temp segment by %s in tablespace %s" EXAMPLE Suppose we have a 90gb temporary tablespace (only one temp tablespace for this example) At time 1 ... a long ... complicated query starts running At time 2 (time 1 + several hours) another query runs and quickly consumes 5gb of space ... and generates an ORA-1652 At this point .. the errorstack for 1652 will show the query started at time 2 ... not the BIG temp space consumer ... started at time 1 At time 3 ... This note is used to setup the monitoring job to watch the temp segment usage over time ... Now .. suppose while setting up the job ... the query from time 1 ... ends ... and frees up its 85gb of space ... then our job will not show At time 4 .. the same query that consumed the 85gb of space is run again At time 5 .. our job setup to monitor temporary space usage runs ... and it is noted that the Time 4 query is using 5gb of temp space At time 6 .. our job setup to monitor temporary space usage runs ... and it is noted that the Time 4 query is using 50gb of temp space At time 7 .. our job setup to monitor temporary space usage runs ... and it is noted that the Time 4 query is using 85gb of temp space At time 8 ... another query is started that quickly consumes the remaining 5gb of space ... and as a result .. an ORA-1652 occurs Again .. our errorstack trace will point to this query .. an not the query started at Time 4 ... The job that is running ... WILL show the session that consumed the 85gb of space Once the 'top consumers' of space have been determined .. those query can be investigated for possible tuning to use less space ... and if they cannot be tuned then more space needs to be added to the temporary tablespace that is running out of space SOLUTIONCASE STUDY: EXAMPLE of how to monitor Temporary Segment Usage over time sqlplus / as sysdba -- NOTE: If SYS is unacceptable then use a schema that has access of each of the DBA views below -- Create a table to hold your temporary space monitoring CREATE TABLE <temporary tablespace name to monitor>_TEMP_SEG_USAGE( CREATE TABLE TEMP_TEMP_SEG_USAGE(
DATE_TIME DATE, USERNAME VARCHAR2(30), SID VARCHAR2(6), SERIAL# VARCHAR2(6), OS_USER VARCHAR2(30), SPACE_USED NUMBER, SQL_TEXT VARCHAR2(1000));
-- Create a job in the job queue to insert into your monitoring table -- For 8.1.7 to 9.1 CREATE OR REPLACE PROCEDURE <temporary tablespace name to monitor>_TEMP_SEG_USAGE_INSERT IS BEGIN CREATE OR REPLACE PROCEDURE TEMP_TEMP_SEG_USAGE_INSERT IS
BEGIN insert into TEMP_TEMP_SEG_USAGE SELECT sysdate,a.username, a.sid, a.serial#, a.osuser, b.blocks, c.sql_text FROM v$session a, v$sort_usage b, v$sqlarea c WHERE b.tablespace = 'TEMP' and a.saddr = b.session_addr AND c.address= a.sql_address AND c.hash_value = a.sql_hash_value AND b.blocks*(select block_size from dba_tablespaces where tablespace_name = b.tablespace) > 1024; COMMIT; END; / SELECT JOB FROM DBA_JOBS; JOB BEGIN -- For 9.2 and above: CREATE OR REPLACE PROCEDURE <temporary tablespace name to monitor>_TEMP_SEG_USAGE_INSERT IS BEGIN CREATE OR REPLACE PROCEDURE TEMP_TEMP_SEG_USAGE_INSERT IS
BEGIN insert into TEMP_TEMP_SEG_USAGE SELECT sysdate,a.username, a.sid, a.serial#, a.osuser, b.blocks, c.sql_text FROM v$session a, v$sort_usage b, v$sqlarea c WHERE b.tablespace = 'TEMP' and a.saddr = b.session_addr AND c.address= a.sql_address AND c.hash_value = a.sql_hash_value AND b.blocks*(select block_size from dba_tablespaces where tablespace_name = b.tablespace) > 1024; COMMIT; END; / SELECT JOB FROM DBA_JOBS; JOB BEGIN -- Periodically query your monitoring table <temporary tablespace name to monitor>_TEMP_SEG_USAGE. select * from <temporary tablespace name to monitor>_TEMP_SEG_USAGE; select segment_name, tablespace_name, bytes/ (1024*1024) UsedMb truncate table <temporary tablespace name to monitor>_TEMP_SEG_USAGE; select * from temp_temp_seg_usage;
DATE_TIME USERNAME SID SERIAL select segment_name, tablespace_name, bytes/ (1024*1024) UsedMb SEGMENT_NAME truncate table temp_temp_seg_usage; Table truncated. |
select max(bytes)/1024/1024 from dba_free_space
where tablespace_name = 'TBS_BIEETL_DATA';
SQL> select count(*) from dba_recyclebin;
COUNT(*)
----------
1875
SQL> select max(bytes)/1024/1024 from dba_free_space
2 where tablespace_name = 'TBS_BIEETL_DATA';
MAX(BYTES)/1024/1024
--------------------
3968
select tablespace_name, file_id, bytes_used, bytes_free
from v$temp_space_header ;
alter system set events '1658 trace name errorstack level 3';
alter system set events '1653 trace name errorstack level 3';
alter system set events '1652 trace name errorstack level 3';
| SQL*Loader Fils on Load with ORA-1653 (文档 ID 205296.1) | 转到底部 |
![]() |

Fact(s) |
ora-1652的更多相关文章
- ORA-1652: unable to extend temp segment by 128 in tablespace xxx Troubleshootin
当收到告警信息ORA-01652: unable to extend temp segment by 128 in tablespace xxxx 时,如何Troubleshooting ORA-16 ...
- Oracle数据库的日常使用命令
1. 启动和关闭数据库 sqlplus /nolog; SQL >conn / as sysdba;(上面的两条命令相当于sqlplus ‘/as sysdba’) SQL >st ...
- ORA-12541:TNS:no listener 客户端tnsnames.ora配置,以及服务端listener.ora配置
需求:客户端(192.168.25.1)需要访问服务端(192.168.7.215)的Oracle库ORCL. 步骤一:配置客户端tnsnames.ora 步骤二:配置服务端listener.ora ...
- Oracle的tnsnames.ora配置(PLSQL Developer)
首先打开tnsnames.ora的存放目录,一般为D:\app\Administrator\product\11.2.0\client_1\network\admin,就看安装具体位置了. 步骤阅读 ...
- Oracle RAC客户端tnsnames.ora相关配置及测试
1.Oracle RAC服务端/etc/hosts部分内容如下 2.查看服务端的local_listener和remote_listener参数 3.客户端tnsnames.ora配置参考 3.1 1 ...
- oracle的sqlnet.ora,tnsnames.ora,listener.ora三个配置文件
总结: 1 .三个配置文件都是放在$ORACLE_HOME\network\admin目录下. 2 .sqlnet.ora确定解析方式 3 .listener.ora上设SID_NAME,通常用于JD ...
- oracle客户端安装配置 tnsnames.ora文件
Oracle客户端tnsnames.ora连接配置 Oracle90的在C:\Oracle\ora90\network\ADMIN下面 Oracel10g的在D:\oracle\product\10. ...
- 修改tnsnames.ora文件中配置内容中的连接别名后,连接超时解决办法
1.tnsnames.ora文件中配置内容中的连接别名:由upaydb修改为IP地址 2.连接超时 定位原因: PLSQL登录界面的数据库列表就是读的tnsname.ora中连接的别名,这个文件中连接 ...
- 安装了多个Oracle11g的客户端,哪个客户端的tnsnames.ora会起作用?
如果我们由于需要安装了多个Oracle的client,哪个客户端的tnsnames.ora会起作用呢? 答案是: 在安装好clinent端后,安装程序会把client的bin目录放到path里面,pa ...
- PLSQL登录数据库 报ORA -12154的诡异问题
https://q.cnblogs.com/q/89420/ 现象: 1.机器上先后安装了oracle两个版本的client.在装第一个client后,plsql可以顺利连接数据库a并登录. 2.安装 ...
随机推荐
- ROS Learning-016 Arduino-For-ROS-001 搭建 Arduino 和 ROS 之间相连接的开发环境
Arduino For ROS-001 - 搭建 ROS 和 Arduino 相连接的开发环境 我的Ubuntu系统:Ubuntu 14.04.10 TLS 32位 Arduino的版本:Arduin ...
- android sdk更新源
什么是Android SDK: SDK:(software development kit)软件开发工具包.被软件开发工程师用于为特定的软件包.软件框架.硬件平台.操作系统等建立应用软件的开发工具的集 ...
- JavaPersistenceWithHibernate第二版笔记-第七章-001Mapping a set(@ElementCollection、@CollectionTable、@JoinColumn、)
一.结构 二.代码 1. package org.jpwh.model.collections.setofstrings; import org.jpwh.model.Constants; impor ...
- 数据结构与算法(Java版)_堆
完全二叉树叫做堆. 完全二叉树就是最后一个节点之前不允许有不满的节点,就是不允许有空洞. 可以使用数组来做完全二叉树(堆). 堆分为大顶堆和小顶堆.大顶堆就是根节点上的数字是最大的,小顶堆就是根节点上 ...
- Excel课程学习
1.Excel软件简介 1.1历史上的其他数据处理软件与Microsoft Excel 1977年,苹果公司开发了一款数据处理软件,当时这款软件卖的非常好,用软件的尾巴摇动硬件的狗,当时有人因为这款软 ...
- c/c++头文件中#ifndef/#define/#endif的用法
想必很多人都看过“头文件中用到的 #ifndef/#define/#endif 来防止该头文件被重复引用”.但是是否能理解“被重复引用”是什么意思?头文件被重复引用了,会产生什么后果?是不是所有的头文 ...
- C语言关键字:auto、static、register、const、volatile 、extern 总结 <转>
auto 这个这个关键字用于声明变量的生存期为自动,即将不在任何类.结构.枚举.联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量.这个关键字不怎么多写,因为所有的变量默认就是aut ...
- 利用using和try/finally语句来清理资源
使用非托管资源的类型必须实现IDisposable接口的Dispose()方法来精确的释放系统资源..Net环境的这一规则使得释放资源代码的职责 是类型的使用者,而不是类型或系统.因此,任何时候你在使 ...
- C++新标准:列表初始化
一.列表初始化意义 C++新标准为vector提供了一种新的初始化方式:列表初始化.适用于知道多个成员具体值的情况. 二.列表初始化用法 /*1.空vector<int>*/ vector ...
- mysql存取blob类型数据
参考网址:http://www.cnblogs.com/jway1101/p/5815658.html 首先是建表语句,需要实现将表建立好. CREATE TABLE `blobtest` ( `pr ...
转到底部