【转】oracle的临时表空间写满磁盘空间解决改问题的步骤

简介: 文章转自:http://www.uml.org.cn/sjjm/201105124.asp 在检查aix5.3系统的磁盘空间时,发现临时表空间所在临时数据文件已经达到20G,已经占用了100%。 因为是正式数据库服务器,不能随便重启数据库。

文章转自:http://www.uml.org.cn/sjjm/201105124.asp

在检查aix5.3系统的磁盘空间时,发现临时表空间所在临时数据文件已经达到20G,已经占用了100%。

因为是正式数据库服务器,不能随便重启数据库。

以下的操作是用数据库的sys超级用户操作

刚开始打算把临时表空间的数据文件重新缩小就好了

执行:

SQL> alter database tempfile

2 '/oracle/oms/oradata/temp/temp01.dbf' resize 10240M;

数据库报错,重新设置的空间大小不能满足需要。

看来需要重新建立新的临时表空间替换当前的表空间了

1、首先查看当前的数据库默认表空间:

SQL>select * from database_properties

where property_name='DEFAULT_TEMP_TABLESPACE';

确认当前的临时表空间为TEMP

2、查看目前临时表空间的大小:

SQL>select file_name,tablespace_name,bytes/1024/1024 "MB",autoextensible from dba_temp_files;

3、创建新的临时表空间:(先在其他的磁盘空间借用一下空间)

SQL> create temporary tablespace temp02

2 tempfile '/oracle/oms/oradata/undo/temp02.dbf'

3 size 512M;

4、把新建的临时表空间却换成数据库的默认临时表空间

SQL> alter database default temporary tablespace temp02;

5、确认目前数据库的默认临时表空间

SQL>select * from database_properties

where property_name='DEFAULT_TEMP_TABLESPACE';

确认temp02为当前的数据库默认表空间

6、在删除temp临时表空间之前,先把运行在temp临时表空间的sql语句kill掉,这样的sql语句多为排序的语句

select se.username,se.sid,se.serial#,su.extents,su.blocks*to_number(rtrim(p.value))as Space,
tablespace,segtype,sql_text
from v$sort_usage su,v$parameter p,v$session se,v$sql s
where p.name='db_block_size' and su.session_addr=se.saddr and s.hash_value=su.sqlhash
and s.address=su.sqladdr
order by se.username,se.sid;

查询出来之后,kill掉这些sql语句:

SQL>alter system kill session '524,778'; (假如某一条运行的sql语句的SID为524,serial#为778)

确认在temp临时表空间中没有运行的sql语句之后,则可以删除temp临时表空间数据文件了

7、删除temp临时表空间

SQL> drop tablespace temp including contents and datafiles;

这样很快就可以删除了临时表空间的数据文件

8、现在temp02临时表空间占据了别人的磁盘空间,需要重新把临时表空间建立在原来的位置,重新建立temp临时表空间

SQL> create temporary tablespace temp

2 tempfile '/oracle/oms/oradata/temp/temp01.dbf'

3 size 512M autoextend on maxsize 15G;

新建一个512M的自动扩展临时表空间,最大的扩展为15G。

查看新建的temp临时表空间是否正确:

SQL>select file_name,tablespace_name,bytes/1024/1024,maxbytes/1024/1024,autoextensible from dba_temp_files;

9、把新建的temp临时表空间却换成数据库的默认临时表空间

SQL> alter database default temporary tablespace temp;

10、确认目前数据库的默认临时表空间

SQL>select * from database_properties

where property_name='DEFAULT_TEMP_TABLESPACE';

确认temp为当前的数据库默认表空间

11、目前把原来的temp临时表空间变成了512M,把剩余的磁盘空间空了出来,temp02临时表空间就没有用了,删除temp02临时表空间

SQL> drop tablespace temp02 including contents and datafiles;

 

相关文章
|
6月前
|
存储 Oracle NoSQL
Oracle 表空间、数据文件、schema的关系
Oracle 表空间、数据文件、schema的关系
185 2
|
SQL 监控 Oracle
Oracle创建和管理表空间
Oracle创建和管理表空间
94 1
|
Oracle 关系型数据库 数据库
9-4 Oracle管理表空间和数据文件
9-4 Oracle管理表空间和数据文件
119 0
|
3月前
|
SQL Oracle 关系型数据库
"揭秘!一键解锁Oracle日志清理魔法,让海量归档日志无处遁形,守护数据库健康,告别磁盘空间告急噩梦!"
【8月更文挑战第9天】随着Oracle数据库在企业应用中的普及,归档日志管理对保持数据库健康至关重要。归档日志记录所有更改,对数据恢复极为重要,但也可能迅速占用大量磁盘空间影响性能。利用Oracle提供的RMAN工具,可通过编写Shell脚本来自动清理归档日志。脚本包括设置环境变量、连接数据库、检查和删除指定时间前的日志,并记录执行情况。通过Cron作业定时运行脚本,可有效管理日志文件,确保数据库稳定运行。
93 7
|
3月前
|
Oracle 关系型数据库 数据库
[oracle]拆分多用户的公共表空间
[oracle]拆分多用户的公共表空间
|
4月前
|
存储 监控 Oracle
关系型数据库Oracle空间不足
【7月更文挑战第15天】
56 6
|
4月前
|
存储 Oracle 关系型数据库
关系型数据库Oracle 空间不足
【7月更文挑战第16天】
51 2
|
5月前
|
Oracle 关系型数据库 数据库
Oracle 11G数据库安装步骤及截图操作2
Oracle 11G数据库安装步骤及截图操作
61 0
|
5月前
|
Oracle 安全 关系型数据库
Oracle 11G数据库安装步骤及截图操作1
Oracle 11G数据库安装步骤及截图操作
105 0
|
6月前
|
存储 数据库
发现oracle10gSYSAUX空间没有了进行处理
发现oracle10gSYSAUX空间没有了进行处理
39 0