-- Oracle归档日志

--====================

Oracle可以将联机日志文件保存到多个不同的位置,将联机日志转换为归档日志的过程称之为归档。相应的日志被称为归档日志。

一、归档日志

是联机重做日志组文件的一个副本

包含redo记录以及一个唯一的log sequence number

对日志组中的一个日志文件进行归档,如果该组其中一个损坏,则另一个可用的日志将会被归档

对于归档模式的日志切换,当日志归档完成后,下一个日志才能被覆盖或重新使用

自动归档功能如开启,则后台进程arcn在日志切换时自动完成归档,否则需要手动归档

归档日志用途

恢复数据库

更新standby数据库

使用LogMiner提取历史日志的相关信息

二、日志的两种模式

1.非归档模式

不适用与生产数据库

创建数据库时,缺省的日志管理模式为非归档模式

当日志切换,检查点产生后,联机重做日志文件即可被重新使用

联机日志被覆盖后,介质恢复仅仅支持到最近的完整备份

不支持联机备份表空间,一个表空间损坏将导致整个数据库不可用,需要删除掉损坏的表空间或从备份恢复

对于操作系统级别的数据库备份需要将数据库一致性关闭

应当备份所有的数据文件、控制文件(单个)、参数文件、密码文件、联机日志文件(可选)

2.归档模式

能够对联机日志文件进行归档,生产数据库强烈建议归档

在日志切换时,下一个即将被写入日志组必须归档完成之后,日志组才可以使用

归档日志的Log sequence number信息会记录到控制文件之中

必须有足够的磁盘空间用于存放归档日志

Oracle 9i需要设置参数log_archive_start=true才能够进行自动归档

备份与恢复

支持热备份,且当某个非系统表空间损坏,数据库仍然处于可用状态,且支持在线恢复

使用归档日志能够实现联机或脱机时点恢复(即可以恢复到指定的时间点、指定的归档日志或指定的SCN)

三、两种模式的切换设置及手动归档

1.非归档到归档模式

a.一致性关闭数据库(shutdown[immediate | transactional |normal])

b.启动到mount阶段(startup mount)

c.切换到归档模式(alter database archivelog[manual])

d.切换到open阶段(alterdatabase open)

e.对数据做一个完整备份(fullbackup)

--演示非归档到归档模式

SQL> ARCHIVE LOG LIST--查看数据库是否处于归档模式

Database log modeNo Archive Mode

Automatic archivalDisabled

Archive destinationUSE_DB_RECOVERY_FILE_DEST

Oldest online log sequence14

Current log sequence16

SQL> SELECT log_mode FROM v$database;--查看数据库是否处于归档模式

LOG_MODE

------------

NOARCHIVELOG

SQL> SHUTDOWN IMMEDIATE;--一致性关闭数据库

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> STARTUP MOUNT;--启动到mount状态

ORACLE instance started.

Total System Global Area251658240 bytes

Fixed Size1218796 bytes

Variable Size75499284 bytes

Database Buffers171966464 bytes

Redo Buffers2973696 bytes

Database mounted.

SQL> ALTER DATABASE ARCHIVELOG;--切换到自动归档模式

Database altered.

SQL> ALTER DATABASE OPEN;--切换到open状态

Database altered.

SQL> ARCHIVE LOG LIST;--查看数据库的归档状态

Database log modeArchive Mode--已置为归档模式

Automatic archivalEnabled--对日志进行自动归档

Archive destinationUSE_DB_RECOVERY_FILE_DEST

Oldest online log sequence14

Next log sequence to archive16

Current log sequence16

--备份数据库步骤省略

2.归档模式切换到非归档模式(步骤同非归档到归档模式仅仅是c步骤使用alterdatabase noarchivelog,演示省略)

a.一致性关闭数据库(shutdown[immediate | transactional |normal])

b.启动到mount阶段(startup mount)

c.切换到归档模式(alterdatabase noarchivelog)

d.切换到open阶段(alterdatabase open)

