Oracle归档模式和非归档模式-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

Oracle归档模式和非归档模式

简介: Oracle归档模式和非归档模式 解释归档和非归档模式之间的不同和它们各自的优缺点? 答:归档模式是指可以备份所有的数据库transactions并恢复到任意一个时间点。

Oracle归档模式和非归档模式



解释归档和非归档模式之间的不同和它们各自的优缺点?

答:归档模式是指可以备份所有的数据库transactions并恢复到任意一个时间点。

        非归档模式则相反,不能恢复到任意一个时间点。

        但是非归档模式可以带来数据库性能上的少许提高。

记忆方式:归档模式>热备份>恢复任意时间点>性能少许下降

                      非归档模式>冷备份>恢复完全备份>性能少许提高


一。查看oracle数据库是否为归档模式:

  1. 1.select name,log_mode from v$database;  
  2. NAME               LOG_MODE  
  3. ------------------ ------------------------  
  4. QUERY             NOARCHIVELOG  
  5. 2.使用ARCHIVE LOG LIST 命令  
  6. Database log mode                 No Archive Mode  
  7. Automatic archival                   Disabled  
  8. Archive destination                  /data/oracle/product/10.2.0/db_1//dbs/arch  
  9. Oldest online log sequence     739  
  10. Current log sequence              741  
 
二。什么是Oracle归档模式?
  Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。
  如果数据库处于非归档模式,联机日志在切换时就会丢弃. 而在归档模式下,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。
  数据库使用归档方式运行时才可以进行灾难性恢复。
1.归档日志模式和非归档日志模式的区别
非归档模式只能做冷备份,并且恢复时只能做完全备份.最近一次完全备份到系统出错期间的数据不能恢复.
归档模式可以做热备份,并且可以做增量备份,可以做部分恢复.
用ARCHIVE LOG LIST 可以查看期模式状态时归档模式还是非归档模式
===============================================================
三。配置数据库的归档模式
 
改变非归档模式到归档模式:
Sql代码
  1. 1)SQL>SHUTDOWN NORMAL/IMMEDIATE;   先down下数据   
  2. 2)SQL>START MOUNT;                                启动数据库实例到mount状态,但不要打开   
  3. 3)SQL>ALTER DATABASE ARCHIVELOG;      设置数据库为归档日志模式   
  4. 4)SQL>ALTER DATABASE OPEN;                  打开数据库   
  5. 5)SQL>archive log list;                                确认数据库现在处于归档日志模式   
  6. 6)SQL>archive log all;                                 将这个时间点的redo logs归档  
[sql] view plain copy
  1. 1)SQL>SHUTDOWN NORMAL/IMMEDIATE;   先down下数据  
  2. 2)SQL>START MOUNT;                                启动数据库实例到mount状态,但不要打开  
  3. 3)SQL>ALTER DATABASE ARCHIVELOG;      设置数据库为归档日志模式  
  4. 4)SQL>ALTER DATABASE OPEN;                  打开数据库  
  5. 5)SQL>archive log list;                                确认数据库现在处于归档日志模式  
  6. 6)SQL>archive log all;                                 将这个时间点的redo logs归档  
 
 
5)SQL>做一次完全备份,因为非归档日志模式下产生的备份日志对于归档模式已经不可用了.这一步非非常重要!
Sql代码
  1. SQL>alter tablespace users begin bacup;  
[sql] view plain copy
  1. SQL>alter tablespace users begin bacup;  
 
====================
如果停止归档模式就用
alter database noarchivelog 
========================
 

改变归档模式到非归档模式:
Sql代码 
  1. 1)SQL>SHUTDOWN NORMAL/IMMEDIATE;         
  2. 2)SQL>START MOUNT;       
  3. 3)SQL>ALTER DATABASE NOARCHIVELOG;    
  4. 4)SQL>ALTER DATABASE OPEN;    
