ITPub博客

首页 > 数据库 > 国内数据库 > YashanDB redo日志文件管理

YashanDB redo日志文件管理

国内数据库 作者:崖山数据库系统YashanDB 时间:2025-03-13 18:13:56 0 删除 编辑

YashanDB的redo日志文件用于记录数据库产生的物理日志,可被用于数据库宕机重演和主备复制。

redo日志文件有如下4种状态:

  • NEW:表示新创建且未使用的redo日志文件。
  • CURRENT:表示当前正在写入的redo日志文件,当current redo日志文件写满,或者手动执行切换操作后,会将下一个可用的redo日志文件状态设置为CURRENT,原current redo日志文件状态变为ACTIVE。
  • ACTIVE:该状态下的redo日志文件包含的redo对应的页面存在未写入磁盘的情况,或者该redo日志文件没有被归档,不可复用。ACTIVE状态的redo日志文件,在执行checkpoint并等待归档完成(如果已开启归档模式)后会变成INACTIVE状态。
  • INACTIVE:该状态下的redo日志文件包含的redo对应的页面都已经写入磁盘,可复用。

Note:

redo日志文件切换时,会将处于INACTIVE或NEW状态的redo日志文件作为下一个文件,如不存在INACTIVE或NEW状态的redo日志文件则会触发checkpoint。

#查看redo日志文件

Note:

本文以单机部署为例,不同部署形态的查看方法相同但$YASDB_DATA路径不同,具体请以实际为准。

方式一:

通过V$LOGFILE视图查看redo日志的信息,包括它的组号、路径、成员、块大小、已用大小与状态等信息。

示例

SELECT thread#,id,name,block_size,block_count,used_blocks,SEQUENCE#,status FROM V$LOGFILE;THREAD# ID NAME                                            BLOCK_SIZE  BLOCK_COUNT  USED_BLOCKS SEQUENCE# STATUS    ------- -- ----------------------------------------------  ---------- ------------ ------------ --------- -------- 1  0 /data/yashan/yasdb_data/db-1-1/dbfiles/redo0        4096        25600         2961         1 INACTIVE 
1 1 /data/yashan/yasdb_data/db-1-1/dbfiles/redo1        4096        25600          840         2 CURRENT  1 2 /data/yashan/yasdb_data/db-1-1/dbfiles/redo2        4096        25600            0         0 INACTIVE 
1 3 /data/yashan/yasdb_data/db-1-1/dbfiles/redo3        4096        25600            0         0 INACTIVE
Copied!

方式二:

直接进入到$YASDB_DATA/dbfiles目录查看。

$ cd /data/yashan/yasdb_data/db-1-1/dbfiles
$ ls -lrt redo*
-rw-r----- 1 yashan yashan 104857600 Jun 16 09:49 redo2
-rw-r----- 1 yashan yashan 104857600 Jun 16 09:49 redo3
-rw-r----- 1 yashan yashan 104857600 Jun 17 11:45 redo0
-rw-r----- 1 yashan yashan 104857600 Jun 18 15:15 redo1
Copied!

#维护redo日志文件

#添加redo日志

YashanDB中添加redo日志主要是用于提高数据库性能,具体见 数据库配置调优章节描述。

可通过ALTER DATABASE语句添加redo日志。

示例

ALTER DATABASE ADD LOGFILE ('redo6a' size 200M,'redo6b' size 200M);-- 或者ALTER DATABASE ADD LOGFILE ('redo7a' size 200M  BLOCKSIZE 512,'redo7b' size 200M BLOCKSIZE 512);
Copied!

Note:

  • 添加redo日志时,属性size需放在BLOCKSIZE前才能正常添加,默认块大小为4096Byte,这与磁盘类型有关系,有些磁盘并不支持512Byte的块大小,只能设为4096Byte。
  • YashanDB无法直接扩展redo日志的大小,需通过添加新的大redo日志并将原有的小redo日志删除的方式实现。

#切换redo日志

可通过ALTER SYSTEM语句手动切换redo日志。

示例

-- 只切换redoALTER SYSTEM SWITCH LOGFILE;-- 切换redo,并且等待该redo归档完成(归档模式下)ALTER SYSTEM ARCHIVE LOG CURRENT;
Copied!

#删除redo日志

如发生下述情况,可通过ALTER DATABASE语句删除redo日志:

  • 磁盘发生故障时,可通过删除故障磁盘上redo日志文件避免写入不可访问的文件。
  • redo日志文件存储在不恰当的位置。
  • 通过增加更大的redo文件,删除原有的redo,从而实现redo文件扩展。

Caution:

为了保证数据库正常运行以及数据安全,仅允许直接删除INACTIVE或NEW状态的redo日志。

如需删除CURRENT状态的redo日志,操作如下:

  1. 切换redo日志,使其变为ACTIVE状态。
  2. 执行checkpoint并等待归档完成(如果已开启归档模式),使其变为INACTIVE状态。
  3. 执行删除操作。
-- 建议先执行checkpoint,以便redo文件变成INACTIVE状态ALTER SYSTEM CHECKPOINT;-- 本文以单机部署为例,具体请修改为实际的redo日志文件路径ALTER DATABASE DROP LOGFILE '/data/yashan/yasdb_data/db-1-1/dbfiles/redo5a';


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3075770/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。

注册时间:2023-04-11

  • 博文量
    722
  • 访问量
    640237