Oracle Dataguard Standby Redo Log的两个实验
在Data Guard环境中,Standby Redo Log是一个比较特殊的日志类型。从最新的DG安装指导中,都推荐在Primary和Standby端,都配置St
在Data Guard环境中,Standby Redo Log是一个比较特殊的日志类型。从最新的DG安装指导中,都推荐在Primary和Standby端,都配置Standby Redo Log。
简单的说,Standby Redo Log就是在Standby端应用传递Redo Log过程中,逐步执行的online redo log。Standby端虽然也有online redo log,但是在redo apply应用的过程中,是不使用online redo log的。即使是11g Active Data Guard支持apply中读取standby数据,这个操作也是read-only的,并不涉及当前实例redo log的生成(注意是生成)。所以,如果一直是在Standby角色,online redo log是不需要的。
Primary传递过来的redo log信息,是存放在standby redo log组内进行apply的。并且随着主库Primary日志的切换动作而切换。这也就是为什么推荐standby redo log的大小和Primary online redo log的大小保持一致的原因。
下面会从维护角度,讨论Standby Redo log维护过程中的方法。
--------------------------------------分割线 --------------------------------------
相关参考:
Oracle Data Guard 重要配置参数
基于同一主机配置 Oracle 11g Data Guard
探索Oracle之11g DataGuard
Oracle Data Guard (RAC+DG) 归档删除策略及脚本
Oracle Data Guard 的角色转换
Oracle Data Guard的日志FAL gap问题
Oracle 11g Data Guard Error 16143 Heartbeat failed to connect to standby 处理方法
--------------------------------------分割线 --------------------------------------
1、环境介绍
数据库版本为11.2.0.4,已经构建好DG环境。Primary数据库实例名ora11g。
SQL> select name, DATABASE_ROLE from v$database;
NAME DATABASE_ROLE
--------- ----------------
ORA11G PRIMARY
Primary上也是需要配置standby redo log的。但是,这个redo log和Standby端的online redo log一样,都是在角色switch/failover之后,才会发挥作用。
SQL> col dbid for a20;
SQL> select group#, dbid, sequence#, archived, status from v$standby_log;
GROUP# DBID SEQUENCE# ARCHIVED STATUS
---------- -------------------- ---------- -------- ----------
4 UNASSIGNED 0 YES UNASSIGNED
5 UNASSIGNED 0 YES UNASSIGNED
6 UNASSIGNED 0 YES UNASSIGNED
文件自动管理参数设置为Auto。
SQL> show parameter standby_file
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string AUTO
2、Primary端Standby Redo Log配置
Primary角色下,Standby Redo Log是不使用的。原则上也没有什么特殊的用途。所以,我们查看v$standby_log视图时查看到的Primary端状态都是unsigned,也就是没有使用。
在Primary正常Read Write状态下,,我们是可以添加standby log group的。
SQL> alter database add standby logfile group 8 size 100m;
Database altered
SQL> select group#, dbid, sequence#, archived, status from v$standby_log;
GROUP# DBID SEQUENCE# ARCHIVED STATUS
---------- -------------------- ---------- -------- ----------
4 UNASSIGNED 0 YES UNASSIGNED
5 UNASSIGNED 0 YES UNASSIGNED
6 UNASSIGNED 0 YES UNASSIGNED
8 UNASSIGNED 0 YES UNASSIGNED
在v$logfile中,可以看到对应的添加文件。由于使用的OMF特性,创建成员组为两个,在recovery area中有对应镜像。
SQL> select group#, type, member from v$logfile;
GROUP# TYPE MEMBER
---------- ------- --------------------------------------------------------------------------------
(篇幅原因,有省略……)
7 ONLINE /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_7_9pclt1lt_.log
8 STANDBY /u01/app/oradata/ORA11G/onlinelog/o1_mf_8_9pgqt9hg_.log
8 STANDBY /u01/app/fast_recovery_area/ORA11G/onlinelog/o1_mf_8_9pgqtcgj_.log
16 rows selected
在standby端,我们查看是否有对应standby redo log自动添加。
SQL> select group#, sequence#, dbid,status from v$standby_log;
GROUP# SEQUENCE# DBID STATUS
---------- ---------- -------------------- ----------
4 34 4239941846 ACTIVE
5 0 UNASSIGNED UNASSIGNED
6 0 UNASSIGNED UNASSIGNED
Primary端删除standby redo log。
SQL> alter database drop standby logfile group 8;
Database altered
SQL> select group#, dbid, sequence#, archived, status from v$standby_log;
GROUP# DBID SEQUENCE# ARCHIVED STATUS
---------- -------------------- ---------- -------- ----------
4 UNASSIGNED 0 YES UNASSIGNED
5 UNASSIGNED 0 YES UNASSIGNED
6 UNASSIGNED 0 YES UNASSIGNED
从实验情况看:在Primary端,我们进行standby redo log的管理是比较方便的。没有过多的限制。
3、Standby端Standby Redo Log维护
当前Primary端的Online Redo Log情况。
SQL> select group#, sequence#, bytes, status from v$log;
GROUP# SEQUENCE# BYTES STATUS
---------- ---------- ---------- ----------------
1 32 104857600 INACTIVE
2 34 52428800 INACTIVE
3 35 52428800 CURRENT
7 33 10485760 INACTIVE
此时,standby端的standby redo log情况如下:
SQL> select group#, sequence#, dbid,status from v$standby_log;
GROUP# SEQUENCE# DBID STATUS
---------- ---------- -------------------- ----------
4 35 4239941846 ACTIVE
5 0 UNASSIGNED UNASSIGNED
6 0 UNASSIGNED UNASSIGNED
standby redo log对应的是当前Primary的online current redo log。反映在sequence#相同。我们尝试直接添加standby日志。
SQL> alter database add standby logfile group 8 size 100m;
alter database add standby logfile group 8 size 100m
ORA-01156: 进行中的恢复或闪回可能需要访问文件
当前standby处在apply过程,终止apply动作。
SQL> alter database recover managed standby database cancel;
Database altered
SQL> alter database add standby logfile group 8 size 100m;
Database altered
standby redo log日志情况。
SQL> select group#, dbid, sequence#, archived, status from v$standby_log;
GROUP# DBID SEQUENCE# ARCHIVED STATUS
---------- -------------------- ---------- -------- ----------
4 4239941846 35 YES ACTIVE
5 UNASSIGNED 0 NO UNASSIGNED
6 UNASSIGNED 0 NO UNASSIGNED
8 UNASSIGNED 0 YES UNASSIGNED
之后可以启动redo apply过程。
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered
更多详情见请继续阅读下一页的精彩内容:

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

