1. 归档和非归档的区别

  1. 归档会在日志切换时,备份历史日志,对于 OLTP 系统都应考虑归档模式,以便数据库能 支持热备,并提供数据库完全恢复和不完全恢复(基于时间点)
  2. 归档会启用 arcn 的后台进程、也会占用磁盘空间
  3. 非归档适用某种静态库、测试库、或者可由远程提供数据恢复的数据库。
    非归档只能冷备, 且仅能还原最后一次全备。归档可以恢复到最后一次 commit

2. 路径及命名方法

2.1 查看归档模式

#可以通过 archive log list 命令显示
SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     31
Next log sequence to archive   33
Current log sequence           33
SQL> 

#查看归档模式也可以查 v$database
SQL> select name,log_mode from v$database;

NAME      LOG_MODE
--------- ------------
SNORCL11  ARCHIVELOG

SQL> 

2.2 归档路径选择

Oracle 判断归档目的地时按如下顺序优先择取

  1. log_archive_dest_n 值或 log_archive_dest 值 优先级最高
  2. db_recover_file_dest 参数指定的位置(快速恢复区)
  3. $ORACLE_HOME/dbs 参数指定的位置
SYS@PROD>show parameter log_archive_dest
SYS@PROD>show parameter db_recovery_file_dest
SYS@PROD>! echo $ORACLE_HOME/dbs 

【log_archive_dest_1】

#把历史日志归档到本机目录下:
location 代表本机,service 代表远程,配置 DG 时有用。
SYS@PROD>show parameter log_archive_dest_1 
SQL> alter system set log_archive_dest_2='service=standby'; 
#远程备份,把历史日志备份到网络连接符为 standby 的数据库上。

【log_archive_format】

log_archive_format 是定义命名格式的,一般考虑使用下面三个内置符号(模板) 
%t thread# 日志线程号 
%s sequence 日志序列号 
%r resetlog 代表数据库的周期 
参数默认设定的格式如下:
SQL> show parameter log_archive_format

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_format                   string      %t_%s_%r.dbf

3. 开归档 设置归档模式

3.1 创建目录 赋予权限

[oracle@jeames ~]$ mkdir -p /u01/app/oracle/arch 
[oracle@jeames ~]$ ls -ld /u01/app/oracle/arch

3.2 制定归档目录

SYS@PROD>alter system set log_archive_dest_1='location=/u01/app/oracle/arch'; 
SYS@PROD>show parameter log_archive_dest_1
设置归档文件命名格式(静态参数,scope=spfile,重启后生效) 
SYS@PROD>alter system set log_archive_format='arch_PROD_%t_%s_%r.dbf' scope=spfile; 

3.3 正常关库,启动到 mount 状态

SYS@PROD>shutdown immediate; 
SYS@PROD>startup mount; 
SYS@PROD>archive log list

3.4 开归档 开库

SYS@PROD>alter database archivelog; 
SYS@PROD>alter database open; 
SYS@PROD>archive log list;