ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【ARCHIVELOG】Oracle 归档日志(转载)

【ARCHIVELOG】Oracle 归档日志(转载)

原创 Linux操作系统 作者:chicheng_cn421 时间:2011-07-26 00:29:42 0 删除 编辑

一份相当不错的关于Oracle归档日志的文章,如获至宝,mark一下,备忘。

原文地址:http://space.itpub.net/22578826/viewspace-702989

Oracle 归档日志

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

-- 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阶段(alterdatabaseopen)

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

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

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

           Databaselogmode             NoArchive Mode

           Automatic archival            Disabled

           Archive destination           USE_DB_RECOVERY_FILE_DEST

           Oldest onlinelogsequence    14

           Currentlogsequence          16

           SQL>SELECTlog_modeFROMv$database; --查看数据库是否处于归档模式

 

           LOG_MODE

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

           NOARCHIVELOG       

 

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

           Databaseclosed.

           Databasedismounted.

           ORACLE instance shut down.

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

           ORACLE instance started.

 

           Total System Global Area 251658240 bytes

           FixedSize                 1218796 bytes

           VariableSize             75499284 bytes

           DatabaseBuffers         171966464 bytes

           Redo Buffers               2973696 bytes

           Databasemounted.

           SQL>ALTERDATABASEARCHIVELOG; --切换到自动归档模式

           Databasealtered.

           SQL>ALTERDATABASEOPEN;       --切换到open状态

           Databasealtered.

           SQL>ARCHIVELOGLIST;          --查看数据库的归档状态

           Databaselogmode             Archive Mode   --已置为归档模式

           Automatic archival            Enabled        --对日志进行自动归档

           Archive destination           USE_DB_RECOVERY_FILE_DEST

           Oldest onlinelogsequence    14

           Nextlogsequencetoarchive  16

           Currentlogsequence          16

           --备份数据库步骤省略

 

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

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

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

       c.切换到归档模式(alterdatabasenoarchivelog )

       d.切换到open阶段(alterdatabaseopen)

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

       

   3.手动归档

       手动归档时需要将日志模式切换为alterdatabasearchivelogmanual

       再使用altersystem archivelogcurrent|all实现归档

       更多手动归档命令:ALTER SYSTEM archive_log_clause

       注意:

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

           alterdatabasearchivelog模式下也可以实现对日志的归档

           

           SQL>ALTERDATABASEARCHIVELOGMANUAL;    --将日志模式切换为手工归档模式

 

           Databasealtered.

 

           SQL>ALTERDATABASEOPEN;                 --打开数据库

 

           Databasealtered.

 

           SQL>ALTERSYSTEM ARCHIVELOGCURRENT;    --对当前的日志进行归档(建议在mount阶段完成)

 

           System altered.

 

           SQL>ALTERSYSTEM ARCHIVELOGALL;        --对所有的日志进行归档

           altersystem archivelogall

           *

           ERROR at line 1:

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

 

   4.归档进程的调整

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

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

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

       修改方法

           ALTERSYSTEMSETLOG_ARCHIVE_MAX_PROCESSES=3;

   

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

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

           设置LOG_ARCHIVE_DESTLOG_ARCHIVE_DUPLEX_DEST参数

           altersystemsetlog_archive_dest='/u01/app/oracle/archivelog1'scope=spfile;

           altersystemsetlog_archive_duplex_dest='/u01/app/oracle/archivelog2'scope=spfile;

           

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

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

           altersystemsetlog_archive_dest_1='LOCATION=/u01/app/oracle/archivelog3';

           altersystemsetlog_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_destlog_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 RESETLOGSID.

           altersystemsetlog_archive_format='arch_%t_%s_%r.arc';

           

       e.归档位置状态

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

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

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

           

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

           altersystemsetlog_archive_min_succeed_dest=2;  --缺省为1

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

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

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

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

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

       

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

           altersystemsetlog_archive_dest_state_1=enable|defer

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

           defer  -->禁用该归档位置

           

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

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

           Databaselogmode             Archive Mode

           Automatic archival            Enabled

           Archive destination           USE_DB_RECOVERY_FILE_DEST

           Oldest onlinelogsequence    24

           Nextlogsequencetoarchive  26

           Currentlogsequence          26

 

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

           oracle   4062    1 0 11:43 ?       00:00:00 ora_arc0_orcl

           oracle   4064    1 0 11:43 ?       00:00:00 ora_arc1_orcl

 

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

 

           NAME                                TYPE       VALUE

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

           archive_lag_target                  integer    0

           log_archive_config                  string

           log_archive_dest                    string

           log_archive_dest_1                  string

           log_archive_dest_10                 string

           log_archive_dest_2                  string

           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

 

           NAME                                TYPE       VALUE

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

           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

 

           NAME                                TYPE       VALUE

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

           log_archive_dest_state_9            string     enable

           log_archive_duplex_dest             string

           log_archive_format                  string     %t_%s_%r.dbf

           log_archive_local_first             boolean    TRUE

           log_archive_max_processes           integer    2

           log_archive_min_succeed_dest        integer    1

           log_archive_start                   boolean    FALSE--该参数在9i中使用

           log_archive_trace                   integer    0

           remote_archive_enable               string     true

           standby_archive_dest                string     ?/dbs/arch

 

 

           SQL>altersystemsetlog_archive_dest='/u01/app/oracle/archivelog1'scope=spfile;

 

           System altered.

 

           SQL>altersystemsetlog_archive_duplex_dest='/u01/app/oracle/archivelog2'scope=spfile;

 

           System altered.

 

           SQL>altersystemsetlog_archive_format='arch_%t_%s_%r.arc'scope=spfile;

 

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

 

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

 

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

 

           SQL>altersystem archivelogcurrent; --手动进行归档

 

           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>altersystemsetlog_archive_dest_1='location=/u01/app/oracle/archivelog3'

            2scope=spfile;

 

           System altered.

 

           SQL> altersystemsetlog_archive_dest_2='location=/u01/app/oracle/archivelog4'

            2  scope=spfile;

 

           System altered.

 

           SQL>shutdownimmediate;      --关闭实例

           Databaseclosed.

           Databasedismounted.

           ORACLE instance shut down.

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

           ORA-16019:cannotuseLOG_ARCHIVE_DEST_1withLOG_ARCHIVE_DESTorLOG_ARCHIVE_DUPLEX_DEST

 

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

                                              SPFILE错误导致数据库无法启动

 

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

           SQL>altersystemsetlog_archive_dest=''scope=spfile;

 

           System altered.

          

           --此处是将log_archive_duplex_dest置空

           SQL>altersystemsetlog_archive_duplex_dest=''scope=spfile;

 

           System altered.

           

           --接下来再设定log_archive_dest_1log_archive_dest_2

           SQL>altersystemsetlog_archive_dest_1='location=/u01/app/oracle/archivelog3'

            2scope=spfile;

 

           System altered.

 

           SQL>altersystemsetlog_archive_dest_2='location=/u01/app/oracle/archivelog4'

            2 scope=spfile;

 

           System altered.

           

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

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

           

           SQL>altersystem archivelogcurrent; --进行手动归档

 

           System altered.

 

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

           total 27752

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

 

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

           total 27752

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

 

   SQL>col dest_name format a20; 

   SQL>col destination format a30;

   SQL>selectdest_name,status,archiver,destination,

    2 log_sequence,reopen_secs,transmit_mode,process

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

 

   DEST_NAME           STATUS   ARCHIVER  DESTINATION                   LOG_SEQUENCE REOPEN_SECS TRANSMIT_MOD PROCESS

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

   LOG_ARCHIVE_DEST_1  VALID    ARCH      /u01/app/oracle/archivelog3/            38        300 SYNCHRONOUS ARCH

   LOG_ARCHIVE_DEST_2  VALID    ARCH      /u01/app/oracle/archivelog4/            38        300 SYNCHRONOUS ARCH

   LOG_ARCHIVE_DEST_3  INACTIVE ARCH                                                0          0 SYNCHRONOUS ARCH

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

            

       SQL>altersystemsetlog_archive_dest_state_2=defer;  --停用log_archive_dest_state_2

 

       System altered.

 

       SQL>show parameter log_archive_dest_state

 

       NAME                                TYPE       VALUE

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

       log_archive_dest_state_1            string     enable

       log_archive_dest_state_10           string     enable

       log_archive_dest_state_2            string     DEFER    --该路径显示为defer

       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        

 

       SQL>altersystem archivelogcurrent;  --手动归档

 

       System altered.

 

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

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

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

       -rw------- 1 oracle oinstall 1788416 Aug 2 20:41 arc_1_39_724852763.arc

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

       -rw------- 1 oracle oinstall 30257664 Aug 2 22:22 arc_1_41_724852763.arc

       -rw------- 1 oracle oinstall 30257664 Aug 2 22:22 arc_1_42_724852763.arc

       -rw------- 1 oracle oinstall 6647296 Aug 2 22:23 arc_1_43_724852763.arc

 

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

       total 29504

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

       -rw------- 1 oracle oinstall 1788416 Aug 2 20:41 arc_1_39_724852763.arc

 

       SQL>altersystemsetlog_archive_dest_state_2=enable;--启用log_archive_dest_state_2

 

       System altered.

 

       SQL>altersystem archivelogcurrent;  --手动归档

 

       System altered.

 

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

       total 124856

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

       -rw------- 1 oracle oinstall 1788416 Aug 2 20:41 arc_1_39_724852763.arc

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

       -rw------- 1 oracle oinstall 30257664 Aug 2 22:22 arc_1_41_724852763.arc

       -rw------- 1 oracle oinstall 30257664 Aug 2 22:22 arc_1_42_724852763.arc

       -rw------- 1 oracle oinstall 6647296 Aug 2 22:23 arc_1_43_724852763.arc

       -rw------- 1 oracle oinstall   81408 Aug 2 22:25 arc_1_44_724852763.arc

 

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

       total 29588

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

       -rw------- 1 oracle oinstall 1788416 Aug 2 20:41 arc_1_39_724852763.arc

       -rw------- 1 oracle oinstall   81408 Aug 2 22:25 arc_1_44_724852763.arc

       