This article explores optimizing MySQL memory usage in Docker. It discusses monitoring techniques (Docker stats, Performance Schema, external tools) and configuration strategies. These include Docker memory limits, swapping, and cgroups, alongside

This article addresses MySQL's "unable to open shared library" error. The issue stems from MySQL's inability to locate necessary shared libraries (.so/.dll files). Solutions involve verifying library installation via the system's package m

The article discusses using MySQL's ALTER TABLE statement to modify tables, including adding/dropping columns, renaming tables/columns, and changing column data types.

This article compares installing MySQL on Linux directly versus using Podman containers, with/without phpMyAdmin. It details installation steps for each method, emphasizing Podman's advantages in isolation, portability, and reproducibility, but also

This article provides a comprehensive overview of SQLite, a self-contained, serverless relational database. It details SQLite's advantages (simplicity, portability, ease of use) and disadvantages (concurrency limitations, scalability challenges). C

This guide demonstrates installing and managing multiple MySQL versions on macOS using Homebrew. It emphasizes using Homebrew to isolate installations, preventing conflicts. The article details installation, starting/stopping services, and best pra

Article discusses configuring SSL/TLS encryption for MySQL, including certificate generation and verification. Main issue is using self-signed certificates' security implications.[Character count: 159]

Article discusses popular MySQL GUI tools like MySQL Workbench and phpMyAdmin, comparing their features and suitability for beginners and advanced users.[159 characters]
