ORACLE删除归档日志——基于linux环境下
前一阵子遇到数据库归档日志满了的情况,一时不知道怎么处理。当然谁都知道,满了就删除就是了。事实上删除归档日志这件事,没那么简单,当然也没那么难。
安装ORACLE数据库时候,如果归档打开,就会产生归档日志。ORACLE归档日志的作用很大,一般生产库都会开归档。恢复数据库、更新standby数据库、使用LogMiner提取历史日志相关信息等等,都要靠归档日志。当然在我看来,最重要的还是用于恢复数据库。如何知道ORACLE数据库有没有打开归档呢?这个简单,一条命令就可以查看到:SQL>
ARCHIVE LOG LIST
(登录到数据库SQL*PLUS环境下)或者SQL>SELECT
log_mode FROM v$database;查到的结果ARCHIVELOG(ARCHIVE
MODE)呢就是已经处于归档模式下,NOARCHIVELOG(NO ARCHIVE
MODE)呢就是没有启用归档。
数据库在创建之后,需要在两个状态直接切换也很简单。SQL>ALTER
DATABASE NOARCHIVELOG;或者SQL>ALTER DATABASE
ARCHIVELOG;当然切换模式的时候,要先关闭数据库,使用SHUTDOWN
IMMEDIATE;然后启动到MOUNT状态(STARTUP
MOUNT);然就可以切换归档模式了。之后要把数据库切换到OPEN状态(STARTUP OPEN);这个时候要对数据库进行一个完整的备份(FULL
BACKUP)。
a.一致性关闭数据库(shutdown [immediate | transactional
|normal])
b.启动到mount阶段(startup mount)
c.切换到(非)归档模式(alter database
noarchivelog /archivelog )
d.切换到open阶段(alter database open)
e.对数据做一个完整备份(full backup)
说了那么多,还是没有说到归档日志的删除。那么现在开始讲,我一开始是不知道有这么一回事的,都是一步一步查资料、上百度摸索的。这个过程我发现,网上一些东西文不对题的很多,太高深不适合我的也更多。牛人那么多,写得都挺好,我自己试出来才是我自己的。其实我也知道原理很简单,结果很明显,删了就完事。我开始想着找到归档日志的位置,然后手动删除不就完事了嘛。最后也是查资料才知道,完全不是那么回事,你删除了你知道,但是oracle自己不知道,存储还是被占用呢。
删除归档日志用RMAN就可以了。登录:RMAN TARGET / ;然后一条命令:
delete archivelog until time
‘sysdate-30’--保留一个月的。当然你也可以保留一个礼拜的,‘sysdate-7’就是了,这个看你自己高兴。
下面是一些探索记录:
SQL> SHOW PARAMETER
ARCHIVE
--查看归档路径是否已设置,为空值表示未设置
http://s15/mw690/81538dc4gx6CEmvg5VYce&690
http://s5/bmiddle/81538dc4gx6CEmvGHn624&690
+DATA,这是ASM固有的文件目录格式,说明数据库使用了ASM;
下面一条命令,就是看到数据库在归档模式下运行,自动归档也开了;
http://s10/mw690/81538dc4gx6CEmvJZZTb9&690
http://s6/mw690/81538dc4gx6CEmvPAqx95&690还可以登录到ASM下查看归档空间使用情况,其实不用登录到ASM也可以查看到的。
http://s15/mw690/81538dc4gx6CEmw1JIa9e&690
http://s8/mw690/81538dc4gx6CEmw57NB37&690
关于ORACLE归档日志,其实还是有很多东西值得深究的,先记录到这里吧。我想以后会遇到更多的问题,也会积累更多解决问题的经验。如此甚好,哈哈。
(文
2013/9/14)
加载中,请稍候......