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

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

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











The main role of MySQL in web applications is to store and manage data. 1.MySQL efficiently processes user information, product catalogs, transaction records and other data. 2. Through SQL query, developers can extract information from the database to generate dynamic content. 3.MySQL works based on the client-server model to ensure acceptable query speed.

InnoDB uses redologs and undologs to ensure data consistency and reliability. 1.redologs record data page modification to ensure crash recovery and transaction persistence. 2.undologs records the original data value and supports transaction rollback and MVCC.

MySQL's position in databases and programming is very important. It is an open source relational database management system that is widely used in various application scenarios. 1) MySQL provides efficient data storage, organization and retrieval functions, supporting Web, mobile and enterprise-level systems. 2) It uses a client-server architecture, supports multiple storage engines and index optimization. 3) Basic usages include creating tables and inserting data, and advanced usages involve multi-table JOINs and complex queries. 4) Frequently asked questions such as SQL syntax errors and performance issues can be debugged through the EXPLAIN command and slow query log. 5) Performance optimization methods include rational use of indexes, optimized query and use of caches. Best practices include using transactions and PreparedStatemen

Compared with other programming languages, MySQL is mainly used to store and manage data, while other languages such as Python, Java, and C are used for logical processing and application development. MySQL is known for its high performance, scalability and cross-platform support, suitable for data management needs, while other languages have advantages in their respective fields such as data analytics, enterprise applications, and system programming.

MySQL is suitable for small and large enterprises. 1) Small businesses can use MySQL for basic data management, such as storing customer information. 2) Large enterprises can use MySQL to process massive data and complex business logic to optimize query performance and transaction processing.

MySQL index cardinality has a significant impact on query performance: 1. High cardinality index can more effectively narrow the data range and improve query efficiency; 2. Low cardinality index may lead to full table scanning and reduce query performance; 3. In joint index, high cardinality sequences should be placed in front to optimize query.

The basic operations of MySQL include creating databases, tables, and using SQL to perform CRUD operations on data. 1. Create a database: CREATEDATABASEmy_first_db; 2. Create a table: CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY, titleVARCHAR(100)NOTNULL, authorVARCHAR(100)NOTNULL, published_yearINT); 3. Insert data: INSERTINTObooks(title, author, published_year)VA

MySQL is suitable for web applications and content management systems and is popular for its open source, high performance and ease of use. 1) Compared with PostgreSQL, MySQL performs better in simple queries and high concurrent read operations. 2) Compared with Oracle, MySQL is more popular among small and medium-sized enterprises because of its open source and low cost. 3) Compared with Microsoft SQL Server, MySQL is more suitable for cross-platform applications. 4) Unlike MongoDB, MySQL is more suitable for structured data and transaction processing.
