数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

OARCLE数据库归档模式的设置


发布日期:2020年12月12日
 
OARCLE数据库归档模式的设置
在oracle数据库的开发环境和测试环境中数据库的日志模式和自动归档模式一般都是不设置的这样有利于系统应用的调整也免的生成大量的归档日志文件将磁盘空间大量的消耗但在系统上线成为生产环境时将其设置为日志模式并自动归档就相当重要了因为这是保证系统的安全性有效预防灾难的重要措施这样通过定时备份数据库和在两次备份间隔之间的日志文件可以有效的恢复这段时间的任何时间点的数据可以在很多时候挽回或最大可能的减少数据丢失虽然ORACLE数据库的日志模式和自动归档设置并不复杂但其中的一些概念和操作过程还是容易混淆的现在根据本人的经验分析介绍如下所用环境为UNIX(HPUXSOLARIESAIXTRUUNIX)和ORACLE

一 要使OARCLE数据库进行日志的自动归档需要做两方面的事情一是数据库日志模式的设置(database log mode可为Archive Mode和No Archive Mode)另外就是自动归档模式设置(Automatic archival可为Enabled和Disabled)

二 如何查看数据库的现行日志和自动归档模式的设置

可用archive log list命令来查看

例如

运行在日志自动归档模式下的数据库系统查看结果如下(一般是生产环境)

SVRMGR> archive log list

Database log modeArchive Mode

Automatic archival Enabled

Archive destination/backup/archivelog

Oldest online log sequence

Next log sequence to archive

Current log sequence

没有启动数据库日志模式和自动归档的数据库系统查看结果如下(一般是测试环境)

SVRMGR> archive log list

Database log modeNo Archive Mode

Automatic archival Disabled

Archive destination/u/app/oracle/product//dbs/arch

Oldest online log sequence

Current log sequence

三 数据库日志模式的设置

在创建数据库时可以在CREATE DATABASE 语句中指定数据库的日志模式假如没有指明则缺省为NOARCHIVELOG模式由于如果在创建数据库时指明是Archive Mode的话会增加约%的创建时间而在以后启动INSTANCE时再设置的话一般只用去几秒的时间所以一般在创建数据库时是不设置为ARCHIVE MODE的

如要确定一系统数据库的日志模式设置除了(二)中的方法外也可以执行如下操作查看

SVRMGR> Select * from V$DATABASE

NAMECREATEDLOG_MODECHECKPOINTARCHIVE_CH

ORCL// ::NOARCHIVELOG

将数据库的日志模式设置切换(Archive Mode 和No Archive Mode之间的切换)的步骤和操作如下

关闭运行的数据库实例

SVRMGRL>shutdown

在进行日志模式切换之前必须将运行的数据库正常关闭

备份数据库

该备份跟以后产生的日志一起用于将来的灾难恢复(很重要如要改为归档日志模式没有这个数据库备份仅有日志文件是无法从该时间点恢复的)

启动数据库实例到mount状态但不要打开

SVRMGRL> startup mount

注意如果是使用OPS的话请只打开一个数据库实例进行模式切换操作

切换数据库日志模式

SVRMGRL> alter database archivelog;(设置数据库为归档日志模式)

SVRMGRL> alter database noarchivelog;(设置数据库为归档日志模式)

打开数据库

SVRMGRL> alter database open;

确认数据库现在处于归档日志模式

SVRMGRL> archive log list;

Database log mode Archive Mode

Automatic archivalEnabled

Archive destination for example: $ORACLE_HOME/dbs/arch

Oldest online log sequence

Next log sequence

Current log sequence

将这个时间点的redo logs归档

SVRMGRL> archive log all;

确认新产生的日志文件已在相应的归档目录下面

四 自动归档模式设置(Automatic archival可为Enabled和Disabled)在该模式下数据库启动一个arch进程专门负责将redo logs写到系统归档设备的相应目录下

在数据库的参数文件中设置参数(一般是在$ORACLE_HOME/dbs/init*ora文件中)

LOG_ARCHIVE_START=

LOG_ARCHIVE_DEST=

LOG_ARCHIVE_FORMAT=

LOG_ARCHIVE_START:

如要求自动归档的话则设为TRUE如要求为非自动归档的话则设为FALSE

LOG_ARCHIVE_DEST:

该参数设定了archive logs 归档存放的路径

LOG_ARCHIVE_FORMAT:

该参数设定了archive logs的命名格式 例如如将格式设为:arch%sarc

log 文件将为:archarc archarc archarc

这几个参数设置只有在数据库实例启动前设置才能生效如果在数据库运行中进行设置要使其生效必须重起数据库

如果数据库正在运行中不能即刻重起要设置其为自动归档模式则做如下操作

SVRMGRL> ALTER SYSTEM ARCHIVE LOG START;

如要设置其为非自动归档模式(取消自动归档)

SVRMGRL> ALTER SYSTEM ARCHIVE LOG STOP;

但如果数据库重起后给语句修改的结果就失效了自动归档的设置还是按照系统参数文件中的LOG_ARCHIVE_START的值来设置

五 几种设置情况

()Database log modeArchive Mode

Automatic archival Enabled

这是在大部分生产环境中的ORACLE数据库日志及归档模式设置这种情况下做好数据库的定期备份(有热备和冷备)和归档日志备份可有效的将数据库恢复到有归档日志的全部时间点

()Database log modeArchive Mode

Automatic archival Disabled

这种情况下数据库不能自动归档需要进行手工归档如果所有在线日志都写满了又没有的及时进行手工归档的话由于LGWR没有可用的在线日志可写数据库将会挂在这儿只有进行手工归档后有可用的在线日志后才能继续在生产环境中应该避免这种情况

手工归档操作如下

SVRMGRL> ALTER SYSTEM ARCHIVE LOG ALL;

数据库将会把在线日志进行归档处理

()Database log modeNO Archive Mode

Automatic archival Enabled

有些相对欠缺经验的管理员在进行设置时只在数据库参数文件中设置了LOG_ARCHIVE_START=TRUE然后在数据库起来后查看到ARCH归档进程已经起来了可是尽管ORACLE已经作了几次日志切换但还是没有归档日志这时的设置就是这种情况如果数据库不是处在ARVHIVELOG模式redolog 还是不会被归档

()Database log modeNO Archive Mode

Automatic archival Disabled

这种设置是刚安装的oracle数据库的缺省设置开发环境也大部分如此即没有进行归档

上一篇:SERVER数据转换ORACLE问题(1)

下一篇:Oracle与FoxPro的数据转换