归档日志:archive log
1.归档日志和非归档日志的区别
1)归档会在日志切换时,备份历史日志,对于OLTP系统都应考虑归档模式,以便数据库能支持热备,并提供数据库完全恢复和不完全恢复(基于时间点)
2)归档会启用ARCn的后台进程、也会占用磁盘空间
3)非归档只能冷备,且仅能还原最后一次全备。非归档适用某种静态库、测试库、或者可由远程提供数据恢复的数据库。
2.归档进程
$ ps -ef |grep ora_arc
oracle 1215 2435 0 13:26 pts/2 00:00:00 grep ora_arc
oracle 31796 1 0 13:00 ? 00:00:00 ora_arc0_
oracle 31798 1 0 13:00 ? 00:00:00 ora_arc1_
ARCn就是归档进程,n最多可达30个,由log_archive_max_processes参数指定。
3.手动切换日志
第一种:SQL> alter system switch logfile; 仅切换当前实例,适用归档和非归档。
SYS@ prod>select name from v$archived_log
NAME
---------------------------------------------------------------------
/u01/arch/arch_1_880581688_10.log
/u01/arch/arch_1_880581688_11.log
/u01/arch/arch_1_880581688_12.log
/u01/arch/arch_1_883490264_1.log
/u01/arch/arch_1_883490264_2.log
/u01/arch/arch_1_883490264_3.log
/u01/arch/arch_1_883490264_4.log
/u01/arch/arch_1_883490264_5.log
/u01/arch/arch_1_883490264_6.log
/u01/arch/arch_1_883490264_7.log
/u01/arch/arch_1_883490264_8.log
/u01/arch/arch_1_883490264_9.log ##切换后可以看到sequence号不断增长
第二种:SQL> alter system archive log current; 在RAC下切换所有实例,仅适用于归档模式。
4.如何设置归档模式
1)SQL> shutdown immediate 一定要干净的关闭数据库
2)SQL> startup mount 启动到mount下
3)SQL> alter database archivelog; ##归档模式 alter database no archivelog;##非归档模式
4)SQL> archive log list; 查看归档状态
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/arch/
Oldest online log sequence 8
Next log sequence to archive 10
Current log sequence 10
5)SQL> alter database open; 打开数据库
5.归档日志存放路径和优先级
1) log_archive_dest_n 手工指定归档目录
2) db_recover_file_dest 闪回区 (缺省是USE_DB_RECOVERY_FILE_DEST,其含义是采用参数db_recovery_file_dest参数的定义,即闪回恢复区)
SQL> show parameter db_recovery
3) $oracle_home/dbs 参数文件存放区
其中,这三种的优先级:log_archive_dest_n > db_recover_file_dest > $oracle_home/dbs
查看archive log 存放位置
采用参数log_archive_dest_n或log_archive_dest指定的路径
SQL> show parameter archive
NAME TYPE VALUE
------------------------------------ ----------- --------------------------------------
archive_lag_target integer 0
log_archive_config string
log_archive_dest string
log_archive_dest_1 string location=/u01/arch
log_archive_dest_10 string
log_archive_dest_2 string
log_archive_dest_3
...
log_archive_duplex_dest string
log_archive_format string arch_%t_%r_%s.log
首先来看这两个参数:
log_archive_dest_n
log_archive_format
log_archive_dest_n(n:1-10) 表示可以有10个目标路径存放归档日志(镜像关系),即可以多路复用10个归档日志的备份。如上显示我只使用了log_archive_dest_1,也就是说只有一套归档日志,没有做镜像。
参数设定的格式如下:
SQL> alter system set log_archive_dest_1='location=/u01/arch';
把历史日志归档到本机目录下 (location 代表本机)
SQL> alter system set log_archive_dest_2='service=standby';
远程备份,把历史日志备份到网络连接符为standby的数据库上。(service 代表远程),配置DG时有用。
log_archive_format 是定义命名格式的,一般考虑使用下面三个内置符号(模板)
%t thread# 日志线程号
%s sequence 日志序列号
%r resetlog 代表数据库的周期
参数设定的格式如下:
SQL> alter system set log_archive_format ='arch_%t_%r_%s.log' scope=spfile;
4)再来看看这两个参数:
log_archive_dest
log_archive_duplex_dest
这两个参数已经弃用了,它们能完成两路复用(镜像)但只能指定本机location,无法指定远程。
一旦使用log_archive_dest_n,log_archive_dest参数就失效了。