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 | 归档相关的后台进程信息 |
九、归档实验
- 在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
- 切换到oracle用户下,在/backup目录下创建arch目录:
[oracle@oracle12 backup]$ mkdir arch
- 设置归档存放路径
//查看归档存放路径
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>
- 设置一个归档文件的名字(此时归档的文件是默认的一个格式)
//查看此时的归档文件名称,我们看到是默认的
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>
- 开启数据库归档(文章第七节)
//执行完第七节的开启数据库归档步骤之后我们再次查看归档模式,已经打开,并且目录是我们设置的目录
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>
- 查看归档路径
//刚刚做完以上操作之后,我们查看下我们的归档目录,发现并没有生成归档文件
[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]$
- 查看归档信息
SQL> show parameter log_archive_max_processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_max_processes integer 4
- 如果需要关闭归档(参考第七章关闭步骤)