1.root登陆后切换oracle用户

[root@localhost]# su - oracle

2.执行 sqlplus / as sysdba进入oracle数据库

[oracle@localhost]# sqlplus / as sysdba

3.执行 select * from V$FLASH_RECOVERY_AREA_USAGE;命令查看日志大小

SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;

查看ARCHIVELOG的百分比,超过80%就需要清理了

4.归档日志目录查询

SQL> show parameter db_recovery_file_dest;

目录下面以每天日期为单位的文件夹,只保留近两天的文件夹,其余日期目录都删除

5.退出oracle数据库

SQL> quit;

6.执行 rman target sys/pass进入RMAN

[oracle@localhost]# rman target sys/pass

7.检查一些无用的archivelog

RMAN> crosscheck archivelog all;

8.删除过期的归档

RMAN> delete expired archivelog all;

或者

RMAN> delete archivelog until time "sysdate-1"

期间选择yes

9.退出RMAN

RMAN>quit;

10.重复步骤2,3查看清理后的归档日志大小,没问题就可以执行步骤5退出

其他命令

如果使用fast recovery area存放归档日志,需要注意该区域有大小限制,建议将大小调大

alter system set db_recovery_file_dest_size=10G SCOPE=BOTH;

如果使用本地路径存放归档日志,需要将db_recovery_file_dest参数置空,然后设置log_archive_dest参数

alter system set db_recovery_file_dest='';
alter system set log_archive_dest='/data/oracle/archive';

如果archive log模式下不能正常startup,则先恢复成noarchive log,startup成功后,再shutdown;
shutdown immediate;
startup mount;
alter database noarchivelog;
alter database open;
shutdown immediate;

再次startup以archive log模式
shutdown immediate;
startup mount;
show parameter log_archive_dest;
alter database archivelog;
archive log list;
alter database open;

参考链接http://blog.itpub.net/31394774/viewspace-2285656/
https://blog.csdn.net/zhao923822745/article/details/78813642

更多推荐