故障问题:
这边有个平台的数据库服务器空间快满了(D盘),后来新增了一个盘符(E盘),但是数据库大小还是在原来的盘符里增加,现在原来的盘符满了,数据库连接不上
处理思路:
1.清理D磁盘的trc文件
2.所有表空间增加数据文件,临时文件到E盘,并启用自动扩展
3.关闭所有放在原D盘数据库文件的自动扩展
4.修改归档路径到E盘
处理过程:
1.清理D磁盘的trc文件
登录系统检查:
系统运行了4年多,没人干预过。D盘空间满了,进入oracle的trace目录清理垃圾文件,windows图形化操作基本卡死,半天无反应,文件数超过3千万,大于300多G
如果图形卡住,建议用命令方式删除:打开管理员cmd窗口操作
d:
cd trace路径
DEL /F /S /Q *
删除操作等待执行完毕即可。继续处理其它问题。数据库正常运行。
2.所有表空间增加数据文件,临时文件到E盘,并启用自动扩展
检查表空间占用:
set line 132
set wrap off
select t.*
from (SELECT D.TABLESPACE_NAME,
SPACE "SUM_SPACE(M)",
BLOCKS SUM_BLOCKS,
SPACE - NVL(FREE_SPACE, 0) "USED_SPACE(M)",
ROUND((1 - NVL(FREE_SPACE, 0) / SPACE) * 100, 2) "USED_RATE(%)",
FREE_SPACE "FREE_SPACE(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) SPACE,
SUM(BLOCKS) BLOCKS
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) D,
(SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) FREE_SPACE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
UNION ALL --if have tempfile
SELECT D.TABLESPACE_NAME,
SPACE "SUM_SPACE(M)",
BLOCKS SUM_BLOCKS,
USED_SPACE "USED_SPACE(M)",
ROUND(NVL(USED_SPACE, 0) / SPACE * 100, 2) "USED_RATE(%)",
SPACE - USED_SPACE "FREE_SPACE(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) SPACE,
SUM(BLOCKS) BLOCKS
FROM DBA_TEMP_FILES
GROUP BY TABLESPACE_NAME) D,
(SELECT TABLESPACE,
ROUND(SUM(BLOCKS * 8192) / (1024 * 1024), 2) USED_SPACE
FROM V$SORT_USAGE
GROUP BY TABLESPACE) F
WHERE D.TABLESPACE_NAME = F.TABLESPACE(+)) t
order by "USED_RATE(%)" desc;
检查表空间和数据文件对应关系:
col file_name for a60
col file_id for 999
set line 150
col tablespace_name for a30
select tablespace_name,file_id,autoextensible,file_name,BYTES/1024/1024/1024 from dba_data_files order by tablespace_name,file_name;
select tablespace_name,file_id,autoextensible,file_name,BYTES/1024/1024/1024 from dba_data_files where file_name like 'D:%' order by tablespace_name,file_name;
select tablespace_name,file_id,autoextensible,file_name,BYTES/1024/1024/1024 from dba_data_files where file_name like 'E:%' order by tablespace_name,file_name;
表空间增加数据文件到E盘
alter tablespace xxx add datafile 'e:oradataxxxxxx01.dbf' size 1024M autoextend on next 10M;
alter tablespace xxx add tempfile 'e:oradataxxxtemp_xxx01.dbf' size 1024M autoextend on next 10M;
添加足够文件。
3.关闭所有放在原D盘数据库文件的自动扩展
参考命令:
关闭文件自动扩展
alter database datafile 8 autoextend off;
alter database datafile 9 autoextend off;
alter database datafile 10 autoextend off;
alter database datafile 11 autoextend off;
alter database datafile 12 autoextend off;
col file_name for a60
col file_id for 999
set line 150
select file_id,file_name,autoextensible from dba_temp_files;
alter database tempfile 1 autoextend off;
验证是否开启关闭自动扩展
select tablespace_name,file_id,autoextendsible,file_name,BYTES/1024/1024/1024 from dba_data_files where file_name like 'D:%' order by tablespace_name,file_name;
select tablespace_name,file_id,autoextendsible,file_name,BYTES/1024/1024/1024 from dba_data_files where file_name like 'E:%' order by tablespace_name,file_name;
4.修改归档路径到E盘:
archive log list;
alter system set log_archive_dest_1='location=E:archivelog';
archive log list;
alter system switch logfile;
检查路径是否生成
小结
平常应注意磁盘空间巡检,可以准备bat脚本,自动定时删除垃圾文件,避免空间异常增长过多。