达梦数据库操作记录_达梦数据库中的各个⽇志⽂件
重做⽇志⽂件
重做⽇志(即REDO⽇志)指在DM数据库中添加、删除、修改对象,或者改变数据,DM都会按照特定的格式,将这些操作执⾏的结果写⼊到当前的重做⽇志⽂件中。重做⽇志⽂件以log为扩展名。每个DM数据库实例必须⾄少有2个重做⽇志⽂件,默认两个⽇志⽂件为
DAMENG01.log、DAMENG02.log,这两个⽂件循环使⽤。
重做⽇志⽂件因为是数据库正在使⽤的⽇志⽂件,因此被称为联机⽇志⽂件。
重做⽇志⽂件主要⽤于数据库的备份与恢复。理想情况下,数据库系统不会⽤到重做⽇志⽂件中的信息。然⽽现实世界总是充满了各种意外,⽐如电源故障、系统故障、介质故障,或者数据库实例进程被强制终⽌等,数据库缓冲区中的数据页会来不及写⼊数据⽂件。这样,在重启DM实例时,通过重做⽇志⽂件中的信息,就可以将数据库的状态恢复到发⽣意外时的状态。
重做⽇志⽂件对于数据库是⾄关重要的。它们⽤于存储数据库的事务⽇志,以便系统在出现系统故障和介质故障时能够进⾏故障恢复。在DM数据库运⾏过程中,任何修改数据库的操作都会产⽣重做⽇志,例如,当⼀条元组插⼊到⼀个表中的时候,插⼊的结果写⼊了重做⽇志,当删除⼀条元组时,删除该元组的
事实也被写了进去,这样,当系统出现故障时,通过分析⽇志可以知道在故障发⽣前系统做了哪些动作,并可以重做这些动作使系统恢复到故障之前的状态。
归档⽇志⽂件
⽇志⽂件分为联机⽇志⽂件和归档⽇志⽂件。DM数据库可以在归档模式和⾮归档模式下运⾏。⾮归档模式下,数据库会只将重做⽇志写⼊联机⽇志⽂件中进⾏存储;归档模式下,数据库会同时将重做⽇志写⼊联机⽇志⽂件和归档⽇志⽂件中分别进⾏存储。
联机⽇志⽂件指的是系统当前正在使⽤的⽇志⽂件。创建数据库时,联机⽇志⽂件通常被扩展⾄⼀定长度,其内容则被初始化为空,当系统运⾏时,该⽂件逐渐被产⽣的⽇志所填充。对⽇志⽂件的写⼊是顺序连续的。然⽽系统磁盘空间总是有限,系统必须能够循环利⽤⽇志⽂件的空间,为了做到这⼀点,当所有⽇志⽂件空间被占满时,系统需要清空⼀部分⽇志以便重⽤⽇志⽂件的空间,为了保证被清空的⽇志
所“保护”的数据在磁盘上是安全的,这⾥需要引⼊⼀个关键的数据库概念——检查点。当产⽣检查点时,系统将系统缓冲区中的⽇志和脏数据页都写⼊磁盘,以保证当前⽇志所“保护”的数据页都已安全写⼊磁盘,这样⽇志⽂件即可被安全重⽤。
归档⽇志⽂件,就是在归档模式下,重做⽇志被连续写⼊到归档⽇志后,所⽣成了归档⽇志⽂件。归档⽇志⽂件以归档时间命名,扩展名也是log。但只有在归档模式下运⾏时,DM数据库才会将重做⽇志写⼊到归档⽇志⽂件中。采⽤归档模式会对系统的性能产⽣影响,然⽽系统在归档模式下运⾏会更安全,当出现故障时其丢失数据的可能性更⼩,这是因为⼀旦出现介质故障,如磁盘损坏时,利⽤归档⽇志,系统可被恢复⾄故障发⽣的前⼀刻,也可以还原到指定的时间点,⽽如果没有归档⽇志⽂件,则只能利⽤备份进⾏恢复。归档⽇志⽂件还是数据守护功能的核⼼,数据守护中的备库就是通过重做归档⽇志中的REDO⽇志来完成与主库的数据同步的。
逻辑⽇志⽂件
如果在DM数据库上配置了复制功能,复制源就会产⽣逻辑⽇志⽂件。逻辑⽇志⽂件是⼀个流式的⽂件,它有⾃⼰的格式,且不在第⼀章所述的页,簇和段的管理之下。
逻辑⽇志⽂件内部存储按照复制记录的格式,⼀条记录紧接着⼀条记录,存储着复制源端的各种逻辑操作。⽤于发送给复制⽬的端。
物理逻辑⽇志⽂件
物理逻辑⽇志,是按照特定的格式存储的服务器的逻辑操作,专门⽤于DBMS_LOGMNR包挖掘获取数
据库系统的历史执⾏语句。当开启记录物理逻辑⽇志的功能时,这部分⽇志内容会被存储在重做⽇志⽂件中。
要开启物理逻辑⽇志的功能,需要满⾜下⾯两个条件:
⾸先,要设置RLOG_APPEND_LOGIC为1、2或者3;
其次,通过设置参数RLOG_IGNORE_TABLE_SET=1或者建表(或修改表)时指定ADD LOGIC LOG开启。如果需要记录所有表的物理逻辑⽇志,设置INI参数RLOG_IGNORE_TABLE_SET为1即可;如果只需要记录某些表的物理逻辑⽇志,设置INI参数
RLOG_IGNORE_TABLE_SET为0,并在建表或者修改表的语法中使⽤ADD LOGIC LOG。
跟踪⽇志⽂件
⽤户在dm.ini中配置SVR_LOG和SVR_LOG_SWITCH_COUNT参数后就会打开跟踪⽇志。跟踪⽇志⽂件是⼀个纯⽂本⽂件,
以“dm_commit_⽇期_时间”命名,默认⽣成在DM安装⽬录的log⼦⽬录下⾯,管理员可通过ini参数SVR_LOG_FILE_PATH设置其⽣成路径。
跟踪⽇志内容包含系统各会话执⾏的SQL语句、参数信息、错误信息等。跟踪⽇志主要⽤于分析错误和分析性能问题,基于跟踪⽇志可以对系统运⾏状态有⼀个分析,⽐如,可以挑出系统现在执⾏速度较慢的SQL语句,进⽽对其进⾏优化。
系统中SQL⽇志的缓存是分块循环使⽤,管理员可根据系统执⾏的语句情况及压⼒情况设置恰当的⽇志缓存块⼤⼩及预留的缓冲块个数。当预留块不⾜以记录系统产⽣的任务时,系统会分配新的⽤后即弃的缓存块,但是总的空间⼤⼩由ini参数SVR_LOG_BUF_TOTAL_SIZE控制,管理员可根据实际情况进⾏设置。
打开跟踪⽇志会对系统的性能会有较⼤影响,⼀般⽤于查错和调优的时候才会打开,默认情况下系统是关闭跟踪⽇志的。若需要跟踪⽇志但对⽇志的实时性没有严格的要求,⼜希望系统有较⾼的效率,可以设置参数SQL_TRACE_MASK和SVR_LOG_MIN_EXEC_TIME 只记录关注的相关记录,减少⽇志总量;设置参数SVR_LOG_ASYNC_FLUSH打开SQL⽇志异步刷盘提⾼系统性能。
事件⽇志⽂件
数据库故障恢复DM数据库系统在运⾏过程中,会在log⼦⽬录下产⽣⼀个“dm_实例名_⽇期”命名的事件⽇志⽂件。事件⽇志⽂件对DM数据库运⾏时的关键事件进⾏记录,如系统启动、关闭、内存申请失败、IO错误等⼀些致命错误。事件⽇志⽂件主要⽤于系统出现严重错误时进⾏查看并定位问题。事件⽇志⽂件随着DM数
据库服务的运⾏⼀直存在。
事件⽇志⽂件打印的是中间步骤的信息,所以出现部分缺失属于正常现象。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论