[sql] view plain copy
  1. 1)SQL>SHUTDOWN NORMAL/IMMEDIATE;        
  2. 2)SQL>START MOUNT;      
  3. 3)SQL>ALTER DATABASE NOARCHIVELOG;   
  4. 4)SQL>ALTER DATABASE OPEN;    
  
 

3.启用自动归档: LOG_ARCHIVE_START=TRUE
归档模式下,日志文件组不允许被覆盖(重写),当日志文件写满之后,如果没有进行手动归档,那么系统将挂起,知道归档完成为止.
这时只能读而不能写.
运行过程中关闭和重启归档日志进程
SQL>ARCHIVE LOG STOP
SQL>ARCHIVE LOG START
 
4.手动归档: LOG_ARCHIVE_START=FALSE
归档当前日志文件
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;
归档序号为052的日志文件
SQL>ALTER SYSTEM ARCHIVE LOG SEQUENCE 052;
归档所有日志文件
SQL>ALTER SYSTEM ARCHIVE LOG ALL;
改变归档日志目标
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT TO '&PATH';
 
5.归档模式和非归档模式的转换
 
第4步的逆过程.
 
6.配置多个归档进程
Q:什么时候需要使用多个归档进程?
A:如果归档过程会消耗大量的时间,那么可以启动多个归档进程,这是个动态参数,可以用ALTER SYSTEM动态修改.
SQL>ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=10;
Oracle9i中最多可以指定10个归档进程
与归档进程有关的动态性能视图
v$bgprocess,v$archive_processes
 

7.配置归档目标,多归档目标,远程归档目标,归档日志格式
归档目标 LOG_ARCHIVE_DEST_n
本地归档目标:
SQL>LOG_ARCHIVE_DEST_1 = "LOCATION=D:ORACLEARCHIVEDLOG";
远程归档目标:
SQL>LOG_ARCHIVE_DEST_2 = "SERVICE=STANDBY_DB1";
强制的归档目标,如果出错,600秒后重试:
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_4 = "LOCATION=E:ORACLEARCHIVEDLOG MANDATORY REOPEN=600";
可选的归档目标,如果出错,放弃归档:
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_3 = "LOCATION=E:ORACLEARCHIVEDLOG OPTIONAL";
 
归档目标状态:关闭归档目标和打开归档目标
关闭归档目标1
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1 = DEFER 
打开归档目标2
SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2 = ENABLE
 
归档日志格式
LOG_ARCHIVE_FORMAT
 
8.获取归档日志信息
V$ARCHVIED_LOG
V$ARCHVIE_DEST
V$LOG_HISTORY
V$DATABASE
V$ARCHIVE_PROCESSES
 
ARCHIVE LOG LIST;



oracle11g RAC 启动归档模式 

根据客户要求,需要将归档日志存放在ASM上。因此需要在ASM建归档路径

ASMCMD> mkdir arch

ASMCMD> cd arch

ASMCMD> pwd 
+data1/kdcs/arch

修改归档路径参数

SQL> alter system set log_archive_dest_1='location=+data1/kdcs/arch' scope=spfile sid='*';

System altered.

关闭数据库,全部节点都要关闭

[grid@zhcs-db1 ~]$ srvctl stop database -d kdcs

检查数据库关闭后状态

[grid@zhcs-db1 ~]$ crsctl stat res -t 
-------------------------------------------------------------------------------- 
NAME           TARGET  STATE        SERVER                   STATE_DETAILS       
-------------------------------------------------------------------------------- 
Local Resources 
-------------------------------------------------------------------------------- 
ora.DATA1.dg 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.LISTENER.lsnr 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.OCR_DISK.dg 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.asm 
               ONLINE  ONLINE       zhcs-db1                 Started             
               ONLINE  ONLINE       zhcs-db2                 Started             
ora.gsd 
               OFFLINE OFFLINE      zhcs-db1                                     
               OFFLINE OFFLINE      zhcs-db2                                     