e.对数据做一个完整备份(fullbackup)

3.手动归档

手动归档时需要将日志模式切换为alterdatabase archivelog manual

再使用altersystem archive log current | all实现归档

更多手动归档命令:

注意:

手动归档模式下不支持stanby数据库

在alterdatabase archivelog模式下也可以实现对日志的归档

SQL> ALTER DATABASE ARCHIVELOG MANUAL;--将日志模式切换为手工归档模式

Database altered.

SQL> ALTER DATABASE OPEN;--打开数据库

Database altered.

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;--对当前的日志进行归档(建议在mount阶段完成)

System altered.

SQL> ALTER SYSTEM ARCHIVE LOG ALL;--对所有的日志进行归档

alter system archive log all

*

ERROR at line 1:

ORA-00271: there are no logs that need archiving--没有需要归档的日志

4.归档进程的调整

通过设置LOG_ARCHIVE_MAX_PROCESSES参数,可以指定数据库规定所需初始化的进程数,缺省的归档进程数为2

一般情况下不需要修改该参数,Oracle会根据归档情况自动启动额外的归档进程

也可以动态的增加或减少归档进程数,比如有些业务在月底需要进行大量归档,平时则归档较少,对此可以动态修改

修改方法

ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=3;

5.配置归档(两种归档位置配置方法)

a.归档到本机且少于等于两个归档位置

设置LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST参数

alter system set log_archive_dest = '/u01/app/oracle/archivelog1' scope = spfile;

alter system set log_archive_duplex_dest = '/u01/app/oracle/archivelog2' scope = spfile;

b.归档到本机或远程主机

设置LOG_ARCHIVE_DEST_n参数,n最大值为10

alter system set log_archive_dest_1 = 'LOCATION=/u01/app/oracle/archivelog3';

alter system set log_archive_dest_2 = 'SERVICE=standby1';

对于远程归档位置,SERVICE选项需要指定远程数据库的网络服务名(在tnsnames.ora文件中配置)

LOG_ARCHIVE_DEST_n的两个常用选项

MANADATORY | OPTIONAL:

MANADATORY表示归档必须成功复制到目的路径之后,联机重做日志才能被复用,OPTIONAL正好相反

REOPEN:

指定归档失败后指定间隔多少时间重试归案,缺省的为300秒

示例:

log_archive_dest_1 = 'LOCATION=/u01/app/oracle/archivelog3 manadatory reopen = 600'

log_archive_dest_2 = 'SERVICE=standby1 manadatory reopen'

c.两种归档方法异同(前者log_archive_dest、log_archive_duplex_dest,后者log_archive_dest_n)

两者都可以归档到本机,后者可以归档到远程主机,前者不支持该功能

前者最多配置两个归档位置,后者可以配置10个归档位置

两者互不兼容,要么使用前者,要么使用后者

使用后者归档到本地时需要增加LOCATION选项,备份到远程主机需要使用SERVICE选项

但上述两种方式未指定路径时,归档日志位于db_recovery_file_dest缺省为$ORACLE_BASE/flash_recovey_area

d.归档日志命名格式

设置LOG_ARCHIVE_FORMAT参数,Unix下的缺省设置为LOG_ARCHIVE_FORMAT=%t_%s_%r.dbf

%s:日志序列号:

%S:日志序列号(带有前导)

%t:重做线程编号.

%T:重做线程编号(带有前导)

%a:活动ID号

%d:数据库ID号

%r RESETLOGS的ID值.

alter system set log_archive_format = 'arch_%t_%s_%r.arc';

e.归档位置状态

Valid/Invalid--磁盘位置及服务名等是否有效

Enabled/Disabled--磁盘位置的可用状态及数据库能否使用该归档位置

Active/Inactive--访问归档目的地是否有异常

f.归档成功的最小个数(使用参数log_archive_min_succeed_dest = n)

alter system set log_archive_min_succeed_dest = 2;--缺省为1

联机重做日志组能够被覆盖的前提

所有强制路径归档位置成功实现归档

