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