Redo日志管理

Redo 日志管理

redo日志组中的日志文件互为镜像,他们存放相同的内容,可以起到备份的作用,为了起到备份的作用,可以把redo日志组的每个日志设置到不同的路径。

1.添加日志组

  • 添加redo日志组

    SQL> alter database add logfile group 4
    '/u01/app/oracle/oradata/ORCL/onlinelog/group_4_1.log' size 200M;
    Database altered.
    SQL>
  • 添加redo日志文件

    SQL> select * from v$logfile;
    GROUP# STATUS TYPE MEMBER IS_REC CON_ID
    ------ ---------- ---------- ---------------------------------------------------------------------- ------ ----------
    3 ONLINE /u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_3_kq1wb03p_.log NO 0
    2 ONLINE /u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_2_kq1wb023_.log NO 0
    1 ONLINE /u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_1_kq1w9zyc_.log NO 0
    4 ONLINE /u01/app/oracle/oradata/ORCL/onlinelog/group_4_1.log NO 0
  • 查看redo日志组信息

    SQL> select group#, THREAD#, BYTES/1024/1024, STATUS from v$log;
    GROUP# THREAD# BYTES/1024/1024 STATUS
    ------ ---------- --------------- ----------
    1 1 200 INACTIVE
    2 1 200 CURRENT
    3 1 200 INACTIVE
    4 1 200 UNUSED

2. 添加日志组成员

  • 添加redo日志组成员

    SQL> alter database add logfile member
    '/u01/app/oracle/oradata/ORCL/onlinelog/group_1_2.log' to group 1;
    Database altered.
    SQL>
  • 查看redo日志组成员

    SQL> select * from v$logfile;
    GROUP# STATUS TYPE MEMBER IS_REC CON_ID
    ------ ---------- ---------- ---------------------------------------------------------------------- ------ ----------
    3 ONLINE /u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_3_kq1wb03p_.log NO 0
    2 ONLINE /u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_2_kq1wb023_.log NO 0
    1 ONLINE /u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_1_kq1w9zyc_.log NO 0
    4 ONLINE /u01/app/oracle/oradata/ORCL/onlinelog/group_4_1.log NO 0
    1 INVALID ONLINE /u01/app/oracle/oradata/ORCL/onlinelog/group_1_2.log NO 0
    SQL>

3. 切换日志组

  • 连续切换日志组

    SQL> select group#, THREAD#, BYTES/1024/1024, STATUS from v$log;
    GROUP# THREAD# BYTES/1024/1024 STATUS
    ------ ---------- --------------- ----------
    1 1 200 INACTIVE
    2 1 200 ACTIVE
    3 1 200 INACTIVE
    4 1 200 CURRENT
    SQL>
    SQL> select group#, THREAD#, BYTES/1024/1024, STATUS from v$log;
    GROUP# THREAD# BYTES/1024/1024 STATUS
    ------ ---------- --------------- ----------
    1 1 200 INACTIVE
    2 1 200 ACTIVE
    3 1 200 CURRENT
    4 1 200 ACTIVE
    SQL>
    SQL> select group#, THREAD#, BYTES/1024/1024, STATUS from v$log;
    GROUP# THREAD# BYTES/1024/1024 STATUS
    ------ ---------- --------------- ----------
    1 1 200 CURRENT
    2 1 200 ACTIVE
    3 1 200 ACTIVE
    4 1 200 ACTIVE
    SQL>

4.删除日志组

要删除的日志组必须要归档完毕,才可以删除,即STATUS为: INACTIVE, (如果STATUS为ACTIVE, 但是没有记录任何操作,直接删除该日志组也会删除)。

删除的日志组只是在数据库层面上的删除,实际上该日志组中的日志文件还是存在我们的文件系统上。

  • 执行强制检查点

    SQL> alter system checkpoint;
    System altered.
    SQL>
  • 删除日志组

    SQL> alter database drop logfile group 4;
    Database altered.
    SQL>
  • 查看日志组信息

    SQL> select group#, THREAD#, BYTES/1024/1024, STATUS from v$log;
    GROUP# THREAD# BYTES/1024/1024 STATUS
    ------ ---------- --------------- ----------
    1 1 200 CURRENT
    2 1 200 INACTIVE
    3 1 200 INACTIVE
    SQL>
  • 查看删除的日志组所在目录文件信息

    可以看到删除的redo日志组的日志文件还是存在文件系统上的。

    如果再次创建redo日志组4,并且执行的日志文件路径和名称与之前的一样的话,会报该文件已经存在。

    [oracle@oracle ~]$ cd /u01/app/oracle/oradata/ORCL/onlinelog/
    [oracle@oracle onlinelog]$ ls
    group_1_2.log group_4_1.log o1_mf_1_kq1w9zyc_.log o1_mf_2_kq1wb023_.log o1_mf_3_kq1wb03p_.log
    [oracle@oracle onlinelog]$
  • 再次创建redo日志组4

    再次创建报以下错误

    SQL> alter database add logfile group 4 '/u01/app/oracle/oradata/ORCL/onlinelog/group_4_1.log' size 200M;
    alter database add logfile group 4 '/u01/app/oracle/oradata/ORCL/onlinelog/group_4_1.log' size 200M
    *
    ERROR at line 1:
    ORA-00301: error in adding log file '/u01/app/oracle/oradata/ORCL/onlinelog/group_4_1.log' - file cannot be created
    ORA-27038: created file already exists
    Additional information: 1
  • 删掉旧redo日志文件

    [oracle@oracle onlinelog]$ rm -rf /u01/app/oracle/oradata/ORCL/onlinelog/group_4_1.log

再次创建redo日志组,创建成功

SQL> alter database add logfile group 4 '/u01/app/oracle/oradata/ORCL/onlinelog/group_4_1.log' size 200M;
Database altered.
SQL> select group#, THREAD#, BYTES/1024/1024, STATUS from v$log;
GROUP# THREAD# BYTES/1024/1024 STATUS
------ ---------- --------------- ----------
1 1 200 CURRENT
2 1 200 INACTIVE
3 1 200 INACTIVE
4 1 200 UNUSED
SQL>ag-0-1girr8d4jag-1-1girr8d4j

posted @   何以卿卿  阅读(77)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· 万字调研——AI生成内容检测
· 解决跨域问题的这6种方案,真香!
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
欢迎阅读『Redo日志管理』
点击右上角即可分享
微信分享提示