本文主要是介绍Oracle管理重做日志文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一.重做日志文件
重做日志文件记录对数据所做的所有更改,并提供系统或介质故障的恢复机制
- 重做日志文件按组组织
- 一个Oracle数据库至少需要两个组。
- 组中的每个重做日志都称为一个成员。
二.重做日志文件作用
恢复
三.重做日志文件结构
注:重做日志文件组中所有的文件内容是一样的。
四.重做日志文件工作情况
- 重做日志以循环方式使用
- 当重做日志文件已满时,LGWR将移动到下一个日志组
- 这被称为日志切换
- 检查点操作也会发生
- 信息写入控制文件
五.查看重做日志文件信息
1.查看重做日志组文件组信息(v$log)
desc v$logselect GROUP#,SEQUENCE#,STATUS from v$log;
2.查看重做日志成员信息
desc v$logfilecol member for a 60select GROUP#,MEMBER from v$logfile;
3.查看数据库日志模式
日志模式类型
- 归档日志模式 : 保存日志,日志文件写满后产生归档日志文件另存
- 非归档日志模式 :不保存日志,日志文件写满直接覆盖
desc v$databaseselect LOG_MODE from v$DATABASE;--查看当前数据库日志模式archive log list --查看当前数据库日志模式
4.强制日志切换和检查点
ALTER SYSTEM SWITCH LOGFILE; ---强制执行日志切换。ALTER SYSTEM CHECKPOINT; --使用强制检查点
六.增加重做日志用户组
ALTER DATABASE ADD LOGFILE GROUP 3
('$HOME/ORADATA/u01/log3a.rdo',
'$HOME/ORADATA/u02/log3b.rdo')
SIZE 1M;
七.增加重做日志成员
ALTER DATABASE ADD LOGFILE MEMBER
'$HOME/ORADATA/u04/log1c.rdo' TO GROUP 1,
'$HOME/ORADATA/u04/log2c.rdo' TO GROUP 2,
'$HOME/ORADATA/u04/log3c.rdo' TO GROUP 3;
八. 删除重做日志组
ALTER DATABASE DROP LOGFILE GROUP 3;
current,active状态下的日志组不能删除
九.删除重做日志成员
ALTER DATABASE DROP LOGFILE MEMBER
'$HOME/ORADATA/u04/log3c.rdo';
十.清除、重新定位或重命名联机重做日志文件
清除联机重做日志文件
ALTER DATABASE CLEAR LOGFILE
'$HOME/ORADATA/u01/log2a.rdo';重新定位或重命名联机重做日志文件可以通过添加新成员和删除旧成员。
十一.使用OMF管理联机重做日志
设置oracle系统自动命名文件路径地址(日志文件不需要这样的操作,数据文件需要制定omf文件存放地址)
show parameter db_create_file_dest;---查看地址路径mkdir /u01/dem/omf/alter system db_create_file_dest='/u01/dem/omf/';--开启omf
alter system db_create_file_dest='';关闭omf
可以在不指定文件的情况下添加完整的组
ALTER DATABASE ADD LOGFILE;
如果删除了一个组,则会在操作系统级别删除所有相应的OMF文件
ALTER DATABASE DROP LOGFILE GROUP 3;
十二存档的重做日志文件
1.已填充的在线重做日志文件可以存档
- 归档重做日志有两个优点
- 恢复:数据库备份以及在线和存档的重做日志文件可以保证恢复所有提交的事务。
- 备份:可以在数据库打开时执行。 - 默认情况下,数据库是在NOARCHIVELOG模式下创建的。
- 归档重做日志文件由ARCn(Archiver)或通过SQL语句手动完成。
- 每当重做日志成功归档时,都会在控制文件中创建一个条目,记录归档日志名称、日志序列号以及高SCN号和低SCN号。
- 填充的重做日志文件不能重复使用,直到发生检查点,并且重做日志文件已在ARCn进程中备份。
- 存档的重做日志文件可以多路传输。
- 存档的重做日志文件必须由DBA维护。
archive log list --查看当前数据库日志模式shutdown immediatestartup mountalter database archivelog--切换日志模式需要在mount下进行
2.查看归档日志信息(v$archived_log)
desc v$archived_log;查看表结构select name,* from v$archived_log;查看表alter system archive log current;切换当前日志文件select name v$archived_log;查看归档文件路径
3.设置日志归档路径
show parameter log_archive1.log_archive_dest与log_archive_dest1互斥只能用其中一个
2.log_archive_duplex_dest与log_archive_dest搭配使用mkdir /u01/demo/arch1alter system set log_archive_dest1='(servers=服务名)/location=/u01/demo/arch1';alter system set log_archive_dest1='location=/u01/demo/arch1';
4.修改日志归档文件格式
log_archive_format %t_%s_%r.dbf
t--线程号
s--序列号
r--发生版本
dbf扩展名容易与数据库文件混淆alter system set log_archive_format=' %t_%s_%r.arc' scop=spfile;
该参数是静态参数需要重启才能生效
5.修复重做日志文件
1)非当前重做日志文件损坏
select GROUP#,SEQUENCE#,STATUS from v$log;查看日志文件信息select MEMBER from v$logfile; 查看文件地址startup mount;alter database clear logfile group 4;alter database opean;
2)当前重做日志文件损坏
1.正常关闭,数据写盘了。
删除当前日志文件
startup mount;alter database clear logfile group 1;recover database until cancel;alter database opean resetlogs;archive log list;
2.非正常关闭,修改后数据未提交(数据回不来)。
修改数据不提交,删除当前日志
shutdown abort--关闭数据库startup mount;alter database clear logfile group 1;recover database until cancel;select status from v$instance;alter system set="_ALLOW_RESETLOGS_CORRUPTION"=TRUE scope=spfile;shutdown immediate;startupalter database opean resetlogs;
这篇关于Oracle管理重做日志文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!