1. 归档和非归档的区别
- 归档会在日志切换时,备份历史日志,对于 OLTP 系统都应考虑归档模式,以便数据库能 支持热备,并提供数据库完全恢复和不完全恢复(基于时间点)
- 归档会启用 arcn 的后台进程、也会占用磁盘空间
- 非归档适用某种静态库、测试库、或者可由远程提供数据恢复的数据库。
非归档只能冷备, 且仅能还原最后一次全备。归档可以恢复到最后一次 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 判断归档目的地时按如下顺序优先择取
- log_archive_dest_n 值或 log_archive_dest 值 优先级最高
- db_recover_file_dest 参数指定的位置(快速恢复区)
- $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;