请教怎么清空TEMP表空间

请教怎么清空TEMP表空间,第1张

一般情况下,在完成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 sesaddr=susession_addr

2、那些正在使用临时段的进程SQL>Alter system kill session 'sid,serial#'; 3、把TEMP表空间回缩一下SQL>Alter tablespace TEMP coalesce;

方法四、使用诊断事件的一种方法,也是被我认为是“杀手锏”的一种方法 1、 确定TEMP表空间的ts#SQL>select ts#, name from systs$ ; 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(FTABLESPACE_NAME) "表空间名", DTOT_GROOTTE_MB "表空间大小(M)", DTOT_GROOTTE_MB - FTOTAL_BYTES "已使用空间(M)", TO_CHAR(ROUND((DTOT_GROOTTE_MB - FTOTAL_BYTES) / DTOT_GROOTTE_MB 100, 2), '99099') "使用比", FTOTAL_BYTES "空闲空间(M)", FMAX_BYTES "最大块(M)" FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 1024), 2) TOTAL_BYTES, ROUND(MAX(BYTES) / (1024 1024), 2) MAX_BYTES FROM SYSDBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, (SELECT DDTABLESPACE_NAME, ROUND(SUM(DDBYTES) / (1024 1024), 2) TOT_GROOTTE_MB FROM SYSDBA_DATA_FILES DD GROUP BY DDTABLESPACE_NAME) D WHERE DTABLESPACE_NAME = FTABLESPACE_NAME ORDER BY 4 DESC;(责任编辑:卢兆林)

首先看数据库文件所在硬盘的空间足不足,可以扩容解决这个问题;

第二,什么数据库MS-SQL的话可以删除日志文件,如果是ORACEL的话看看表空间足不足,不足的话扩表空间。

你的问题太笼统了。

导出数据,常用的是exp导出,eg: exp username/password@ORACLE_SID File='存放路径' log=‘路径’ STATISTICS=NONE;是在命令行直接输入的,这是将数据库中的某个用户的数据导出

删除表空间:drop tablespace tablespace_name including contents and datafiles;将表空间连带数据文件一起删除。

表空间是个逻辑结构,可以理解为一个数据文件的集合

登录数据库了在SQl提示符下select tablespace_name from dba_tablesqpces;可以看到表空间的名字,表空间是逻辑结果,在物理存储上是看不到表空间的,只能看到数据文件,数据文件的位置:select name from v$datafile可以看到存放的路径

可用语句来删除:

drop tablespace 表空间名;

表空间:

表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表, 所以称作表空间。

首先查看temp是不是某些用户的默认表空间SELECT USERNAME,TEMPORARY_TABLESPACE FROM DBA_USERS;如果有用户的默认临时表空间是temp的话,建议进行更改alter user xxx temporary tablespace tempdefault;设置tempdefault为默认临时表空间alter database default temporary tablespace tempdefault;然后用你列出来的语句删除即可drop tablespace temp including contents and datafile; 即便丢失了所有的临时表空间,只要不是数据库当中用到了order by、子查询、group by、distinct等需要消耗临时表空间的语句(而且要比较大才行,小的话就直接用pga的SORT_AREA区了),那么也不会对业务造成错误导致中断,发现问题之后只需要新建一个临时表空间就可以了。你要是了解备份恢复的话,实际上在进行备份的时候临时表空间都不会进行备份,而只是有一个创建临时表空间的语句而已。

以上就是关于请教怎么清空TEMP表空间全部的内容,包括:请教怎么清空TEMP表空间、数据库满了怎么删除、Oracle数据库怎么导出怎么删除表空间表空间是什么在哪里找到表空间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9768535.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存