转贴:from ORACLE技术中国用户讨论组
如何处理Oracle中TEMP表空间满的问题?
正常来说,在完成Select语句、create index等一些使用TEMP表空间的排序操作后,Oracle是会自动释放掉临时段a的。但有些有侯我们则会遇到临时段没有被释放,TEMP表空间几乎满的状况,甚至是我们重启了数据库仍没有解决问题。这个问题在论坛中也常被网友问到,下面我总结一下,给出几种处理方法。
法一、重启库
库重启时,Smon进程会完成临时段释放,TEMP表空间的清理操作,不过很多的时侯我们的库是不允许down的,所以这种方法缺少了一点的应用机会,不过这种方法还是很好用的。
法二、Metalink给出的一个方法
修改一下TEMP表空间的storage参数,让Smon进程观注一下临时段,从而达到清理和TEMP表空间的目的。
SQL>;alter tablespace temp increase 1;
SQL>;alter tablespace temp increase 0;
法三、我常用的一个方法,具体内容如下:
1、 使用如下语句a查看一下认谁在用临时段
SELECT username,
sid,
serial#,
sql_address,
machine,
program,
tablespace,
segtype,
contents
FROM v$session se,
v$sort_usage su
WHERE se.saddr=su.session_addr
2、 那些正在使用临时段的进程
SQL>;Alter system kill session 'sid,serial#';
3、把TEMP表空间回缩一下
SQL>;Alter tablespace TEMP coalesce
法四、使用诊断事件的一种方法,也是被我认为是“杀手锏”的一种方法
1、 确定TEMP表空间的ts#
SQL>;select ts#, name from sys.ts$
TS# NAME
-----------------------
0 SYSYEM
1 RBS
2 USERS
3* TEMP
4 TOOLS
5 INDX
6 DRSYS
2、 执行清理操作
SQL>;alter session set events 'immediate trace name DROP_SEGMENTS level 4'
说明:
temp表空间的TS# 为 3*, So TS#+ 1= 4
其它:
1、 出现如上问题的原因我认为可能是由于大的排序超出了TEMP表空间的空间允许范围引起的。也可能包含着其它的异常的因素。
2、 观注TEMP等这些空间的状态是Dba日常职责之一,我们可以通过Toad、Object Browser等这些工具办到,也可以用如下的语句:
SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
D.TOT_GROOTTE_MB "表空间大小(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,
2),
'990.99') "使用比",
F.TOTAL_BYTES "空闲空间(M)",
F.MAX_BYTES "最大块(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 4 DESC
分享到:
相关推荐
当遇到"Oracle temp表空间不足"的问题时,这通常意味着数据库运行过程中产生的临时数据超过了现有Temp表空间的容量。解决这个问题需要采取一系列策略和步骤,以下是一些详细的方法: 1. **扩展Temp表空间大小**: ...
Oracle 临时表空间满是指数据库中的临时表空间达到最大容量,无法继续存储临时数据,影响数据库的正常运行。本文将详细介绍解决 Oracle 临时表空间满的问题的步骤。 第一步:查看当前数据库的默认临时表空间 在解决...
4. Oracle临时表空间满的问题:当临时表空间的磁盘空间被全部占用后,可能会出现错误消息,例如“ORA-1652: unable to extend temp segment by %s in tablespace %s”。这会导致用户无法完成如排序、并行查询等操作...
标题与描述概述的知识点主要涉及Oracle数据库中临时表空间(TEMP表空间)的管理与优化,特别是当TEMP表空间占用过多硬盘空间时的处理方法。本文将深入解析这一过程,帮助读者理解并掌握释放TEMP表空间所占用硬盘空间...
其中,`TEMPORARY TABLESPACE` 指定创建的是临时表空间,`test_temp` 是表空间的名称,`TEMPFILE` 指定了表空间的文件路径和名称,`SIZE` 指定了表空间的初始大小,`AUTOEXTEND ON` 指定了表空间的自动扩展功能,`...
首先,针对临时表空间满的情况,有三种主要的处理方法: 1. **增加临时文件**:这一步骤用于扩展临时表空间的容量。不过,不推荐设置临时文件为自增长,因为这可能导致磁盘空间被过度消耗。例如,可以使用以下SQL...
在Oracle数据库管理过程中,可能会遇到临时表空间占用过多磁盘空间的问题,尤其是对于不允许随意重启的正式数据库服务器而言,处理这类问题更加棘手。本文将详细介绍如何在不重启数据库的情况下解决Oracle临时表空间...
在Oracle数据库环境中,临时表空间是用来...通过以上方法,可以有效地管理和解决Oracle数据库中临时表空间过大的问题。记得在调整参数或执行脚本时,务必在测试环境先进行验证,确保改动不会影响到生产系统的稳定性。
2.临时性表空间,如temp。只用于保存系统中短期活动的数据 3.撤销表空间,如undo。用来帮助回退未提交的事务数据 创建表空间 通过create tablespace 命令创建表空间,如: create tablespace test datafile ‘d:\...
### ORACLE常用命令总结 ...这些命令涵盖了Oracle数据库中日志管理和表空间管理的基本方面,对于日常的数据库运维和支持来说非常实用。熟练掌握这些命令能够帮助DBA更有效地管理和维护Oracle数据库系统。
Oracle数据库在日常操作中可能会遇到各种错误,这些错误通常是由于资源不足、配置不当或系统问题导致的。本文将深入解析两个常见的Oracle错误及其解决方案:ORA-01650和ORA-01652,并提供相关的排查和解决策略。 **...
- **表空间满**:当某个表空间的可用空间不足时,会导致新数据无法写入。解决方法包括扩展现有数据文件的大小、添加新的数据文件到表空间中或者清理不必要的数据。 - **数据碎片化**:长时间的数据库操作可能导致...
`DATAFILE`指定了数据文件的位置和大小,`AUTOEXTEND ON`表示当表空间满时,文件自动扩展。 3. **PROFILE管理**: PROFILE是用来控制用户资源使用的工具,包括CPU时间、I/O使用、空闲时间、连接时间、并发会话...
表空间是Oracle数据库中数据存储的基本单位之一,它由一个或多个数据文件组成,并且每个表空间都有自己的特性与限制。当无法通过Oracle的图形化用户界面获取表空间信息时,可以使用SQL语句来查询表空间的详细状态。 ...
在Oracle数据库管理过程中,经常需要查看各个表空间的使用情况,以便及时发现并处理表空间将满的问题。以下是一个查询表空间使用率的SQL示例: ```sql SELECT d.tablespace_name, SPACE "SUM_SPACE(M)", blocks sum...
这里,`eads.dbf`是数据文件的名称,`100M`是初始大小,`AUTOEXTEND ON NEXT 32M`表示当表空间满时自动扩展,每次扩展32M,最大可扩展至2048M。`EXTENT MANAGEMENT LOCAL`表明使用本地管理模式来管理扩展。 对于...
从给定的文件信息中,我们可以总结出一系列与Oracle数据库管理相关的知识点,这些知识点涵盖了从基本的表空间和表管理,到数据复制、用户管理、数据库模板选择、OMS使用,再到物理文件类型、日志文件工作模式、序列...