【转载】oracle归档日志相关资料

来源:互联网 发布:三维模型查看软件 编辑:程序博客网 时间:2024/06/03 15:37

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

 

一、归档日志

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

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

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

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

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

   归档日志用途

       恢复数据库

       更新standby数据库

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

       

二、日志的两种模式

   1.非归档模式

      不适用与生产数据库

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

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

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

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

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

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

 

   2.归档模式

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

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

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

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

       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.对数据做一个完整备份(full backup)

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

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

           Database logmode             No Archive Mode

           Automaticarchival            Disabled

           Archivedestination           USE_DB_RECOVERY_FILE_DEST

           Oldest online logsequence    14

           Current logsequence          16

           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 Area  251658240bytes

           Fixed Size                 1218796 bytes

           Variable Size             75499284 bytes

           DatabaseBuffers         171966464 bytes

           RedoBuffers               2973696 bytes

           Database mounted.

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

           Database altered.

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

           Database altered.

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

           Database logmode             Archive Mode   --已置为归档模式

           Automaticarchival            Enabled        --对日志进行自动归档

           Archivedestination           USE_DB_RECOVERY_FILE_DEST

           Oldest online logsequence    14

           Next log sequence to archive  16

           Current logsequence          16

           --备份数据库步骤省略

 

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

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

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

       c.切换到归档模式(alter databasenoarchivelog  )

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

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

       

   3.手动归档

       手动归档时需要将日志模式切换为alter database archivelogmanual

       再使用alter systemarchive log current |all 实现归档

       更多手动归档命令:ALTERSYSTEM archive_log_clause

       注意:

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

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

           

           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_DESTLOG_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 manadatoryreopen = 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.

           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 logmode             Archive Mode

           Automaticarchival            Enabled

           Archivedestination           USE_DB_RECOVERY_FILE_DEST

           Oldest online logsequence    24

           Next log sequence to archive  26

           Current logsequence          26

 

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

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

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

 

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

 

           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> 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:39arch_1_26_724852763.arc

 

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

           total 18224

           -rw------- 1 oracle oinstall 18636800 Jul 28 20:39arch_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'

            2 scope = spfile;

 

           System altered.

 

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

             scope = spfile;

 

           System altered.

 

           SQL> shutdown immediate;      --关闭实例

           Database closed.

           Database dismounted.

           ORACLE instance shut down.

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

           ORA-16019: cannot useLOG_ARCHIVE_DEST_1 withLOG_ARCHIVE_DEST orLOG_ARCHIVE_DUPLEX_DEST

 

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

                                              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_1log_archive_dest_2

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

            2 scope = spfile;

 

           System altered.

 

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

             scope= 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 28382208Aug  2 13:46arc_1_38_724852763.arc

 

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

           total 27752

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

 

   SQL> col dest_name formata20; 

   SQL> col destination formata30;

   SQL> select dest_name,status,archiver,destination,

     log_sequence,reopen_secs,transmit_mode,process

     from v$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 SYNCHRONOUS  ARCH

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

            

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

 

       System altered.

 

       SQL> show parameterlog_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> alter system archive log current;  --手动归档

 

       System altered.

 

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

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

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

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

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

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

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

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

 

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

       total 29504

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

       -rw------- 1 oracle oinstall  1788416Aug  2 20:41arc_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 28382208Aug  2 13:46arc_1_38_724852763.arc

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

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

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

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

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

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

 

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

       total 29588

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

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

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

       

四、归档日志相关视图

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

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

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

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

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

   命令:archivelog list

   

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

         from v$archived_log;  

         NAME                                                    SEQUENCE# REGISTR STA ARC S

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

       /u01/app/oracle/archivelog4/arc_1_38_724852763.arc             38 FGRD   NO  YESA

       /u01/app/oracle/archivelog3/arc_1_39_724852763.arc             39ARCH   NO  YESA

       /u01/app/oracle/archivelog4/arc_1_39_724852763.arc             39 ARCH   NO  YESA

       /u01/app/oracle/archivelog3/arc_1_40_724852763.arc             40 ARCH   NO  YESA

       /u01/app/oracle/archivelog3/arc_1_41_724852763.arc             41ARCH   NO  YESA

       /u01/app/oracle/archivelog3/arc_1_42_724852763.arc             42 ARCH   NO  YESA

       /u01/app/oracle/archivelog3/arc_1_43_724852763.arc             43 ARCH   NO  YESA

       /u01/app/oracle/archivelog3/arc_1_44_724852763.arc             44 FGRD   NO  YESA

       /u01/app/oracle/archivelog4/arc_1_44_724852763.arc             44 FGRD   NO  YESA

 

原创粉丝点击