归档目的地的成功归档的个数大于或等于上述参数设定的值

当强制个数大于该参数设定的个数,则以强制个数为准

当强制个数小于该参数设定的个数,则可选的成功归档路径加上强制的归档路径个数至少等于该参数设定值

g.控制归档的可用性(使用参数log_archive_dest_state_n)

alter system set log_archive_dest_state_1 = enable | defer

enable-->缺省状态,可以在该归档位置进行归档

defer-->禁用该归档位置

h.演示归档路径配置及查看归档进程,归档位置状态

SQL> ARCHIVE LOG LIST;--查看日志是否处于归档状态

Database log modeArchive Mode

Automatic archivalEnabled

Archive destinationUSE_DB_RECOVERY_FILE_DEST

Oldest online log sequence24

Next log sequence to archive26

Current log sequence26

SQL> ho ps -ef | grep ora_arc--查看归档进程是否已启动

oracle406210 11:43 ?00:00:00 ora_arc0_orcl

oracle406410 11:43 ?00:00:00 ora_arc1_orcl

SQL> SHOW PARAMETER ARCHIVE--查看归档路径是否已设置,为空值表示未设置

NAMETYPEVALUE

------------------------------------ ----------- ------------------------------

archive_lag_targetinteger0

log_archive_configstring

log_archive_deststring

log_archive_dest_1string

log_archive_dest_10string

log_archive_dest_2string

log_archive_dest_3string

log_archive_dest_4string

log_archive_dest_5string

log_archive_dest_6string

log_archive_dest_7string

NAMETYPEVALUE

------------------------------------ ----------- ------------------------------

log_archive_dest_8string

log_archive_dest_9string

log_archive_dest_state_1stringenable

log_archive_dest_state_10stringenable

log_archive_dest_state_2stringenable

log_archive_dest_state_3stringenable

log_archive_dest_state_4stringenable

log_archive_dest_state_5stringenable

log_archive_dest_state_6stringenable

log_archive_dest_state_7stringenable

log_archive_dest_state_8stringenable

NAMETYPEVALUE

------------------------------------ ----------- ------------------------------

log_archive_dest_state_9stringenable

log_archive_duplex_deststring

log_archive_formatstring%t_%s_%r.dbf

log_archive_local_firstbooleanTRUE

log_archive_max_processesinteger2

log_archive_min_succeed_destinteger1

log_archive_startbooleanFALSE --该参数在9i中使用

log_archive_traceinteger0

remote_archive_enablestringtrue

standby_archive_deststring?/dbs/arch

SQL> alter system set log_archive_dest = '/u01/app/oracle/archivelog1' scope = spfile;

System altered.

SQL> alter system set log_archive_duplex_dest= '/u01/app/oracle/archivelog2' scope=spfile;

System altered.

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

--设定完毕后需要重新启动实例,在此省略关闭启动信息

SQL> ho ls /u01/app/oracle/archivelog1--查看归档路径下是否存在文件或文件夹

SQL> ho ls /u01/app/oracle/archivelog2--查看归档路径下是否存在文件或文件夹

SQL> alter system archive log current;--手动进行归档

System altered.

SQL> ho ls -l /u01/app/oracle/archivelog1--在指定的文件夹archivelog1已产生归档日志

total 18224

-rw------- 1 oracle oinstall 18636800 Jul 28 20:39 arch_1_26_724852763.arc

SQL> ho ls -l /u01/app/oracle/archivelog2--在指定的文件夹archivelog2已产生归档日志

total 18224

-rw------- 1 oracle oinstall 18636800 Jul 28 20:39 arch_1_26_724852763.arc

SQL> ho mkdir /u01/app/oracle/archivelog3--创建新的归档路径

SQL> ho mkdir /u01/app/oracle/archivelog4--创建新的归档路径

SQL> alter system set log_archive_dest_1 = 'location=/u01/app/oracle/archivelog3'

2scope = spfile;

System altered.

SQL>alter system set log_archive_dest_2 = 'location=/u01/app/oracle/archivelog4'

