归档日志进程是一个可选的进程,该进程并不是在实例启动时启动,此进程的作用是将写满的重做日志文件的数据写到一个归档日志中,这个归档日志是用来介质故障时的数据库修复。生产环境强烈建议开启归档。
我们使用ps -ef | grep oracle 查看下oracle的经典的几个进程【系统监控进程、进程监控进程、重做日志写进程、数据库写进程、检查点进程】,发现没有归档进程??这是因为我们数据库没有开启归档,那么如何开启归档??
登录sqlplus,开启归档
1.shutdown immediate;
2.startup mount;
3.alter database archivelog;
4.alter database open;
5.archive log list;
开启归档后,再此查看下归档进程是否存在
ps -ef | grep oracle
知道开归档之外还要知道如何关闭归档??
关闭数据库
1.shutdown immediate
2.startup mount
3.alter database noarchivelog
4.archive log list 查看归档是否开启
查找归档文件路径
show parameter log_archive_format;查看归档日志格式,格式含义官方解释如下
%s ——log sequence number; 日志序列号
%t —— thread number; 重做线程编号
%r —— resetlogs ID that ensures unique names are constructed for the archived log files across multiple incarnations of the database; RESETLOGS的ID值
show parameter DB_RECOVERY_FILE_DEST;查看归档目录
归档目录里可以看到之前的已经归档的目录文件
那么想问菜鸡哥哥,归档什么时候会生成呢?
自动归档:当重做日志写满的时候,会面临2种选择,1:把以前的redo logfile擦除重新写;2:把写入的重做日志备份归档,再重新写;
通过使用归档日志(开启归档模式),可以保留所有重做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换式,后台进程ARCH会将重做日志的内容保存到归档日志中。
手动归档:dba必须手动执行归档命令进行归档,ALTER SYSTEM ARCHIVELOG ALL;