今天用户说归档目录的已使用百分比接近100%了,要求把归档删掉,释放文件系统空间。
查看归档目录:
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /ora_arch/archive_log
Oldest online log sequence 25195
Next log sequence to archive 25202
Current log sequence 25202
然后df命令看了下,确实已经满了。
由于客户也比较急,就直接进归档目录rm –rf * 删除了所有的归档。(这样做有一定的风险,建议立即做全库备份)。
另外,需要注意的是,rm删除归档日志文件是我自己一厢情愿的事儿,Oracle可不知道的。所以就要想办法通知Oracle,告诉它我已经先斩后奏地删除了某某归档文件~~~,呵呵,这是玩笑,其实是这样,在Oracle的控制文件中记录了每个归档日志文件的相关信息,而当我们在OS系统层面对这些归档日志文件动手脚的话(如rm),实际上在Oracle的controlfile中仍然存在着这些归档日志文件的记录,即Oracle依然认为这些文件还是完好的存在着呢。
因此我们需要执行crosscheck命令来检查存在于控制文件中的记录信息与实际物理存在的归档日志文件信息的差别,命令:
RMAN> crosscheck archivelog all;
using target database controlfile instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=162 devtype=DISK
validation succeeded for archived log
archive log filename=/ora_arch/archive_log/1_25197.dbf recid=25195 stamp=730806579
.. .. .. .. ..省略
Crosschecked 6 objects
检查完之后,就需要同步一下归档目录中实际存在的文档文件相关信息与控制文件中的记录信息:
RMAN> delete expired archivelog all;
至此,我们才算完整的将归档文件彻底删除。
[@more@]
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23219371/viewspace-1039011/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23219371/viewspace-1039011/