2scope = spfile;

System altered.

SQL> shutdown immediate;--关闭实例

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup--启动实例后,收到错误提示表明两种归档方式不兼容

ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST

--关于上述设置导致的错误处理请参照:又一例SPFILE设置错误导致数据库无法启动

--下面是正确的处理办法,应当先将一种归档方式路径置空,此处是将log_archive_dest置空

SQL> alter system set log_archive_dest = '' scope = spfile;

System altered.

--此处是将log_archive_duplex_dest置空

SQL> alter system set log_archive_duplex_dest = '' scope = spfile;

System altered.

--接下来再设定log_archive_dest_1,log_archive_dest_2

SQL> alter system set log_archive_dest_1 = 'location=/u01/app/oracle/archivelog3'

2scope = spfile;

System altered.

SQL> alter system set log_archive_dest_2 = 'location=/u01/app/oracle/archivelog4'

2scope = spfile;

System altered.

--由于没有配置standby服务器,所以省略配置到远程主机

--设定完毕后需要重新启动实例,此时系统能正常启动,在此省略关闭启动信息

SQL> alter system archive log current;--进行手动归档

System altered.

SQL> ho ls -l /u01/app/oracle/archivelog3/--查看归档日志

total 27752

-rw------- 1 oracle oinstall 28382208 Aug2 13:46 arc_1_38_724852763.arc

SQL> ho ls -l /u01/app/oracle/archivelog4/--查看归档日志

total 27752

-rw------- 1 oracle oinstall 28382208 Aug2 13:45 arc_1_38_724852763.arc

SQL> col dest_name format a20;

SQL> col destination format a30;

SQL> select dest_name,status,archiver,destination,

2log_sequence,reopen_secs,transmit_mode,process

3from v$archive_dest;--查看归档目的地的相关状态信息

DEST_NAMESTATUSARCHIVERDESTINATIONLOG_SEQUENCE REOPEN_SECS TRANSMIT_MOD PROCESS

-------------------- --------- ---------- ------------------------------ ------------ ----------- ------------ -------

LOG_ARCHIVE_DEST_1VALIDARCH/u01/app/oracle/archivelog3/38300 SYNCHRONOUSARCH

LOG_ARCHIVE_DEST_2VALIDARCH/u01/app/oracle/archivelog4/38300 SYNCHRONOUSARCH

LOG_ARCHIVE_DEST_3INACTIVEARCH00 SYNCHRONOUSARCH

-----------------------------------------------------------------------------------------------------------------------

SQL> alter system set log_archive_dest_state_2 = defer;--停用log_archive_dest_state_2

System altered.

SQL> show parameter log_archive_dest_state

NAMETYPEVALUE

------------------------------------ ----------- ---------------

log_archive_dest_state_1stringenable

log_archive_dest_state_10stringenable

log_archive_dest_state_2stringDEFER--该路径显示为defer

log_archive_dest_state_3stringenable

log_archive_dest_state_4stringenable

log_archive_dest_state_5stringenable

log_archive_dest_state_6stringenable

log_archive_dest_state_7stringenable

log_archive_dest_state_8stringenable

log_archive_dest_state_9stringenable

SQL> alter system archive log current;--手动归档

System altered.

SQL> ho ls -l /u01/app/oracle/archivelog3; --可以看出archivelog3比archivelog4多出几个归档文件

total 124772--建议将多出文件件的使用系统命令复制到archivelog4

-rw------- 1 oracle oinstall 28382208 Aug2 13:46 arc_1_38_724852763.arc

-rw------- 1 oracle oinstall1788416 Aug2 20:41 arc_1_39_724852763.arc

-rw------- 1 oracle oinstall 30257664 Aug2 22:21 arc_1_40_724852763.arc

-rw------- 1 oracle oinstall 30257664 Aug2 22:22 arc_1_41_724852763.arc

-rw------- 1 oracle oinstall 30257664 Aug2 22:22 arc_1_42_724852763.arc

