作者:容易 2013-04-10 11:18:11
temp表空间切换
遇到的问题 磁盘空间不足,发现默认temp表空间数据文件太大,决定将默认temp表空间进行切换
1)创建temp表空间
create temporary tablespace temp01 tempfile '/u02/oradata/syslog/temp01_01.dbf'
size 1024m autoextend on next 256m maxsize 4g;
2)查看用户默认临时表空间
select temporary_tablespace from dba_users;
3)修改默认temp表空间
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE "TEMP01" #备注 表空间名必须大写,否则会提示找不到。
操作完成后,重新执行第二步操作,查看用户默认临时表空间是否正常切换
查看旧的临时表空间是否还在被使用,如果在被使用,请耐心等待。
SELECT * FROM v$sort_usage where tablespace='TEMP'
4)删除旧的临时表空间和数据文件
drop tablespace temp including contents and datafiles;
5)查看磁盘空间释放情况
df -h /dev/sda12
/dev/sda12 44G 38G 3.7G 92% /u02
6)磁盘空间未正常释放的操作
通过lsof命令找出相应的进程,如下第一行记录(deleted)表示该文件已经删除,此时必须将该进程kill才能真正释放空间
[root@bidb bi]# lsof |grep temp
进程PID 文件名
oracle 25147 oracle 56u REG 8,12 6843015168 1867778 /u02/oradata/bi/temp01.dbf (deleted)
oracle 25147 oracle 57u REG 8,12 104865792 2146321 /u02/oradata/bi/iastemp.dbf
oracle 25147 oracle 58u REG 8,12 104865792 2146346 /u02/oradata/bi/BI_iastemp.dbf
oracle 25147 oracle 59u REG 8,12 104865792 2883586 /u02/oradata/bi/DEV_biplatformtemp.dbf
oracle 25147 oracle 60u REG 8,12 104865792 2883587 /u02/oradata/bi/DEV_iastemp.dbf
oracle 25188 oracle 17u REG 8,12 104865792 2146321 /u02/oradata/bi/iastemp.dbf
oracle 25188 oracle 18u REG 8,12 104865792 2146346 /u02/oradata/bi/BI_iastemp.dbf
oracle 25188 oracle 19u REG 8,12 104865792 2883586 /u02/oradata/bi/DEV_biplatformtemp.dbf
oracle 25188 oracle 20u REG 8,12 104865792 2883587 /u02/oradata/bi/DEV_iastemp.dbf
oracle 25188 oracle 22u REG 8,12 104865792 2146309 /u02/oradata/bi/temp01_01.dbf
7)删除进程后,重新查看磁盘空间
[root@bidb bi]# df -h /dev/sda12
Filesystem Size Used Avail Use% Mounted on
/dev/sda12 44G 32G 11G 76% /u02
One Response