开启归档日志命令
1 关闭数据库
SQL> shutdown immediate
2 数据库以挂载模式打开
SQL> startup mount
3 使数据库处于归档模式
SQL> alter database archivelog;
4 打开数据库
SQL> alter database open;
5 查看归档日志状态
SQL> archive log list;
建议关闭数据库前杀掉连接的进程,关库会快
ps -ef |grep oracle
ps -ef|grep LOCAL=NO|grep -v grep|awk '{print $2}'|xargs kill -9
ps -ef |grep oracle
查看db_recover空间
SQL> show parameter db_recover
如果空间不够大,要么换路径,要么扩空间。空间满了数据库会报错ORA-00257
- 修改归档日志存储路径,例:
自行创建归档日志文件夹
[oracle@ /]$ cd /home/oracle/app/oracle/oradata/
[oracle@ oradata]$ mkdir archlogs
SQL> alter system set log_archive_dest_1='location=/home/oracle/app/oracle/oradata/archlogs';
- 扩容
SQL> alter system set db_recovery_file_dest_size=100G;
删除归档日志
路径查询
SQL> show parameter db_recover
方法1:物理删除,手动将路径下的文件删掉
删除完执行下面命令:
--rman登录命令
rman target /
--查看所有的归档日志
list archivelog all;
--对比检查归档日志物理文件和控制文件一致性
crosscheck archivelog all;
--查看有哪些过期的日志文件
list expired archivelog all;
--删除过期文件
delete expired archivelog all;
方法2:rman删除归档日志
--登录rman
rman target /
--查看所有归档日志
list archivelog all;
--对比控制文件、物理文件
crosscheck archivelog all;
--查看过期归档日志
list expired archivelog all;
--删除过期归档日志
delete expired archivelog all;
--删除指定日期归档日志
delete archivelog all completed before 'SYSDATE - n';
--退出rman
exit;
定时删除归档日志
创建脚本log文件夹
mkdir deletelogs
vi delete_arc.sh
chmod +x delete_arc.sh
脚本代码:
#! /bin/bash
source ~/.bash_profile
exec >> /u01/app/oracle/recovery_area/ORCL/archivelog/deletelogs/del_arch`date +%F-%H`.log
$ORACLE_HOME/bin/rman target / <<EOF
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog until time 'sysdate-7';
exit;
EOF
添加定时任务(Oracle用户添加)
crontab -e
0 6 * * * /u01/app/oracle/recovery_area/ORCL/archivelog/delete_arc.sh