2015年(104)
分类: 服务器与存储
2015-06-18 23:52:58
一. oracle日志简介
Oralce两种日志文件类型:
联机日志文件
这是Oracle用来循环记录数据库改变的操作系统文件
归档日志文件
这是指为避免联机日志文件重写时丢失重复数据而对联机日志文件所做的备份
Oracle有两种归档日志模式,Oracle数据库可以采用其中任何一种模式:
NOARCHIVELOG
不对日志文件进行归档。这种模式可以大大减少数据库备份的开销,但可能回导致数据的不可恢复
ARCHIVELOG
在这种模式下,当Oracle转向一个新的日志文件时,将以前的日志文件进行归档。为了防止出现历史“缺口”的情况,一个给定的日志文件在它成功归档之前是不能重新使用的。归档的日志文件,加上联机日志文件,为数据库的所有改变提供了完整的历史信息。
在Oracle利用日志文件和归档日志文件来恢复数据库时,内部序列号可以起一个向导的作用。
二.如何查看变更数据库的现行日志模式
可用archive log list命令来查看。
例如:
运行在日志自动归档模式下的数据库系统查看结果如下(一般是生产环境)
SVRMGR> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /backup/archivelog
Oldest online log sequence 2131
Next log sequence to archive 2133
Current log sequence 2133
没有启动数据库日志模式和自动归档的数据库系统查看结果如下(一般是测试环境)
SVRMGR> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /u01/app/oracle/product/8.0.5/dbs/arch
Oldest online log sequence 194
Current log sequence 196
注意在创建数据库时,可以在CREATE DATABASE 语句中指定数据库的日志模式。假如没有指明,则缺省为NOARCHIVELOG模式。
由于如果在创建数据库时指明是Archive Mode的话,会增加约20%的创建时间,而在以后启动INSTANCE时再设置的话,
一般只用去几秒的时间,所以一般在创建数据库时是不设置为 ARCHIVE MODE的。
日志切换
1.shutdown normal或shutdown immediate关闭数据库
[oracle@jumper oracle]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on Sat Oct 15 15:48:36 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning option
JServer Release 9.2.0.4.0 - Production
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
在进行日志模式切换之前,必须将运行的数据库正常关闭。
2. 备份数据库(可以跳过)
该备份跟以后产生的日志一起用于将来的灾难恢复
(很重要,如要改为归档日志模式,没有这个数据库备份,仅有日志文件是无法从该时间点恢复的)。
3. 启动数据库实例到mount状态,但不要打开。
SQL> startup mount;
ORACLE instance started.
Total System Global Area 101782828 bytes
Fixed Size 451884 bytes
Variable Size 37748736 bytes
Database Buffers 62914560 bytes
Redo Buffers 667648 bytes
Database mounted.
注意:如果是使用OPS的话,请只打开一个数据库实例进行模式切换操作。
4. 切换数据库日志模式。
如果要启用归档模式,此处使用
alter database archivelog 命令。
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 /opt/oracle/oradata/conner/archive
Oldest online log sequence 148
Next log sequence to archive 151
Current log sequence 151
如果需要停止归档模式,此处使用:
alter database noarchivelog 命令。
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 101782828 bytes
Fixed Size 451884 bytes
Variable Size 37748736 bytes
Database Buffers 62914560 bytes
Redo Buffers 667648 bytes
Database mounted.
SQL> alter database noarchivelog;
Database altered.
SQL> alter database open;
Database altered.
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Enabled
Archive destination /opt/oracle/oradata/conner/archive
Oldest online log sequence 149
Current log sequence 152
7. 将这个时间点的redo logs归档
SVRMGRL> archive log all;
8. 确认新产生的日志文件已在相应的归档目录下面。
三.自动归档模式的设置
自动归档模式设置(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%s.arc
log 文件将为: arch1.arc, arch2.arc, arch3.arc
这几个参数设置只有在数据库实例启动前设置才能生效,如果在数据库运行中进行设置,要使其生效,必须重起数据库。
如果数据库正在运行中,不能即刻重起,要设置其为自动归档模式,则做如下操作:
SVRMGRL> ALTER SYSTEM ARCHIVE LOG START;
如要设置其为非自动归档模式(取消自动归档),则:
SVRMGRL> ALTER SYSTEM ARCHIVE LOG STOP;
但如果数据库重起后,给语句修改的结果就失效了,自动归档的设置还是按照系统参数文件中的LOG_ARCHIVE_START的值来设置。
另从oracle9i开始可以在数据库启动的情况下更改自动归档然后重起自动修改,这样避免了对oracle初始化参数的误操作
(Oracle10g已经废弃log_archive_star这个参数默认为自动归档)
sql>show parameter spfile
如果有Value
alter system set LOG_ARCHIVE_START=TRUE scope = spfile
或者
sql>show parameter pfile
如果有Value
alter system set LOG_ARCHIVE_START=TRUE scope = pfile
四 以上操作均为管理员用户sys