一、新建UNDO表空间,替换原来的UNDO表空间
查看所有表空间名字
select name from v$tablespace;
1.创建一个新的小的undo表空间
执行
CREATE UNDO TABLESPACE UNDOTBS01 DATAFILE 'D:\app\dbtemp\UNDOTBS01.DBF' SIZE 100M REUSE AUTOEXTEND ON;
其中 ‘D:\app\dbtemp\UNDOTBS01.DBF’ 为表空间文件想要存储的位置,100M 表示新的表空间的初始大小。
2.设置新的表空间为系统的Undo表空间
执行
ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS01;
3.重启数据库(重启数据库服务)
4.删除旧的Undo表空间
依旧使用sys用户登录,执行
DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES;
原文件UNDOTBS01.DBF会直接被删除
二、新建TEMP表空间,替换原来的TEMP表空间
1、首先查看当前的数据库默认表空间:
select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
确认当前的临时表空间为TEMP
2.创建新的临时表空间temp01
create temporary tablespace temp01 tempfile 'D:\app\dbtemp\temp01.dbf' size 512M;
3.把新建的临时表空间换成数据库的默认临时表空间
alter database default temporary tablespace temp01;
4.确认目前数据库的默认临时表空间
select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
5.在删除temp临时表空间之前,查看temp临时表空间正在运行的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掉:
alter system kill session '8,2';
(8为SID、2为serial)
5.删除temp临时表空间(文件太大删除不了可手动删除,前提是以上操作都成功)
drop tablespace temp including contents and datafiles;
alter database tempfile 'D:\app\db\TEMP01.DBF' drop;
6.可以重复以上操作把temp再恢复到原来位置
7.重启数据库服务