-rw------- 1 oracle oinstall6647296 Aug2 22:23 arc_1_43_724852763.arc

SQL> ho ls -l /u01/app/oracle/archivelog4;

total 29504

-rw------- 1 oracle oinstall 28382208 Aug2 13:45 arc_1_38_724852763.arc

-rw------- 1 oracle oinstall1788416 Aug2 20:41 arc_1_39_724852763.arc

SQL> alter system set log_archive_dest_state_2 = enable; --启用log_archive_dest_state_2

System altered.

SQL> alter system archive log current;--手动归档

System altered.

SQL> ho ls -l /u01/app/oracle/archivelog3; --启用后出现了相同的arc_1_44_724852763.arc文件

total 124856

-rw------- 1 oracle oinstall 28382208 Aug2 13:46 arc_1_38_724852763.arc

-rw------- 1 oracle oinstall1788416 Aug2 20:41 arc_1_39_724852763.arc

-rw------- 1 oracle oinstall 30257664 Aug2 22:21 arc_1_40_724852763.arc

-rw------- 1 oracle oinstall 30257664 Aug2 22:22 arc_1_41_724852763.arc

-rw------- 1 oracle oinstall 30257664 Aug2 22:22 arc_1_42_724852763.arc

-rw------- 1 oracle oinstall6647296 Aug2 22:23 arc_1_43_724852763.arc

-rw------- 1 oracle oinstall81408 Aug2 22:25 arc_1_44_724852763.arc

SQL> ho ls -l /u01/app/oracle/archivelog4;

total 29588

-rw------- 1 oracle oinstall 28382208 Aug2 13:45 arc_1_38_724852763.arc

-rw------- 1 oracle oinstall1788416 Aug2 20:41 arc_1_39_724852763.arc

-rw------- 1 oracle oinstall81408 Aug2 22:25 arc_1_44_724852763.arc

四、归档日志相关视图

v$archived_log-->从控制文件中获得归档的相关信息

v$archive_dest-->归档路径及状态

v$log_history-->控制文件中日志的历史信息

v$database-->查看数据库是否处于归档状态

v$archive_processes-->归档相关的后台进程信息

命令:archive log list

SQL> selectname,sequence#,registrar,standby_dest,archived,status

2from v$archived_log;

NAMESEQUENCE# REGISTR STA ARC S

------------------------------------------------------- ---------- ------- --- --- -

/u01/app/oracle/archivelog4/arc_1_38_724852763.arc38 FGRDNOYES A

/u01/app/oracle/archivelog3/arc_1_39_724852763.arc39 ARCHNOYES A

/u01/app/oracle/archivelog4/arc_1_39_724852763.arc39 ARCHNOYES A

/u01/app/oracle/archivelog3/arc_1_40_724852763.arc40 ARCHNOYES A

/u01/app/oracle/archivelog3/arc_1_41_724852763.arc41 ARCHNOYES A

/u01/app/oracle/archivelog3/arc_1_42_724852763.arc42 ARCHNOYES A

/u01/app/oracle/archivelog3/arc_1_43_724852763.arc43 ARCHNOYES A

/u01/app/oracle/archivelog3/arc_1_44_724852763.arc44 FGRDNOYES A

/u01/app/oracle/archivelog4/arc_1_44_724852763.arc44 FGRDNOYES A

