ORACLE_OCP之ORACLE 归档日志

ORACLE_OCP之ORACLE 归档日志

  • 文章目标:
    • 自由开关归档。

一、归档日志的概念

  • ORACLE将联机REDO日志转换为归档日志的过程称之为归档。相应的日志被称为归档日志。也就是说归档日志是联机REDO日志的备份。并且我们可以把归档日志存放到多个点,包括本地<本服务器下> 或者 异地<远程服务器>下。

  • 只有在归档的模式下才能触发归档操作。

    Alter system archive log current; //手动切换归档

  • 其实理解归档日志很简单,redo log file会把所有的操作全部记下来,但是日志组会覆盖(循环),那么我们把redo log file全部保存下来,换句话说就是归档。就有了归档日志。当然这里就要启用归档模式了。
    对于日志组而言,当然要归档完毕,才能被覆盖,10g之后,开启自动归档功能,后台进程arcn会把在一定条件下日志组切换后对该日志组进行归档。

二、查看归档状态

SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            /u01/app/oracle/product/12.2.0/db_1/dbs/arch
Oldest online log sequence     16
Current log sequence           19

  • 该状态法为非归档状态(No Achive Mode)。

三、切换非归档模式为归档模式

  • 设置归档路径 :

    • 方法一: log_archive_dest和log_archive_duplex_dest参数,这两个参数指明了归档日志存放的两个路径,如果只设置第一个,则归档日志只存放到一个路径。

    • 例:

      log_archive_dest=/disk1/archive
      log_archive_duplex_dest=/disk2/archive

    • 方法二:LOG_ARCHIVE_DEST_n参数,其中n为1-31的整数,必需从低到高设置,下面举例说明:

      log_archive_dest_1=‘LOCATION=/u01/archive MANDATORY REOPEN’
      log_archive_dest_2=‘SERVICE=orcl2 MANDATORY REOPEN=600’
      log_archive_dest_3=‘LOCATION=/u02/archive OPTIONAL’
      log_archive_dest_4=‘LOCATION=/u03/archive’
      ( 如果想停止使用一个归档目录,只需将其对应的log_archive_dest_state_n参数值设置为DEFER 默认是ENABLE)

  • LOCATION关键字说明是本机的一个目录,而SERVICE关键字说明是已经在TNSNAMES.ORA中配置了orcl2主机相关信息,则归档会在orcl2主机的默认位置上生成。

  • MANDATORY关键字说明联机日志文件必须要成功归档到这个目录后才能被覆写(联机日志文件是重复使用的文件)。缺省为“可选” (OPTIONAL),即即使归档不成功也可以覆写。在设置时应该至少有一个本地(LOCATION)强制(MANDATORY)归档目录。

  • REOPEN关键字说明如果归档不成功时系统要重新尝试归档,缺省每300秒尝试一次直到成功。可以通过=n来指定尝试的时间间隔,如log_archive_dest_2中的时间间隔为600秒,而log_archive_dest_1中的时间间隔为300秒。

  • 方法一和方法二两种方式是互斥的,即只能设置其中的一种,方法一和方法二的不同之处在于:

    • 方法一最多只能设置2个归档路径,而方法二最多可设置从1到31的31个目录位置。
    • 方法一中只能指定本地目录,方法二中可指定远程服务目录。
  • 如果使用方法一,则log_archive_dest是强制(MANDATORY)归档目录,而log_archive_duplex_dest为“可选”(OPTIONAL)目录。

  • 方法一中不能使用REOPEN关键字。

  • 所以推荐使用方法二对归档目录进行相应的管理。

四、设置归档日志文件名格式

  • 使用命令为:

    Alter system set log_archive_format=‘$ORACLE_SID_arch_%t_%s_%r.arc’;

  • 默认:

SQL> SHOW PARAMETER LOG_ARCHIVE_FORMAT;

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

  • 参数说明:
    • %s: 日志序列号:
    • %S: 日志序列号(带有前导)
    • %t: 重做线程编号.
    • %T: 重做线程编号(带有前导)
    • %a: 活动ID号
    • %d: 数据库ID号
    • %r RESETLOGS的ID值.

五、设置最小归档成功数

  • log_archive_min_succeed_dest=2
    • 此参数说明至少有2个归档路径归档成功后才能覆写联机日志文件,此参数和归档路径参数联用。
  • 如归档路径参数设置为:
    • log_archive_dest_1=‘LOCATION=/u01/archive MANDATORY
    • REOPEN’log_archive_dest_2=‘SERVICE=orcl2 MANDATORY REOPEN=600’
    • log_archive_dest_3=‘LOCATION=/u02/archive OPTIONAL’
    • log_archive_dest_4=‘LOCATION=/u03/archive’
  • 则log_archive_dest_1必须归档成功(MANDATORY),log_archive_dest_2、 log_archive_dest_3中必须有一个归档成功(log_archive_min_succeed_dest=2)后才能覆写联机日志文件。同样,如果log_archive_dest_n中的MANDATORY关键字个数大于log_archive_min_succeed_dest,则 log_archive_min_succeed_dest的设置不起作用。

