文章目录
1. 归档日志
归档 VS ⾮归档
- 归档会在⽇志切换时,备份历史⽇志,对于 OLTP 系统都应考虑归档模式,以便数据库能⽀持热备 ,并提供数据库完全恢复和不完全恢复(基于时间点)
- 归档会启⽤ arcn 的后台进程、也会占⽤磁盘空间
- ⾮归档适⽤某种静态库、测试库、或者可由远程提供数据恢复的数据库。⾮归档只能冷备, 且仅能还原最后⼀次全备。归档可以恢复到最后⼀次 commit;
2. 查看归档模式
⽅法⼀:
SQL> archive log list
⽅法⼆:
SQL> select name,log_mode from v$database;
NAME LOG_MODE
--------- ------------
ORADB ARCHIVEL
3. 归档日志命名格式
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
设置归档⽂件命名格式(静态参数,scope=spfile,重启后⽣效)
SQL>alter system set log_archive_format='oradb_%t_%s_%r.arc' scope=spfile;
4. 手动切换日志
- 仅切换当前实例⽇志,适⽤归档和⾮归档模式
alter system switch logfile;
- 如果在集群环境中可切换所有实例⽇志,仅适⽤于归档模式
alter system archive log current;
5. 归档路径
-
归档⽇志默认的存放路径 : $ORACLE_HOME/dbs
-
Oracle 配置归档路径有以下⼏个参数:
- ⽅法1:通过log_archive_dest 参数指定归档⽂件存放的路径,该路径只能是本地磁盘
- ⽅法2:通过log_archive_dest_n 参数Oracle最多⽀持把⽇志⽂件归档到10个地⽅,n从1到10。归档地址可以为本地磁盘,或者⽹络设备。
- ⽅法3:db_recover_file_dest 参数指定的位置快速恢复区,并将归档⽇志保存⾄闪回区。
5.1 更改归档路径
- 通过修改log_archive_dest_1参数,创建专⻔存放归档⽇志的⽬录
[oracle@vm01 ~ ]$ cd $ORACLE_BASE/oradata
[oracle@vm01 oradata]$ mkdir arch
[oracle@vm01 oradata]$ cd arch/
[oracle@vm01 arch]$ pwd
/u01/app/oracle/oradata/arch
在数据库中修改归档⽇志存放路径
SQL> alter system set log_archive_dest_1='location=/u01/app/oracle/oradata/arch';
System altered.
⼿动切换⽇志
SQL> alter system switch logfile;
System altered.
在操作系统上arch⽬录中查看是否有arch⽣成
[oracle@vm01 arch]$ ll $ORACLE_BASE/oradata/arch
total 4016
-rw-r----- 1 oracle oinstall 4104704 Dec 4 03:27 1_2_993945188.dbf
5.2 配置让归档路径使用闪回区
通过配置闪回区保存归档日志,修改db_recover_file_dest参数。
闪回:提供了将整个数据库回退到过去某个时刻的能⼒。
涉及以下两个参数
db_recovery_file_dest_size : 设置闪回区的⼤⼩
db_recovery_file_dest : 设置闪回区的位置
alter system set db_recovery_file_dest_size=14g;
alter system set db_recovery_file_dest=‘/u01/app/oracle/oradata/arch';
5.3 查看归档情况及信息
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/oradata/arch
Oldest online log sequence 14
Next log sequence to archive 18
Current log sequence 18
6. 删除归档⽇志
不建议⼿⼯删磁盘上的归档⽇志⽂件,建议使⽤rman⼯具
使⽤rman命令删除arch log
- 在 rman 脚本中执⾏ crosscheck archivelog all; 校验,检查控制⽂件和实际物理
⽂件。
[oracle@vm01 arch]$ rm arch_PROD_1_6_885234993.dbf
[oracle@mv01 arch]$ rman target /
RMAN> crosscheck archivelog all;
查看所有arch log 信息
RMAN> list archivelog all;
⽅法⼀:删除到 n号归档⽂件
RMAN> delete archivelog until sequence 7;
⽅法⼆:删除 n天前的归档⽂件
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-10';
7. 数据库归档模式
查看当前数据库是否为归档模式
SQL> archive log list;
开启归档模式:
- 需要正常关闭数据库SQL> shutdown immediate
- 数据库启动到mount状态SQL> startup mount
- 打开归档模式SQL> alter database archivelog;
- 打开数据库SQL> alter database open;
- 查看后台进程SQL> archive log list;
[oracle@vm01 ~]$ ps -ef | grep ora_ | grep arc
arcn 最多 30 个,受 log_archive_max_processes 参数影响
关闭归档模式:
7. 需要正常关闭数据库 SQL> shutdown
8. 数据库启动到mount状态SQL> startup mount
9. 关闭归档模式SQL> alter database noarchivelog;
10. 打开数据库SQL> alter database open
11. 查看后台进程[oracle@vm01 ~]$ ps -ef | grep ora_ | grep arc
arcn 最多 30 个,受 log_archive_max_processes 参数影响