修改Oracle redo logfile和datafile的大小
破本空间吃紧,没办法,只好想方设法从牙缝里抠了。。。先看看oracle的日志文件大小:
D:\oracle\ora92\bin>sqlplus "/ as sysdba"
SQL*Plus:>
Copyright (c) 1982, 2002, Oracle Corporation.All rights reserved.
连接到:
Oracle9i Enterprise Edition> With the Partitioning, OLAP and Oracle Data Mining options
JServer> SQL> select * from v$log;
GROUP#THREAD#SEQUENCE#BYTESMEMBERS ARC STATUSFIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
1112 1048576001 NOINACTIVE1953778 21-4月 -09
2111 1048576001 NOINACTIVE1858693 15-4月 -09
3113 1048576001 NOCURRENT1877565 17-4月 -09
每个日志文件有100M,决定缩小到50M。先删除一个日志组:
SQL>>
alter database drop logfile group 3
*
ERROR 位于第 1 行:
ORA-01623: 日志3是线程1的当前日志 - 无法删除
ORA-00312: 联机日志 3 线程 1: 'D:\ORACLE\ORADATA\ORA92\REDO03.LOG'
手动切换一下日志,让group 3不再处于CURRENT状态:
SQL>>
系统已更改。
SQL> select * from v$log;
GROUP#THREAD#SEQUENCE#BYTESMEMBERS ARC STATUSFIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
1112 1048576001 NOINACTIVE1953778 21-4月 -09
2111 1048576001 NOCURRENT1858693 15-4月 -09
3113 1048576001 NOACTIVE1877565 17-4月 -09
SQL>>
alter database drop logfile group 3
*
ERROR 位于第 1 行:
ORA-01624: 线程1的紧急恢复需要日志3
ORA-00312: 联机日志 3 线程 1: 'D:\ORACLE\ORADATA\ORA92\REDO03.LOG'
ACTIVE状态还不能删除,因为此时日志组3里的数据在数据库恢复时还需要被使用。于是手动执行一下检查点,让group 3处于INACTIVE状态:
SQL>>
系统已更改。
SQL> select * from v$log;
GROUP#THREAD#SEQUENCE#BYTESMEMBERS ARC STATUSFIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
1112 1048576001 NOINACTIVE1953778 21-4月 -09
2111 1048576001 NOCURRENT1858693 15-4月 -09
3113 1048576001 NOINACTIVE1877565 17-4月 –09
现在可以删除了:
SQL>>
数据库已更改。
SQL>>
alter database add logfile group 3 ('D:\ORACLE\ORADATA\ORA92\REDO03.LOG')> *
ERROR 位于第 1 行:
ORA-00301: 添加日志文件 'D:\ORACLE\ORADATA\ORA92\REDO03.LOG' 时出错 -无法创建文件
ORA-27038: skgfrcre: 文件存在
OSD-04010: 指定了选项, 但文件已经存在
日志文件REDO03.LOG只是在数据库中删除引用了,但是没有在操作系统中真正删除,可以添加 reuse 关键字来让oracle重新建立指定大小的文件:
SQL>>
数据库已更改。
SQL> select * from v$log;
GROUP#THREAD#SEQUENCE#BYTESMEMBERS ARC STATUSFIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
1112 1048576001 NOINACTIVE1953778 21-4月 -09
2111 1048576001 NOCURRENT1858693 15-4月 -09
3113524288001 YES UNUSED0
OK了,日志组3里的日志文件已经减小到50M啦。再把日志组1和2的也缩小到50M,这样就抠出来150M空间了,哈哈哈。。。
恩,接下来再看看数据文件能不能也瘦身一下:
SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_free_space
2group by tablespace_name;
TABLESPACE_NAMESUM(BYTES)/1024/1024
--------------------------------------------------
CAMAR49.125
CWMLITE10.625
DRSYS10.3125
DSS_PDATA_DATA2.4375
DSS_PMART_DATA335.4375
DSS_PTEMP_DATA48.5625
EXAMPLE.5
INDX24.9375
ODM10.625
SYSTEM1.375
TEST49.6875
TABLESPACE_NAMESUM(BYTES)/1024/1024
--------------------------------------------------
TOOLS3.9375
UNDOTBS1189.75
USERS24.9375
XDB.1875
已选择15行。
SQL> col file_name for a45
SQL> select file_name,tablespace_name,sum(bytes)/1024/1024 filesize
2from dba_data_files
3group by file_name,tablespace_name;
FILE_NAMETABLESPACE_NAMEFILESIZE
---------------------------------------------------------------------------------
D:\ORACLE\ORADATA\ORA92\TEST.ORATEST50
D:\ORACLE\ORADATA\ORA92\CAMAR.ORACAMAR50
D:\ORACLE\ORADATA\ORA92\ODM01.DBFODM20
D:\ORACLE\ORADATA\ORA92\XDB01.DBFXDB38.125
D:\ORACLE\ORADATA\ORA92\INDX01.DBFINDX25
D:\ORACLE\ORADATA\ORA92\DRSYS01.DBFDRSYS20
D:\ORACLE\ORADATA\ORA92\TOOLS01.DBFTOOLS10
D:\ORACLE\ORADATA\ORA92\USERS01.DBFUSERS25
D:\ORACLE\ORADATA\ORA92\SYSTEM01.DBFSYSTEM400
D:\ORACLE\ORADATA\ORA92\CWMLITE01.DBFCWMLITE20
D:\ORACLE\ORADATA\ORA92\EXAMPLE01.DBFEXAMPLE149.375
FILE_NAMETABLESPACE_NAMEFILESIZE
----------------------------------------------------------------------------------
D:\ORACLE\ORADATA\ORA92\UNDOTBS01.DBFUNDOTBS1200
D:\ORACLE\ORADATA\ORA92\DSS_PDATA_DATA.ORADSS_PDATA_DATA50
D:\ORACLE\ORADATA\ORA92\DSS_PMART_DATA.ORADSS_PMART_DATA500
D:\ORACLE\ORADATA\ORA92\DSS_PTEMP_DATA.ORADSS_PTEMP_DATA50
已选择15行。
看来就DSS_PMART_DATA表空间浪费最严重了,分配了500M空间,但是其中有300多M没有使用:
SQL>>
数据库已更改。
SQL> select tablespace_name,sum(bytes)/1024/1024 filesize from dba_data_files
2group by tablespace_name;
TABLESPACE_NAMEFILESIZE
------------------------------
CAMAR50
CWMLITE20
DRSYS20
DSS_PDATA_DATA50
DSS_PMART_DATA200
DSS_PTEMP_DATA50
EXAMPLE149.375
INDX25
ODM20
SYSTEM400
TEST50
TABLESPACE_NAMEFILESIZE
------------------------------
TOOLS10
UNDOTBS1200
USERS25
XDB38.125
已选择15行。
哈哈,又挤出来了300M空间。
不错不错,看来清理一下还是小有成效滴。。。
最后再记录一下修改会话中oracle日期显示格式的方法:
SQL> select sysdate from dual;
SYSDATE
----------
22-9月 -09
SQL>>
会话已更改。
SQL> select sysdate from dual;
SYSDATE
-------------------
2009-09-22 12:49:34
页:
[1]