六、关于自动归档

  • 参数为:
    • log_archive_start //如果为true代表是自动归档
    • log_archive_max_processes //归档进程的数量
  • 在ORACLE中,自动归档的进程名为ARC0、ARC1等,log_archive_start参数说明是否采用自动归档,值为true表示采用,为 false时必须采用命令来手工备份。
  • log_archive_max_processes表示在log_archive_start为true时运行几个归档进程来完成归档工作,取值范围为1-10。
  • 例:log_archive_max_processes = 10
  • 补充: log_archive_start这个参数在ORACLE 10G以后已经被废弃掉了。数据库在归档状态是是否能归档请参照ARCHIVE LOG LIST里Automatic archival参数是否为ENABLED。这里讲主要是为了防止考试的时候遇到改参数所以才在PPT内添加的,请大家一定要注意!!!

七、开启和关闭数据库归档的步骤

  • 开启:

    • 1、 一致性关闭数据库

      Shutdown immediate

    • 2、将数据库开启到mount模式

      Startup mount

    • 3、开启归档

      Alter database archivelog;

    • 4、让数据库进入到OPEN状态

      Alter database open;

    • 5、检查数据库是否为归档模式

      Archive log list;

  • 关闭:

    • 1、 一致性关闭数据库

      Shutdown immediate

    • 2、将数据库开启到mount模式

      Startup mount

    • 3、关闭归档

      Alter database noarchivelog;

    • 4、让数据库进入到OPEN状态

      Alter database open;

    • 5、检查数据库是否为归档模式

      Archive log list;

八、和归档相关的视图

视图说明
v$archived_log从控制文件中获得归档的相关信息
v$archive_dest归档路径及状态
v$log_history控制文件中日志的历史信息
v$database查看数据库是否处于归档状态
v$archive_processes归档相关的后台进程信息

九、归档实验

  1. 在root下创建/backup目录用以存放归档(目录要求:所属用户和所属组分别为oracle、oinstall)
    [root@oracle12 ~]# mkdir /backup
    [root@oracle12 ~]# chown -R oracle:oinstall /backup
    [root@oracle12 ~]# ls /backup -ld
    drwxr-xr-x 2 oracle oinstall 6 Dec 29 16:40 /backup
    
  2. 切换到oracle用户下,在/backup目录下创建arch目录:
[oracle@oracle12 backup]$ mkdir arch
  1. 设置归档存放路径
//查看归档存放路径
SQL> SHOW PARAMETER LOG_ARCHIVE_DEST;
//设置第一个归档存放路径
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='location=/backup/arch';

System altered.

//设置完成查看一下,出现了第一个存放路径
SQL> SHOW PARAMETER LOG_ARCHIVE_DEST_1;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1                   string      location=/backup/arch
log_archive_dest_10                  string
log_archive_dest_11                  string
log_archive_dest_12                  string
log_archive_dest_13                  string
log_archive_dest_14                  string
log_archive_dest_15                  string
log_archive_dest_16                  string
log_archive_dest_17                  string
log_archive_dest_18                  string
log_archive_dest_19                  string
SQL>

  1. 设置一个归档文件的名字(此时归档的文件是默认的一个格式)
//查看此时的归档文件名称,我们看到是默认的
SQL> show parameter log_archive_format;

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

//修改名称格式
SQL> alter system set log_archive_format='orcl_arch_%t_%s_%r.arc';
alter system set log_archive_format='orcl_arch_%t_%s_%r.arc'
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified


SQL> alter system set log_archive_format='orcl_arch_%t_%s_%r.arc' scope=spfile;

System altered.

SQL>

  1. 开启数据库归档(文章第七节)
//执行完第七节的开启数据库归档步骤之后我们再次查看归档模式,已经打开,并且目录是我们设置的目录
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /backup/arch
Oldest online log sequence     16
Next log sequence to archive   19
Current log sequence           19
SQL>
  1. 查看归档路径
//刚刚做完以上操作之后,我们查看下我们的归档目录,发现并没有生成归档文件
[oracle@oracle12 ~]$ cd /backup/arch/
[oracle@oracle12 arch]$ ls
[oracle@oracle12 arch]$

//此时我们需要手动切换归档
SQL> alter system archive log current;

System altered.

SQL>

//切换完成我们再查看目录,已经生成了我们指定的文件格式的归档文件

[oracle@oracle12 ~]$ cd /backup/arch/
[oracle@oracle12 arch]$ ls
[oracle@oracle12 arch]$ ls
orcl_arch_1_19_1059545402.arc
[oracle@oracle12 arch]$

  1. 查看归档信息
SQL> show parameter log_archive_max_processes;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_max_processes            integer     4
  1. 如果需要关闭归档(参考第七章关闭步骤)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值