Oracle 归档日志

    xiaoxiao2022-07-03  162

    文章目录

    1. 归档日志2. 查看归档模式3. 归档日志命名格式4. 手动切换日志5. 归档路径5.1 更改归档路径5.2 配置让归档路径使用闪回区5.3 查看归档情况及信息 6. 删除归档日志7. 数据库归档模式

    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 参数影响

    最新回复(0)