`
lishumingwm163.com
  • 浏览: 337923 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

oracle日志归档模式改变

 
阅读更多
在Oracle数据库中,主要有两种日志操作模式:归档模式(archivelog mode)及非归档模式(noarchivelog mode)。在默认情况下oracle数据库采用的是非归档模式。作为一个合格的DBA,应当深入了解这两种日志操作模式的特点,并且保证数据库运行在合适的日志操作模式下。在讲重做日志归档模式(archivelog mode)及非归档模式(noarchivelog mode)之前我们先简单的了解一下oracle的日志切换步骤。oracle数据库的重做日志是重复写的,一般来说oracle数据库拥有多个重做日志组(redo log group),每个重做日志组又包含多个成员(详细介绍请查考oracle官方文档),我们大部分的数据更改操作都会写入在线日志中,也就是当前正在使用的重做日志。当一个重做日志写满或DBA发出switch log命令的时候就会发生日志切换,如果oracle运行在非归档模式下,oracle直接覆盖写下一个重做日志组。如果oracle运行在归档模式下则oracle会查询即将写入的重做日志是否归档,没有归档则等待其归档,等归档完成以后再覆盖写入重做日志记录。当然如果发生了归档等待的话可以通过添加重做日志组或开启更多的归档进程来避免这个等待事件。总的来说重做日志归档模式(archivelog mode)及非归档模式(noarchive mode)的最重要的区别就是当前的重做日志切换以后会不会被归档进程(archive process)copy到归档目的地(log_archive_dest)。

      一. 非归档模式(noarchivelog mode)的利与弊

           当oracle数据库运行在非归档模式下,控制文件确定了发生日志切换以后重做日志文件不需要归档,同时对于(日志写进程)LGWR来说此重做日志组是可以直接使用的。非归档模式(noarchivelog mode)只能提供实例级别的故障恢复,需要介质恢复的时候oracle就爱莫能助了。如果很不幸的发生了,那么我们只能把数据库恢复到过去的某个时间点上,前提是你完全冷备份了数据库。从备份时间点到故障发生期间的所有数据都只有丢失了。而且当oracle运行在非归档模式(noarchivelog mode)下的时候数据库不提供在线的表空间备份,换句话说热备是不可用的。

      二. 归档模式(archivelog mode)的利与弊

           当oracle数据库运行在归档模式下,控制文件确定了发生日志切换后的重做日志文件在归档前是不能被日志写进程)LGWR重用的。归档模式(archivelog mode)下oracle数据库能从实例,介质的失败中得到恢复,当然最近一次的数据库全备及备份以来的所有归档日志的备份时必须的。同时我们还能利用归档日志的重放来完成oracle standby的搭建(oracle standby以后会介绍,请大家留意)。归档模式(archivelog mode)又可以分为手动归档和自动归档,顾名思义手动归档需要DBA的干预;而自动归档,oracle会自己完成归档任务。

      通过上面的简单描述我们应该对两种模式的利与弊有所了解了,但是具体选择哪种模式则需要我们从实际情况出发综合考虑。不过作为生产环境一般都是选用归档模式(archivelog mode)。接下来将要介绍一下当前模式的查询以及模式的切换。

      三. 当前模式查询

           可以通过以下方式查询当前数据库是运行在哪种模式下的:

           [oracle@localhost~]$ sqlplus "/ as sysdba"                                                                              
           SQL> archive log list
           Database log mode              Archive Mode
           Automatic archival             Enabled
           Archive destination            /u01/oradata/archive_sid
           Oldest online log sequence     9975
           Next log sequence to archive   9977
           Current log sequence           9977

           SQL> select name,log_mode from v$database;

           NAME      LOG_MODE
           --------- ------------
           SID      ARCHIVELOG   
      四. 模式切换

           oracle数据库日志操作模式的切换主要有两种: 1. 非归档模式(noarchivelog mode)-> 归档模式(archivelog mode) 2. 归档模式(archivelog mode)-> 非归档模式(noarchivelog mode)。两种模式的切换步骤大致都是相同的,只是在细微处有所差别。当日志操作模式由归档模式切换到非归档模式的时候需要保证数据不需要介质恢复,也就是说数据库能正常打开。下面主要介绍一下数据库由非归档模式(noarchivelog mode)-> 归档模式(archivelog mode)。

           1. 关闭数据

               shutdown,最好是正常关闭(不使用abort选项)

           2. 备份数据库

               为了防止在模式切换的时候发生不可预知的错误,请先备份一下数据库

           3. 启动数据库到mount状态

               SQL>startup mount

               SQL>alter database archivelog;

               SQL>alter system set log_archive_dest_1/log_archive_format .... --如果有必要则修改归档目的,归档文件名等参数

               SQL>alter database force logging;         --可选,强制记录日志。

           4. 重启数据库

      五. 相关参数简介

           在oracle 10g R2中与归档相关的参数有:

           SQL> show parameter archive;

           NAME                                 TYPE        VALUE
           ------------------------------------ ----------- ------------------------------
           archive_lag_target                   integer     3600
           log_archive_config                   string
           log_archive_dest                     string
           log_archive_dest_1                   string      location=/u01/oradata/archive_sid
           log_archive_dest_10                  string
           log_archive_dest_2                   string      SERVICE=tnsname
           log_archive_dest_3                   string
           log_archive_dest_4                   string
           log_archive_dest_5                   string
           log_archive_dest_6                   string
           log_archive_dest_7                   string
           log_archive_dest_8                   string
           log_archive_dest_9                   string
           log_archive_dest_state_1             string      enable
           log_archive_dest_state_10            string      enable
           log_archive_dest_state_2             string      enable
           log_archive_dest_state_3             string      enable
           log_archive_dest_state_4             string      enable
           log_archive_dest_state_5             string      enable
           log_archive_dest_state_6             string      enable
           log_archive_dest_state_7             string      enable
           log_archive_dest_state_8             string      enable
           log_archive_dest_state_9             string      enable
           log_archive_duplex_dest              string
           log_archive_format                   string      arch_%t_%s_%r
           log_archive_local_first              boolean     TRUE
           log_archive_max_processes            integer     2
           log_archive_min_succeed_dest         integer     1
           log_archive_start                    boolean     FALSE
           log_archive_trace                    integer     0
           remote_archive_enable                string      true
           standby_archive_dest                 string      ?/dbs/arch

           其中log_archive_dest_n为归档日志存放的地址,可以使远程的也可以是本地。在10g r2中最多支持10个归档目的地(这个数目也就限制了standby的数量最多有9个);与之相对应的是log_archive_dest_state_n,此参数决定了log_archive_dest_n的设置是否启用。参数log_archive_format确定了归档日志文件的名称%t表示归档线程号,%s表示日志序列号,t%是重置日志ID(包含时间戳)。参数log_archive_max_processes确定了启动多少个归档进程。这几个参数对于我们来说是比较重要的,当然其他的参数也需要了解,具体的介绍请参考oracle administrator guid        
=============================================================================================

原文地址:http://xsbceq.blog.163.com/blog/static/421508120071011103325480/

一. 确认日志工作模式:

1.查询v$database

SQL> select log_mode from v$database;

LOG_MODE

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

ARCHIVELOG

表明目前数据库运行在归档日志下,即数据库在归档日志模式下工作。

2.执行命令archive log list;

SQL> archive log list


归档模式,但是目前自动存档进程未启用!

数据库日志模式            存档模式
自动存档             禁用

存档终点            D:\oracle\ora92\RDBMS

最早的概要日志序列     214

下一个存档日志序列   214

当前日志序列           216

二.修改日志工作模式

1、由NOARCHIVELOG模式到ARCHIVELOG模式

第一步骤:关闭数据库

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

第二步骤:启动数据库至MOUNT状态

SQL> startup mount;

ORACLE 例程已经启动。

Total System Global Area 135338868 bytes

Fixed Size                   453492 bytes

Variable Size             109051904 bytes

Database Buffers           25165824 bytes

Redo Buffers                 667648 bytes

数据库装载完毕。

第三步骤:执行命令alter database archivelog;进行修改

SQL> alter database archivelog;

数据库已更改。

第四步骤:确认结果

SQL> archive log list;

数据库日志模式            存档模式

自动存档             启用

存档终点            D:\oracle\ora92\RDBMS

最早的概要日志序列     183

下一个存档日志序列   185

当前日志序列           185

数据库已经运行在归档日志模式下了。

第五步:打开数据库,将数据库改变至OPEN状态

SQL> alter database open;
数据库已更改。

2、由ARCHIVELOG模式到NOARCHIVELOG模式

第一步骤:关闭数据库

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

第二步骤:启动数据库至MOUNT状态

SQL> startup mount;

ORACLE 例程已经启动。

Total System Global Area 135338868 bytes

Fixed Size                   453492 bytes

Variable Size             109051904 bytes

Database Buffers           25165824 bytes

Redo Buffers                 667648 bytes

数据库装载完毕。

第三步:执行命令alter database noarchivelog;进行修改

SQL> alter database noarchivelog;

数据库已更改。

第四步骤:确认执行结果

SQL> select log_mode from v$database;

LOG_MODE

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

NOARCHIVELOG

我们看到数据库又改变为在非归档模式下工作了。

第五步:打开数据库,将数据库改变至OPEN状态

SQL> alter database open;

数据库已更改。

三.修改自动归档模式

我们看到数据库尽管运行在归档模式下,但是自动归档进程并未启用,在这种状态下我们还需要手工执行归档命令,归档日志才可以产生,如何使得数据库自动归档?

有种方法可以实现:

1.第一种方式:

将数据库加载至MOUNT状态,然后执行命令:alter system archive log start;

SQL> alter system archive log start;

系统已更改。

查看结果:

SQL> archive log list;

数据库日志模式            存档模式

自动存档             启用

存档终点            D:\oracle\ora92\RDBMS

最早的概要日志序列     183

下一个存档日志序列   185

当前日志序列           185

这种方式的缺点:更改并非持久的,即如果重新启动数据库,则对数据库所做出的修改又无效了。

2.第二种方式:

通过修改PFILE文件实现持久性修改:

在PFILE文件:init.ora中加入

log_archive_start = true

然后通过PFILE文件加载数据库

SQL> startup pfile='D:\oracle\admin\libn\pfile\init.ora' mount;

ORACLE 例程已经启动。

Total System Global Area 135338868 bytes

Fixed Size                   453492 bytes

Variable Size             109051904 bytes

Database Buffers           25165824 bytes

Redo Buffers                 667648 bytes

数据库装载完毕。

这是再查看数据库已经运行在自动存档模式下了。

四.存档参数修改

init.ora文件中可以包含不同的参数,以便指定应该对存档的重做日志文件制作的副本数量、存储这些副本的位置,甚至是存档文件的文件名的格式。此外,还可以指定使用多少个存档进程来创建存档的文件。

目标参数

LOG_ARCHIVE_DEST

LOG_ARCHIVE_DUPLEX_DEST

只需要将参数键入init.ora文件,后面加上预期的存档位置即可。

log_archive_start = true

log_archive_dest=D:\oracle\ora92\rdbms

log_archive_duplex_dest=D:\oracle\ora92\rdbms

LOG_ARCHIVE_DEST_N

LOG_ARCHIVE_DEST_N参数(其中的N是一个指定的位置,范围是1——10)允许最多指定10个位置来存储存档的文件。此外,其中一个位置可以位于一台不同的计算机上,如文件服务器或备用计算机站点的远程位置,以便在主要的计算机中心发生自然灾害或者人为事故时使用.

注意:这两组参数不能同时使用。

五.归档文件名参数

LOG_ARCHIVE_FORMAT

文件名选项


选 项


说 明



%s 包括日志序列号,作为文件名的一部分



%S 包括日志序列号并使用0填充左侧,作为文件名的一部分


%t 包括线程号,作为文件名的一部分



%T  包括线程号并使用0填充左侧,作为文件名的一部分
分享到:
评论

相关推荐

    如何查看、启动或关闭oracle数据库的归档模式

    ### 如何查看、启动或关闭Oracle数据库的归档模式 #### 归档模式概述 在Oracle数据库中,归档模式(Archivelog Mode)是一种重要的数据保护机制,它允许数据库在发生故障时进行完整的恢复。当数据库处于归档模式时...

    分析Oracle8i/9i的重做日志和归档日志

    在Oracle数据库中,日志操作模式分为非归档模式和归档模式。非归档模式下,数据库仅保留当前活动的日志文件,不保存历史记录,这只能保护数据库免受实例失败的影响,但无法应对介质故障。当日志文件填满后,新的事务...

    oracle的归档模式 ORACLE数据库归档日志常用命令

    Oracle数据库归档模式是指当数据库处于归档模式时,其重做日志文件会在写满后被自动归档到指定的归档日志目录。归档日志是Oracle数据库中用于记录所有对数据库所做的修改操作(例如插入、删除、更新等操作)的文件,...

    删除ORACLE归档日志

    1. **归档模式**:当Oracle数据库运行在归档模式下,每次数据库完成一个事务,相关的重做日志条目不仅写入在线重做日志文件,还会被复制到归档日志文件中,这样可以确保在介质故障后能恢复数据。 2. **归档日志文件...

    oracle 归档模式

    ### Oracle归档模式详解 #### 一、归档模式简介 在Oracle数据库中,归档模式(Archivelog Mode)是一种重要的数据保护...通过以上步骤,可以在Oracle 9i RAC环境中成功更改归档模式,并有效地管理和保护归档日志。

    Oracle 12c实战归档日志文件

    - **定义**:在归档模式下,联机重做日志文件在日志切换时会被自动归档。 - **适用场景**:强烈建议生产环境下的数据库使用归档模式,因为它提供了更全面的数据保护和恢复能力。 - **特点**: - 日志切换时,下一个...

    oracle开启归档

    在这种模式下,数据库实例已启动,但数据库本身并未完全打开,这使得可以执行某些管理任务,如改变数据库归档模式。 ##### 4. 查看归档状态 - 在MOUNT模式下,可以通过`archive log list`命令来检查数据库当前...

    ORACLE 10G归档设置

    Oracle 10G数据库的归档设置是数据库管理...通过以上步骤,你可以成功地在Oracle 10G数据库中启用或关闭归档模式,保证数据的安全性和可恢复性。不过,实际操作中应根据具体环境和需求进行调整,确保数据库的稳定运行。

    关于oracle日志文件.docx

    主要的Oracle日志类型包括: 1. **Redo log files (联机日志或重做日志)**: 这些日志记录了所有对数据库的改变,无论是通过DML(数据操纵语言)如INSERT、UPDATE、DELETE,还是DDL(数据定义语言)如CREATE、ALTER...

    Oracle中用LogMiner分析重做及归档日志

    在Oracle数据库中,有非归档模式(NOARCHIVELOG)和归档模式(ARCHIVELOG)两种日志管理方式: 1. 非归档模式: - 在这种模式下,数据库仅保留当前正在使用的重做日志,无法保护介质故障。当一个日志文件被填满,...

    Oracle切换为归档模式的步骤及问题解决

     可查看当前数据库的模式,若“数据库日志模式 非存档模式”则有必要进行以下的切换流程。 在切换之前,请确保以下参数的设置 log_archive_dest_n 参数设置归档日志目标,其中n用数字替换。在Oracle9i中n的范围是1...

    oracle归档备份SQL语句版初学者适用

    在Oracle数据库中,归档日志模式(Archived Log Mode)是一种运行模式,它允许系统在发生数据改变时同时记录到在线redo log和归档redo log中。归档日志是数据库事务提交后生成的,包含这些事务的所有更改信息,用于...

    oracle日志分析

    1. **初始化**: 在使用LogMiner之前,需要对数据库进行配置,确保数据库开启了归档模式,并且重做日志文件被正确地生成。 2. **构建词典**: 使用`DBMS_LOGMNR.DICT_CREATE`或`DBMS_LOGMNR.DICT_REGISTER`来创建或...

    oracle日志

    每个实例都有自己的在线redo log,当切换发生时,这些日志被归档以保持历史记录,这就是归档日志模式。在RAC环境下,redo logs需要在多个节点之间共享,因此必须处理好I/O竞争和同步问题。 另一方面,alert log是每...

    ORACLE备份策略 (ORACLE BACKUP STRATEGY)

    归档模式(ARCHIVELOG)和非归档模式(NOARCHIVELOG)是Oracle数据库的两种运行方式。归档模式允许数据库在发生故障后恢复到任意时间点,因为它记录所有更改的历史。这使得数据库高度可用,但需要额外的存储空间来...

    利用LogMiner分析Oracle日志文件.pdf

    1. 打开数据库的归档模式,确保日志文件被完整记录。 2. 选择要分析的时间段,收集对应的redo log文件。 3. 使用LogMiner工具启动分析会话,指定日志文件。 4. 分析提取出的SQL语句和事务信息,查找特定的更改操作。...

    Oracle数据库备份技术【入门到精通】

    - 归档模式 (ARCHIVELOG): 在这种模式下,Oracle记录所有事务的redo日志,使得数据库能够恢复到任何时间点。这是用于生产环境的推荐模式,因为它允许最大程度的数据恢复。 - 非归档模式 (NOARCHIVELOG): 此模式下...

    oracle 数据库实例 篇

    归档模式记录了所有改变数据库状态的事务,使得在需要时能精确恢复到某个时间点。启用归档模式的命令是`ALTER DATABASE ARCHIVELOG`,而在非归档模式下,一旦发生故障,只能恢复到最近的完整备份时间点。 热备份的...

    计算机等考三级数据库基础:rac环境下更改归档模式.docx

    在Oracle数据库环境中,特别是在Real Application Clusters (RAC)架构下,管理归档模式是一项复杂的任务,因为涉及多个节点的同步和数据一致性。RAC是一种高可用性解决方案,允许多个实例同时访问同一个数据库,因此...

    ORACLE备份策略

    Oracle提供了归档模式和非归档模式两种运行方式。归档模式下,数据库在发生故障后可以完全恢复,不丢失任何已提交的数据,适合高可用性要求的生产环境。非归档模式下,只能恢复到最近的检查点,适合开发和测试环境。...

Global site tag (gtag.js) - Google Analytics