一、重做日志文件介绍
重做日志(即REDO日志)指在DM数据库中添加、删除、修改对象,或者改变数据,DM都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志文件中。重做日志文件以log为扩展名。每个DM数据库实例必须至少有2个重做日志文件,默认两个日志文件为DAMENG01.log、DAMENG02.log,这两个文件循环使用。
重做日志文件因为是数据库正在使用的日志文件,因此被称为联机日志文件。
重做日志文件主要用于数据库的备份与恢复。理想情况下,数据库系统不会用到重做日志文件中的信息。然而现实世界总是充满了各种意外,比如电源故障、系统故障、介质故障,或者数据库实例进程被强制终止等,数据库缓冲区中的数据页会来不及写入数据文件。这样,在重启DM实例时,通过重做日志文件中的信息,就可以将数据库的状态恢复到发生意外时的状态。
重做日志文件对于数据库是至关重要的。它们用于存储数据库的事务日志,以便系统在出现系统故障和介质故障时能够进行故障恢复。在DM数据库运行过程中,任何修改数据库的操作都会产生重做日志,例如,当一条元组插入到一个表中的时候,插入的结果写入了重做日志,当删除一条元组时,删除该元组的事实也被写了进去,这样,当系统出现故障时,通过分析日志可以知道在故障发生前系统做了哪些动作,并可以重做这些动作使系统恢复到故障之前的状态。
二、查询重做日志文件
2.1 查询数据库系统中重做日志文件路径和大小
(1)通过V$RLOGFILE查询重做日志文件大小和存储路径
select group_id, file_id,path,client_path,rlog_size/(1024*1024) as SIZE_M from V$RLOGFILE; |
数据库系统中共有两个日志文件DMOA01.log和DMOA02.log,文件大小为256M。
三、重做日志文件管理
3.1 修改日志文档大小
(1)通过alter database resize命令修改重做日志大小。
ALTER DATABASE RESIZE LOGFILE '/dm/dmdata/prod/prod01.log' to 257; ALTER DATABASE RESIZE LOGFILE '/dm/dmdata/prod/prod02.log' to 257; select group_id, file_id,path,client_path,rlog_size/(1024*1024) as SIZE_M from V$RLOGFILE; |
重做日志文件大小默认值是256M,修改大小时,值必须大于256M,不能等于或小于256M。修改后的值等于或小于256M时,会提示执行失败,
日志文件大小无效的错误。如上图所示,把日志文件大小修改为257M
3.2 增加重做日志文件
(1)给数据库增加大小为258M的日志文件DMOA03.log
ALTER DATABASE ADD LOGFILE '/dm/dmdata/prod/prod03.log' size 257; select group_id, file_id,path,client_path,rlog_size/(1024*1024) as SIZE_M from V$RLOGFILE; |
增加完成后如上图所示。
3.3 重做日志文件重命名
(1)在MOUNT状态下,支持对日志文件的重命名操作。将日志文件DMOA01.log、DMOA02.log、DMOA03.log重命名
为DMOA1.log、DMOA2.log、DMOA3.log。
SQL> alter database mount; 操作已执行 已用时间: 00:00:01.744. 执行号:0. SQL> SQL> ALTER DATABASE RENAME LOGFILE '/dm/dmdata/prod/prod01.log' to '/dm/dmdata/prod/prod001.log'; 操作已执行 已用时间: 301.384(毫秒). 执行号:3900. SQL> SQL> ALTER DATABASE RENAME LOGFILE '/dm/dmdata/prod/prod02.log' to '/dm/dmdata/prod/prod002.log'; 操作已执行 已用时间: 322.775(毫秒). 执行号:3901. SQL> SQL> ALTER DATABASE RENAME LOGFILE '/dm/dmdata/prod/prod03.log' to '/dm/dmdata/prod/prod003.log'; 操作已执行 已用时间: 671.803(毫秒). 执行号:3902. SQL> SQL> alter database open; 操作已执行 已用时间: 00:00:01.721. 执行号:0. SQL> |
3.4 修改重做日志文件存放路径
(1)将/home/dmdba/dmdbms/data/DMOA目录下的DMOA1.log、DMOA2.log、DMOA3.log移动到/home/dmdba/dmdbms/data/DMOA/redolog目录下。
修改前
/home/dmdba/dmdbms/data/DMOA/DMOA1.log
/home/dmdba/dmdbms/data/DMOA/DMOA2.log
/home/dmdba/dmdbms/data/DMOA/DMOA3.log
修改后
/home/dmdba/dmdbms/data/DMOA/redolog/DMOA1.log
/home/dmdba/dmdbms/data/DMOA/redolog/DMOA2.log
/home/dmdba/dmdbms/data/DMOA/redolog/DMOA3.log
alter database mount;
ALTER DATABASE RENAME LOGFILE '/home/dmdba/dmdbms/data/DMOA/DMOA1.log' to '/home/dmdba/dmdbms/data/DMOA/redolog/DMOA1.log';
ALTER DATABASE RENAME LOGFILE '/home/dmdba/dmdbms/data/DMOA/DMOA2.log' to '/home/dmdba/dmdbms/data/DMOA/redolog/DMOA2.log';
ALTER DATABASE RENAME LOGFILE '/home/dmdba/dmdbms/data/DMOA/DMOA3.log' to '/home/dmdba/dmdbms/data/DMOA/redolog/DMOA3.log';
alter database open;
注意:重做日志文件不能被删除,所有日志文件大小最好保持一致。
3.5 查看DB当前正在使用用的RedoLog文件
(1)查看数据库正在使用的重做日志文件。
select cur_file from V$RLOG;
select * from v$rlog
SQL> select cur_file from V$RLOG;
LINEID CUR_FILE
---------- -----------
1 0
SQL>