四、归档日志相关视图

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

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

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

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

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

   命令:archiveloglist

   

       SQL>select name,sequence#,registrar,standby_dest,archived,status

        2 fromv$archived_log;  

        NAME                                                    SEQUENCE# REGISTR STA ARC S

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

       /u01/app/oracle/archivelog4/arc_1_38_724852763.arc             38 FGRD   NO YES A

       /u01/app/oracle/archivelog3/arc_1_39_724852763.arc             39 ARCH   NO YES A

       /u01/app/oracle/archivelog4/arc_1_39_724852763.arc             39 ARCH   NO YES A

       /u01/app/oracle/archivelog3/arc_1_40_724852763.arc             40 ARCH   NO YES A

       /u01/app/oracle/archivelog3/arc_1_41_724852763.arc             41 ARCH   NO YES A

       /u01/app/oracle/archivelog3/arc_1_42_724852763.arc             42 ARCH   NO YES A

       /u01/app/oracle/archivelog3/arc_1_43_724852763.arc             43 ARCH   NO YES A

       /u01/app/oracle/archivelog3/arc_1_44_724852763.arc             44 FGRD   NO YES A

       /u01/app/oracle/archivelog4/arc_1_44_724852763.arc             44 FGRD   NO YES A


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20335819/viewspace-703090/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-03-05

  • 博文量
    261
  • 访问量
    368868