日期:2014-05-16  浏览次数:20493 次

Oracle10g系统管理7

45.重做日志用于记载事务操作所引起的数据库变化。

重做入口也称为重做记录,由一组变化向量组成,这些变化向量包括表块变化(块位置、变化数据)、UNDO块变化和UNDO事务表的变化。
当用户执行事务操作(DDL和DML)时,服务器进程会将重做记录写入到重做日志缓冲区,并最终由后台进程LGWR将重做记录写入到重做日志中。

重做线程由一组相关的重做日志组成。对于单例程数据库系统来说,只有一个重做线程,而对于RAC来说,多个例程会同时访问数据库,并且每个例程都有独立的重做线程(重做线程与例程一一对应)

强制性产生重做日志切换的命令为
alter system switch logfile;
强制性产生检查点的命令为
alter system checkpoint;
通过设置FAST_START_MTTR_TARGET参数方式来强制产生检查点
FAST_START_MTTR_TARGET=900:实例恢复的时间不会超过900秒

?

46.增加日志组
alter database add logfile ‘…redo03.log’ size 10m;
alter database add logfile group 4 ‘…redo04.log’ size 10m;

增加日志成员
alter database add logfile member
?‘…redo1b.log’ to group 1, ‘…redo2b.log’ to group 2,
?‘…redo3b.log’ to group3, ‘…redo4b.log’ to group 4;

删除日志成员
alter database drop logfile member ‘…redo1b.log’;

删除日志组
alter database drop logfile group 4;

清除重做日志
alter database clear logfile group 2;
alter database clear unarchived logfile group 2;
清除原来的重新生成日志组的成员文件。
如果执行该命令清除了当前正在使用的日志组,必须重新备份数据库。

改变重做日志位置或名称
确定日志组状态
select a.group#,a.status from v$log a, v$logfile b
where a.group#=b.group# and b.member=’…redo2b.log’;
复制或移动日志成员到目标位置
host copy …redo2b.log …redo2b.log
改变控制文件所记载的重做日志指针
alter database rename file ‘…redo2b.log’ to ‘…redo2b.log’;

获取重做线程信息
select thread#, instance, groups from v$thread;
获取日志组信息
select group#, sequence#, members, status from v$log;
获取日志成员信息
select group#, member, status from v$logfile;

在检查点未完成和日志组未归档的情况下需要增加重做日志组

?

47.查看数据库是否运行在归档模式下
archive log list

改变日志操作模式
select log_mode from v$database;
shutdown immediate
startup mount
alter database archivelog;
alter database open;

alter system set log_archive_max_process=3;

配置归档位置和文件格式
归档日志的默认位置为$ORACLE_HOME/rdbms
归档日志的默认文件格式为ARC%t_%s_%r
%s:日志序列号
%S:日志序列号(带有前导0)
%t:重做线程编号
%T:重做线程编号(带有前导0)
%a:活动ID号
%d:数据库ID号
%r:RESETLOGS的ID值

alter system set log_archive_format=’%s_%t_%r.arc’ scope=spfile;
shutdown
startup

?

48.Oracle 10g 使用db_recovery_file_dest来作为归档日志的存放地
show parameter db_recovery
db_recovery_file_dest string /u01/app/oracle/flash_recovery_area
db_recovery_file_dest_size big integer 2g

alter system set db_recovery_file_dest_size=214748364800; 动态参数设置为200G

强制性产生重做日志切换的命令为
alter system switch logfile;

?

初始化参数LOG_ARCHIVE_DEST_n可以配置本地归档位置和远程归档位置,而初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST只能配置本地归档位置。
前者最多10个,后者最多两个。两者不能同时使用。

alter system set log_archive_dest=’’;
alter system set log_archive_duplex_dest=’’;
alter system set log_arvhive_dest_1=’location=…archive1? mandatory’;
alter system set log_arvhive_dest_2=’location=…archive2? optional’;
alter system set log_arvhive_dest_3=’location=…archive3’;
alter system set log_arvhive_dest_4=’service=standby’;

控制本地归档成功的最小个数
alter system set log_archive_min_succeed_dest=2;

LOG_ARCHIVE_DEST_STATE_n:控制归档位置的可用性

?

显示归档日志信息
archive log list
select name, sequence#, first_change# from v$archived_log;

显示归档日志位置
select destination from v$archive_dest;

显示归档进程信息
select * from v$archive_processes;

显示日志历史信息
select * from v$loghist;

显示归档进程信息
select * from v$archive_processes;

?

掌握配置ARCHIVELOG模式、归档进程、归档位置和归档日志文件格式的方法,改变日志操作

改变日志操作模式必须由特权用户完成。在改变日志操作模式之前,应该首先建立ARCHIVE目录。
ALTER SYSTEM SET log_archive_dest_1 = 'location=c:\prod\archive' scope=spfile;
ALTER SYSTEM SET log_archive_dest_2 = 'location=d:\prod\archive' scope=spfile;
ALTER SYSTEM SET log_archive_format = '%s_%t_%r.arc' scope=spfile;
shutdown immediate
startup mount
alter database archivelog;
alter database open;

从Oracle 10g开始,当将日志操作模式转变为ARCHIVELOG模式时,Oracle会自动启动ARCH进程。
通过执行ALTER SYSTEM ARCHIVELOG ALL命令也可以进行归档,该归档操作由服务器进程完成。