ora.net1.network 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.ons 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.registry.acfs 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
-------------------------------------------------------------------------------- 
Cluster Resources 
-------------------------------------------------------------------------------- 
ora.LISTENER_SCAN1.lsnr 
      1        ONLINE  ONLINE       zhcs-db1                                     
ora.cvu 
      1        OFFLINE OFFLINE                                                   
ora.kdcs.db 
      1        OFFLINE OFFLINE                               Instance Shutdown   
      2        OFFLINE OFFLINE                               Instance Shutdown   
ora.kdcs.ser_scanip.svc 
      1        OFFLINE OFFLINE                                                   
      2        OFFLINE OFFLINE                                                   
ora.oc4j 
      1        ONLINE  ONLINE       zhcs-db2                                     
ora.scan1.vip 
      1        ONLINE  ONLINE       zhcs-db1                                     
ora.zhcs-db1.vip 
      1        ONLINE  ONLINE       zhcs-db1                                     
ora.zhcs-db2.vip 
      1        ONLINE  ONLINE       zhcs-db2         

将一个节点数据库启动到mount状态

[grid@zhcs-db1 ~]$ srvctl start instance -d kdcs -i kdcs1 -o mount

修改数据库的归档模式并启动数据库

SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

检查状态 
SQL> archive log list; 
Database log mode              Archive Mode 
Automatic archival             Enabled 
Archive destination            +DATA1/kdcs/arch 
Oldest online log sequence     86 
Next log sequence to archive   87 
Current log sequence           87 
SQL>

启动2节点数据库

[grid@zhcs-db1 ~]$ srvctl start instance -d kdcs -i kdcs2

检查集群状态

[grid@zhcs-db1 ~]$ crsctl stat res -t 
-------------------------------------------------------------------------------- 
NAME           TARGET  STATE        SERVER                   STATE_DETAILS       
-------------------------------------------------------------------------------- 
Local Resources 
-------------------------------------------------------------------------------- 
ora.DATA1.dg 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.LISTENER.lsnr 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.OCR_DISK.dg 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.asm 
               ONLINE  ONLINE       zhcs-db1                 Started             
               ONLINE  ONLINE       zhcs-db2                 Started             
ora.gsd 
               OFFLINE OFFLINE      zhcs-db1                                     
               OFFLINE OFFLINE      zhcs-db2                                     
ora.net1.network 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.ons 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
ora.registry.acfs 
               ONLINE  ONLINE       zhcs-db1                                     
               ONLINE  ONLINE       zhcs-db2                                     
-------------------------------------------------------------------------------- 
Cluster Resources 
-------------------------------------------------------------------------------- 
ora.LISTENER_SCAN1.lsnr 
      1        ONLINE  ONLINE       zhcs-db1                                     
ora.cvu 
      1        OFFLINE OFFLINE                                                   
ora.kdcs.db 
      1        ONLINE  ONLINE       zhcs-db1                 Open                
      2        ONLINE  ONLINE       zhcs-db2                 Open                
ora.kdcs.ser_scanip.svc 
      1        ONLINE  ONLINE       zhcs-db1                                     
      2        ONLINE  ONLINE       zhcs-db2                                     
ora.oc4j 
      1        ONLINE  ONLINE       zhcs-db2                                     
ora.scan1.vip 
      1        ONLINE  ONLINE       zhcs-db1                                     
ora.zhcs-db1.vip 
      1        ONLINE  ONLINE       zhcs-db1                                     
ora.zhcs-db2.vip 
      1        ONLINE  ONLINE       zhcs-db2                                     
[grid@zhcs-db1 ~]$




RMAN备份及恢复归档日志的语法 

一.备份所有归档日志文件
   RMAN> backup archivelog all delete input;
