1、重做日志文件Oracle重做日志文件一简介 Oracle引入重做日志的目的:数据库的恢复。 Oracle相关进程:重做日志写进程(LGWR)。 重做日志性质:联机日志文件,oracle服务器运行时需要管理它们。 相关数据字典:v$log ; v$logfile 。 操作者权限:具有sys用户或system用户权限。二获取重做日志的信息1. 获得数据库中有多少个重做日志组,每个组中有多少个成员、日志大小及状态。SELECT GROUP#,SEQUENCE#,MEMBERS,BYTES,STATUS,ARCHIVEDFROM V$LOG; 结果如下图: 状态列(status)所显示常用状态的含义:
2、 inactive:表示实例恢复已不再需要这组联机重做日志组了。 active:表示该组是活动的但不是当前组,实例恢复时需要这组日志。 current:表示该组日志是当前组,该联机重做日志组是活动的。 unused:表示该日志组从未写过,是重做日志刚刚添加到状态。2. 获得数据库中每个重做日志组的成员所在目录、文件名及状态。 SELECT GROUP#,STATUS,TYPE,MEMBERFROM V$LOGFILE; 结果如下图:状态列(status)所显示常用状态的含义: 空白:表示该文正在使用。 stale:表示该文件中的内容是不完全的。 invalid:表示该文件是不可以被访问的。 d
3、eleted:表示该文件已不在有用了。三日志切换 联机重做日志文件是以一种循环的方式来使用,当一组联机重做日志文件被写满时,LGWR将开始写下一组日志文件,这被称为日志切换。可以在任何时候强制性的进行重做日志切换操作。 强制重做日志切换命令:ALTER SYSTEM SWITCH LOGFILE; 日志切换前,正在写的日志组是3: 执行命令ALTER SYSTEM SWITCH LOGFILE 后,在写日志组变为1: 四添加和删除联机重做日志文件组1. 添加联机重做日志组创建新的重做日志组SQL命令格式: ALTER DATABASE 数据库名 ADD LOGFILE GROUP 正整数 文件
4、名 , GROUP 正整数 文件名 创建新的重做日志组例子: ALTER DATABASE ADD LOGFILE (d:logfileredo 04a.log,e:logfileredo04b.log)SIZE 15M;注意:由于没有使用GROUP选项,所有oracle系统会自动地在最大的组号上加1来产生新的组号。显示结果如下,创建一组新的日志组,组号是4,有两个成员,成员大小为15M。SELECT GROUP#,SEQUENCE#,MEMBERS,BYTES,STATUS,ARCHIVEDFROM V$LOG;下面的结果显示了新建日志的文件路径和文件名。SELECT GROUP#,STAT
5、US,TYPE,MEMBERFROM V$LOGFILE;2. 删除联机重做日志组 删除重做日志组SQL命令格式: ALTER DATABASE 数据库名 DROP LOGFILE GROUP 正整数 | (文件名, 文件名) ,GROUP 正整数 | (文件名, 文件名). 删除重做日志组例子: ALTER DATABASE DROP LOGFILE GROUP 4; 显示结果如下,可以看出GROUP为4的日志组已经不存在。 SELECT GROUP#,SEQUENCE#,MEMBERS,BYTES,STATUS,ARCHIVED FROM V$LOG; SELECT GROUP#,STAT
6、US,TYPE,MEMBERFROM V$LOGFILE; 注意:当前的重做日志组不能删除。如果要删除,先使用日志强制切换命令ALTER SYSTEM SWITCH LOGFILE 进行切换。当一组重做日志被删除后,它的操作系统文件依然存在,只能用操作系统命令删除,否则会留下一些无用的垃圾文件。五添加和删除联机重做日志成员(文件)1. 添加联机重做日志成员 创建新的重做日志成员(文件)SQL格式: ALTER DATABASE 数据库名 ADD LOGFILE MEMBER 文件名 REUSE , 文件名 REUSE TO GROUP 正整数 | (文件名, 文件名) 添加重做日志成员例子:
7、ALTER DATABASE ADD LOGFILE MEMBER d:logfileredo01b.log TO GROUP 1, d:logfileredo02b.log TO GROUP 2, e:logfileredo03b.log TO GROUP 3; 显示结果如下,可以看出每个日志组增加了一个日志成员,有原来的2个增加到3个。 SELECT GROUP#,SEQUENCE#,MEMBERS,BYTES,STATUS,ARCHIVED FROM V$LOG; 下面的结果,显示了新增日志文件的路径和文件名。SELECT GROUP#,STATUS,TYPE,MEMBERFROM V$
8、LOGFILE;2. 删除联机重做日志成员 删除联机重做日志成员(文件)SQL命令格式: ALTER DATABASE 数据库 DROP LOGFILE MEMBER 文件名 , 文件名 删除重做日志成员例子: ALTER DATABASE DROP LOGFILE MEMBER d:logfileredo02b.log; 结果显示如下,可以看出删除了组2一个日志成员。 SELECT GROUP#,SEQUENCE#,MEMBERS,BYTES,STATUS,ARCHIVED FROM V$LOG; SELECT GROUP#,STATUS,TYPE,MEMBER FROM V$LOGFILE; 注意:当前的重做日志组不能删除,否则会报如下错误:如果要删除,应该先使用ALTER SYSTEM SWITCH LOGFILE命令进行切换。如果数据库运行在归档模式,而要删除的成员还没有被归档完,那也无法删除它。当一个重做日志成员被删除后,它的操作系统
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1