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