二: restore archivelog 的各种选项
   1.恢复全部归档日志文件
     RMAN> restore archivelog all;
   2.只恢复5到8这四个归档日志文件
     RMAN> restore archivelog from logseq 5 until logseq 8;
   3.恢复从第5个归档日志起
     RMAN> restore archivelog from logseq 5;
   4.恢复7天内的归档日志
     RMAN> restore archivelog from time 'sysdate-7';
   5. sequence between 写法
     RMAN> restore archivelog sequence between 1 and 3;
   6.恢复到哪个日志文件为止
     RMAN> restore archivelog until logseq 3;
   7.从第五个日志开始恢复
     RMAN> restore archivelog low logseq 5;
   8.到第5个日志为止
     RMAN> restore archivelog high logseq 5;
三:如果想改变恢复到另外路径下 则可用下面语句
   set archivelog destination to 'd:\backup';

   RMAN> run
   2> {allocate channel ci type disk;
   3> set archivelog destination to 'd:\backup';
   4> restore archivelog all;
   5> release channel ci;
   6> }

 




【MOS】配置RMAN清除已应用到备库的归档日志 (文档 ID 1577382.1) 

文档内容

目标
解决方案
参考


适用于:

Oracle Database - Enterprise Edition - 版本 10.2.0.1 到 10.2.0.5 [发行版 10.2]
本文档所含信息适用于所有平台

目标

我们需要利用RMAN自动从FRA清除已经应用到备库的归档日志。

 

 

1) Bug 6216036:

在10g中,使用CONFIGURE命令配置的归档日志删除策略
仅适用于自动删除闪回恢复区的归档日志。
其他的删除机制,如DELETE ARCHIVELOG或DELETE INPUT不遵守这个配置。


2)APPLIED ON STANDBY - 启用闪回恢复区删除已应用在属性为mandatory的备库的归档日志。

更多信息请查看 Oracle Data Guard Concepts and Administration

http://docs.oracle.com/cd/B19306_01/backup.102/b14194/rcmsynta015.htm#sthref289


在11g此限制已解除。

 

 

解决方案

DataGuard的配置中,当数据库满足下列条件时,FRA下的归档日志将被自动清除,。如果您需要在主库清除,将其设置在主库。

1) 11g之前,如果不使用mandatory ARCHIVELOG目标,数据库(主库和备库)必须更改下面的参数并重新启动:      

SQL> alter system set "_log_deletion_policy"='ALL' scope=spfile;

2) 在RMAN中配置下列参数(主库和备库):

    RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;

 

警告:对于10g,如果设置了APPLIED ON STANDBY, 即使FRA 中的文件没有备份也会被清除。

 11g: 从11g 开始,我们对归档日志删除策略的配置进行了增强,包含了 APPLIED ON [ALL] STANDBY [BACKED UP n TIMES TO DEVICE TYPE ] 选项。该选项确认归档日志已经被应用,并且在主库进行过备份后才可以被清除。

 

3) 归档日志必须已应用到备库。运行下面的查询列出所有已应用到备库的归档日志:

select a.thread#, a.sequence#, a.applied
from v$archived_log a, v$database d
where a.activation# = d.activation#
and a.applied='YES'
/

4) FRA有空间压力

当归档日志从FRA自动删除,你会看到数据库的alert.log报出以下信息:

Sat Jun 18 01:00:32 2011
Deleted Oracle managed file /opt/app/oracle/FRA/ORA102/archivelog/2011_05_30/o1_mf_1_151_6y71q675_.arc
Deleted Oracle managed file /opt/app/oracle/FRA/ORA102/archivelog/2011_05_31/o1_mf_1_151_6y87pzg4_.arc


 

参考

NOTE:331924.1 - RMAN backups in Max Performance/Max Availability Data Guard Environment
BUG:6216036 - RMAN+DG ARCHIVELOG DELETION POLICY APPLIED ON STANDBY NOT RESPECTED
NOTE:740322.1 - RMAN Archived Redo Logs Are Deleted Before Being Applied at Standby Database










ORA-00257  删除归档日志






 

>

 

>

 

>

 

>

 

>

      

 

>

 

>

 

>

 

>

 

>

     

  






    

img_e3029f287d989cd04bd75432ecc1c172.png
DBA笔试面试讲解
欢迎与我联系

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: