怎样将Oracle数据库设置为归档模式及非归档模式

Posted scwdqq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样将Oracle数据库设置为归档模式及非归档模式相关的知识,希望对你有一定的参考价值。

怎样将Oracle数据库设置为归档模式及非归档模式

1.Oracle日志分类 

分三大类: Alert log files--警报日志,Trace files--跟踪日志(用户和进程)和 redo log 重做日志(记录数据库的更改)。

归档日志(Archive Log)是非活动的重做日志备份.通过使用归档日志,可以保留所有重做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换时,后台进程ARCH会将重做日志的内容保存到归档日志中,当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库。在Oracle10g中,只要启动数据库的归档模式,Oracle就会启用自动归档,从而避免了10g以前由于用户疏忽所带来的一系列问题。

日志操作模式:ARCHIVELOG(归档),NOARCHIVELOG(非归档)

 

(2.设置归档日志文件路径)
SQL>alter system setlog_archive_dest_1=‘location=/u01/arch‘;该语句含义是设置归档日志文件的存放路径,实际上Oracle 10g以后可以生成多份一样的日志,保存多个位置以防不测
例如再添加一个归档日志文件存放位置可使用以下语句SQL>altersystem set log_archive_dest_2=‘location=/u02/arch ‘;
“location=/u01/arch”此目录是要从根目录开始的一个完整的目录
详细介绍归档日志文件的存放的两种方法:

方法一、使用log_archive_dest和log_archive_duplex_dest配置归档位置

如果不使用备用数据库,只需要将归档日志存放到本地目录.配置本地归档位置可以使用初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST,其中,第一个参数用于设置第一个归档位置,第二个参数用于设置第二个归档位置.

ALTER SYSTEM SET log_archive_dest=‘/u01/arch‘;

ALTER SYSTEM SET log_archive_duplex_dest=‘/u01/arch‘;


方法二、使用LOG_ARCHIVE_DEST_n配置多个归档位置.
初始化参数LOG_ARCHIVE_DEST_n用于指定多个归档位置,该参数最多可以指定10个归档位置.通过使用初始化参数LOG_ARCHIVE_DEST_n,不仅可以配置本地归档位置,还可以配置远程归档位置. 如果既要在主节点上生成归档日志,又要将归档日志传递到备用节点,那么必须使用参数LOG_ARCHIVE_DEST_n.
两种方法的比较:
1)         方法二可以配置本地和远程归档目录,而方法一只能配置本地归档目录.
2)         方法二可以配置多达10个归档目录,方法一最多只能配置两个归档目录.
3)         如果用方法一那么log_archive_dest是强制(MANDATORY)归档目录,而log_archive_duplex_dest为可选(OPTIONAL)归档目录,且第一种方法中不能使用REOPEN关键字
4)         方法一与方法二是互拆的,设置了方法一参数就不能再设置方法二的参数反之亦然
 
当使用初始化参数LOG_ARCHIVE_DEST_n配置本地归档位置时,需要指定LOCALTION选项.当配置远程归档位置时,需要指定SERVICE选项.

示例如下:
ALTER SYSTEM SET log_archive_dest_1=‘location=/u01/arch‘;

ALTER SYSTEM SET log_archive_dest_2=‘location=/u02/arch‘;

ALTER SYSTEM SET log_archive_dest_3=‘service=standby‘;

配置远程归档位置时,SERVICE选项需要指定远程数据库的网络服务名(在tnsnames.ora文件中配置)
 
 
使用LOG_ARCHIVE_DEST_n的关键字
使用初始化参数LOG_ARCHIVE_DEST_n配置归档位置时,可以在归档位置上指定OPTIONAL或MANDATORY选项;指定MANDATORY选项时,可以设置REOPEN属性.

OPTIONAL:该选项是默认选项.使用该选项时,无论归档是否成功,都可以覆盖重做日志.

MANDATORY:强制归档.使用该选项时,只有在归档成功之后,重做日志才能被覆盖,在设置时至少应该有一个本地(location)强制(mandatory)归档目录
REOPEN:该属性指定如果归档不成功尝试重新归档的时间间隔,默认值为300秒,必须跟在MANDATORY后.

例如:
Alter system set log_archive_dest_1=’location=/u01/arch mandatory’;

Alter system set log_archive_dest_2=’location=/u02/arch mandatory reopen=500’;

Alter system set log_archive_dest_3=’location=/u03/arch optional’;
 
控制本地归档成功的最小个数
使用初始化参数LOG_ARCHIVE_MIN_SUCCEED_DEST控制本地归档的最小成功个数
alter system set log_archive_min_succeed_dest=2;

如上设置为2就说明至少要有2个归档目录归档成功后redo日志才能被重写;如果log_archive_dest_n中的mandatory关键字个数大于这个参数那么此参数值失效,只有小于这个数的时候这个参数才有效
 