oracle归档日志参数reopen=30,Oracle 归档日志 -- CSDN 比较全的说明文档相关推荐

  1. oracle创建带参数视图6,Oracle创建带有参数的视图代码介绍

    在Oracle里,视图不像存储过程和函数一样,可以定义输入参数,但我们可以变个方式,使用程序包来实现 首先定义程序包: /* 按个人需要定义,我定义三个参数 ,因我项目程序需要,所以三个参数都是num ...

  2. oracle数据库恢复参数文件位置,Oracle数据库的参数文件备份与恢复

    Oracle数据库的参数文件包含两个文件: 一个是spfile二进制文件名字为spfilesid.ora(其中sid=你数据库的实例名称). 另一个是pfile文本文件的参数文件,名字为initsid ...

  3. linux server.xml日志参数,Linux Log4j+Kafka+KafkaLog4jAppender 日志收集

    背景: kafka版本:kafka_2.10-0.8.2.1 服务器IP:10.243.3.17 一:Kafkaserver.properties 文件配置 二:zookeeper.propertie ...

  4. oracle存储过程传整数,oracle存储过程传参数

    场景:Oracle存储过程传参数有关问题 Oracle存储过程传参数问题 在存储过程当中传参数的时候可以使用 IF SDATE IS NOT NULL OR EDATE IS NOT NULL THE ...

  5. Oracle数据库REMOTE_LOGIN_PASSWORDFILE参数的设置

    关于Oracle数据库REMOTE_LOGIN_PASSWORDFILE参数的设置 Oracle的实用程序orapwd命令可以用来创建口令文件,该命令的参数有3个: C:/>orapwd Usa ...

  6. Oracle Linux 6.9安装和Oracle 11.2.0.4.0安装及psu补丁升级

    原文有图图https://www.linuxidc.com/linux/2018-09/154218.htm 图文详解在Oracle Linux 6.9安装和Oracle 11.2.0.4.0安装及p ...

  7. oracle的几个服务含义,oracle 的几个服务

    在windows中安装完oracle后,在服务中有以下几个服务: 1.OracleDBConsoleorcl 主要作用是可以以网页形式进行DB管理,比如:http://ylmf:1158/em 2.O ...

  8. oracle闪回区和归档的关系,闪回与归档参数的设置

    Oracle闪回技术提供了一组功能用来查看数据的过去状态并且支持数据按时间返回到之前的状态不用对数据库从备份中执行大量的还原操作或者执行按时间点恢复.在大部分情况下闪回功能非常有效破坏性比介质恢复小. ...

  9. oracle统计每日归档大小,Oracle查询最近几天每小时归档日志产生数量的脚本写法...

    下面给大家分享Oracle查询最近几天每小时归档日志产生数量的脚本写法,脚本如下所示: SELECT SUBSTR(TO_CHAR(first_time, 'MM/DD/RR HH:MI:SS'),1 ...

最新文章

  1. CF803C Maximal GCD
  2. NIO - Scatter/Gather
  3. hbase原理与实践_HBase 性能调优第一弹:内存篇
  4. DESTOON 404
  5. python网络爬虫开发从入门到精通pdf-Python 3网络爬虫开发实战PDF高清完整版下载...
  6. 母版页调用内容页的方法的简单实现
  7. [NOIP2015提高组]运输计划
  8. 异常(Exception)的学习
  9. em算法python代码_EM算法的python实现的方法步骤
  10. 随想录(从kaldi学习语音识别)
  11. JsonCpp 入门教程
  12. SHELL编程Nginx源码多版本脚本
  13. 我的MVVM框架 v3教程——todos例子
  14. 读完云原生数仓领导者Snowflake的论文,想要和你们分享这些……
  15. MATLAB EOF处理 缺测值问题
  16. SD卡驱动-基础知识
  17. 九宫格六边形html,六边形拼图
  18. 用python写字动画_Duang!用Python来实现唱歌、跳舞、写字、画画?无所不能的pyt
  19. Delphi 中资源文件使用详解
  20. 【转】我国交通信号控制产品市场及技术的现状和发展

热门文章

  1. ssh2 文件服务器,使用Node.js和SSH2从SFTP服务器读取文件
  2. 浅议Python append()与NumPy append()
  3. 性能测试---商场模型分析
  4. Android Pie提供了自适应供电、神经网络API 1.1等新特性
  5. [ZZ]知名互联网公司Python的16道经典面试题及答案
  6. dubbo之注册管理中心
  7. 转 PHP编程过程中需要了解的this,self,parent的区别
  8. SubVersion(SVN) 服务器Windows安装指南
  9. 3. Swift 数组|字典|集合
  10. linux下的daemon进程