1. 归档和非归档的区别
1)归档会在日志切换时,备份历史日志,用于OLTP,可以进行冷备份和热备份,可以实现数据库完全恢复、不完全恢复(基于时间点)
2)归档会启用arcn的后台进程、占用磁盘空间
3)非归档用于OLAP/DSS,只能冷备份,只能恢复到最后一次备份状态
说明:
归档和非归档是数据库的状态
切换归档只能在mount模式下
2. 查看归档模式:
SQL>archive log list;Database log mode Archive ModeAutomatic archival EnabledArchive destination /u01/oradata/arch/ // 存档终点Oldest online log sequence 7 //见 v$log 中的sequenceNext log sequence to archive 10Current log sequence 10
Archive destination 不指定时,有两种情况:
1. 没有闪回区 $ORACLE_HOME/dbs
2. 有闪回区 闪回区/VBOX8DB/achievelog/date/归档日志文件名
Archive destination 指定位置,可指定 R2 1-31 ;R1 1-11
SQL> Show parameter LOG_ACHIEVE_DESTSQL> ALTER SYSTEM SET LOG_ACHIEVE_DEST_2 = '地址';
缺省不设置value值
多个归档目的地的情况:可能会出现一个成功另一个不成功(被覆盖)
可以指定mandatory = yes ,指定某个目的地成功才覆盖
3. 设置归档模式
//关闭数据库,这里shutdown 一定要immediate方式SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.//到mount下设置SQL> startup mountSQL>alter database noarchivelog;Database altered.// 查看当前归档模式SQL> archive log list;Database log mode No Archive ModeAutomatic archival Disabled // 禁用归档Archive destination u01/oradata/archOldest online log sequence 1Current log sequence 2//切换回 archivelog,我们不要No Archive ModeSQL> alter database archivelog;SQL> alter database open;
4. 归档日志的路径及命名方法
指定归档日志存放处及命名
如果log_archive_dest_n为空,归档日志文件目录为log_archive_dest;
如果log_archive_dest值也是空,则默认的是db_recover_file_dest参数指定的位置。
缺省安装后db_recover_file_des指向了你的flash_recovery_area。
注意:另外指定并不意味着你要取消闪回恢复区的参数,因为这个闪回恢复区不仅存放归档日志,还有RMAN的备份及闪回日志等等。
查看 archive 参数
SQL> show parameter archiveNAME TYPE VALUE------------------------------------ ----------- ------------------------------archive_lag_target integer 0log_archive_config stringlog_archive_dest stringlog_archive_dest_1 string LOCATION=/u01/oradata/arch/...log_archive_dest_9 stringlog_archive_dest_state_1 string enablelog_archive_dest_state_10 string enable...log_archive_format string arc_%t_%r_%s.arclog_archive_local_first boolean TRUElog_archive_max_processes integer 4log_archive_min_succeed_dest integer 1log_archive_start boolean FALSElog_archive_trace integer 0standby_archive_dest string ?/dbs/arch
查看db_recovery 参数
SQL> show parameter db_recoveryNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_recovery_file_dest stringdb_recovery_file_dest_size big integer 0
注意:先设置大小db_recovery_file_dest_size,再设置位置db_recovery_file_dest
首先来看这两个参数:
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/oradata/arch';
把历史日志归档到本机目录下 (location 代表本机)
SQL> alter system set log_archive_dest_2='service=standby'; ## 当前数据库的备份库
远程备份,把历史日志备份到服务名为test的另外的数据库上。(service 代表远程), 配置双机时有用。两台机器不能互相使用日志
SQL> alter system set log_archive_dest_1='location=/u01/oradata/arch mandatory';
mandatory 强制归档:只有在归档成功之后,重做日志才能被覆盖,在设置时至少应该有一个本地(location)强制(mandatory)归档目录
可以使用log_archieve_min_succsess_dast 参数 设置最小成功地址数,替代mandatory
默认optional, 即使归档没有成功也可以覆盖联机日志文件。
log_archive_format 是定义命名格式的,我使用了下面三个内置符号(模板),其含义是:
闪回区的文件命名不符合这个命名规范,使用omf(数据库管理)o1_mf_thread_sequence_resetlog.arc
%t ,thread# , 日志线程号
%s ,sequence ,日志序列号
%r ,resetlog ,代表数据库的周期
SQL> alter system set log_archive_format ='arch_%t_%r_%s.log' scope=spfile; ## 静态参数
再来看看这两个参数:
log_archive_dest 和 log_archive_duplex_dest
如果都定义了可以完成两路复用(镜像)但只能指定本机location,无法指定远程。
注意:一旦使用log_archive_dest_n,log_archive_dest参数就失效了,log_archive_dest与log_archive_dest_n互斥。
5. 在liunx下查看归档进程
[oracle@vbox88 ~]$ ps -ef |grep ora_arcoracle 1770 1 0 16:57 ? 00:00:00 ora_arc0_vbox88inoracle 1772 1 0 16:57 ? 00:00:00 ora_arc1_vbox88inoracle 1774 1 0 16:57 ? 00:00:00 ora_arc2_vbox88inoracle 1776 1 0 16:57 ? 00:00:00 ora_arc3_vbox88inoracle 2076 1590 0 17:55 pts/2 00:00:00 grep ora_arc
ARCn就是归档进程,这里启动了四个0-3,最多可达30个,由log_archive_max_processes参数指定。
SQL>show parameter log_archive_max_processesNAME TYPE VALUE------------------------------------ ----------- -------------log_archive_max_processes integer 4
6. 日志归档:
1)自动归档,日志切换时
2)手工
3)在归档时,会把归档信息写入到控制文件
SQL> alter system switch logfile; // 手工归档方法一。SQL> alter system archive log current; // 手工归档方法二,此方式仅限于Archive mode。SQL> alter system archive log current noswitch; // 同上,但是日志不做切换
查看已经归档日志:
SQL> select name from v$archived_log;NAME------------------------------------------------------------/u01/oradata/arch/arc_1_989420613_43.arc/u01/oradata/arch/arc_1_989420613_44.arc...
抽奖点一点哦~~