使用初始化参数LOG_ARCHIVE_DEST_STATE_n控制归档位置的可用性
设置该参数为ENABLE(默认值),表示会激活相应的归档位置;设置该参数为DEFER/DISABLE,表示禁用相应归档位置.当归档日志所在磁盘损坏或填满时,DBA需要暂时禁用该归档目录.

Alter system set log_archive_dest_state_3=defer/disable;(禁用)

Alter system set log_archive_dest_state_3=enable;(启用)

 
配置归档文件格式 SQL> alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile(指定归档日志文件的格式);
当数据库处于ARCHIVELOG模式时,如果进行日志切换,后台进程将自动生成归档日志目录,归档日志的默认位置为%oracle_home%rdbms,在oracle database 10g中,归档日志的默认文件格式为ARCH%S_%R.%T。
归档日志文件可以指定以下匹配符:
%s: 日志序列号:
%S: 日志序列号(带有前导0)
%t: 重做线程编号.
%T: 重做线程编号(带有前导0)
%a: 活动ID号
%d: 数据库ID号
%r:  RESETLOGS的ID值
%R:  RESETLOGS的ID值(带有前导0)
从10g开始,配置归档日志文件格式时,必须带有%s,%t和%r匹配符,设置了归档文件格式后必须重启数据库,修改完成后手动干预进行日志切换查看归档日志文件格式是否正确。

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

 

3.ORACLE的日志归档模式可以有效的防止INSTANCE和DISK的故障,在数据库故障恢复中不可或缺,由于ORACLE初始安装模式为非归档模式,因此需要将其设置为归档模式,下面就其方法和步骤做一些总结,虽然简单,但这是管理ORACLE数据库必备之工,故有如下陈述。

例子是建立在windowsXP和oracle11g的环境下,如有环境不同,仅供参考。
Oracle非归档模式设置为归档模式方法步骤:
1,  运行cmd命令,开启sql*plus
C:Documents and SettingsAdministrator>sqlplus/nolog
2,  以sysdba身份连接数据库
SQL> CONNECT/AS SYSDBA
3,  若数据库是打开的,首先关闭卸载数据库。
SQL> SHUTDOWN
4,  以mount模式打开数据库。
SQL> STARTUP MOUNT
5,  查询当前归档模式
SQL> ARCHIVE 
LOG  LIST
数据库日志模式非存档模式
自动存档禁用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     1
当前日志序列           1
6,  更改归档模式为ARCHIVELOG
SQL> ALTER DATABASE ARCHIVELOG;
7, 
重新查询归档模式
SQL> ARCHIVE 
LOG  LIST
数据库日志模式存档模式
自动存档启用
存档终点           
USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列    
1
下一个存档日志序列  
1
当前日志序列          
1
8, 
打开数据库
SQL> ALTER 
DATABASE  OPEN;
数据库归档模式设置已经完成,查询其归档模式除了ARCHIVE 
LOG  LIST方法外,也可以通过v$database来查询,语法如下:
         SQL> select  log_mode  from  v$database;
LOG_MODE
------------
ARCHIVELOG
如果因特殊需要,需要重新设置数据库为非归档模式,可以参照如下方法。
Oracle归档模式设置为非归档模式方法步骤:
1,运行cmd命令,开启sql*plus
C:Documents and SettingsAdministrator>sqlplus/nolog
2以sysdba身份连接数据库
SQL> CONNECT/AS SYSDBA
3,  若数据库是打开的,首先关闭卸载数据库。
SQL> SHUTDOWN
4,  以mount模式打开数据库。
SQL> STARTUP MOUNT
5,  查询当前归档模式
SQL> ARCHIVE 
LOG  LIST
数据库日志模式存档模式
自动存档启用
存档终点           
USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列    
1
下一个存档日志序列  
1
当前日志序列          
1
6,  更改归档模式为ARCHIVELOG
SQL> ALTER DATABASE NOARCHIVELOG;
7, 
重新查询归档模式
SQL> ARCHIVE 
LOG  LIST
数据库日志模式非存档模式
自动存档禁用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     1
当前日志序列           1
8, 
打开数据库
SQL> ALTER 
DATABASE  OPEN;
也可以通过v$database来查询,语法如下:
         SQL> select  log_mode  from  v$database;
LOG_MODE
------------
NOARCHIVELOG
OK! Oracle数据库归档模式之间转换设置完毕,以供参考学习。如有出入,请参考oracle提供帮助文档。

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

 

 

 

 































































































































以上是关于怎样将Oracle数据库设置为归档模式及非归档模式的主要内容,如果未能解决你的问题,请参考以下文章

如何把Oracle数据库设置为归档模式?

Oracle数据库设置为归档模式的操作方法

Oracle11g 归档模式

Oracle数据库如何开启自动归档

oracle11g设置归档模式和非归档模式

更改ORACLE归档路径及归档模式