`
Appleses
  • 浏览: 347866 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

DataGuard Logical standby维护命令手册

 
阅读更多

1.查看logical standby上当前正在apply的redo log

COLUMN DICT_BEGIN FORMAT A15;
COLUMN FILE_NAME FORMAT A30;
SET NUMF 9999999;
COL FCHANGE# format 9999999999999;
COL NCHANGE# for 999999999999999999999;
SET line 200
SELECT  file_name, sequence# AS seq#, first_change# AS fchange#,
        next_change# AS nchange#, TIMESTAMP, dict_begin AS beg,
        dict_end AS END, thread# AS thr#, applied
    FROM dba_logstdby_log
ORDER BY thread#;


2. 查看logical standby节点apply进程状态

select sid,type,status_code,status from v$logstdby_process;

set linesize 120
col type for a10
col status for a40
col sid for 9999
col high_scn for 9999999999999
select * from v$logstdby_process where status_code<>16116;


查看applyer进程的个数

SELECT COUNT(*) AS APPLIER_COUNT FROM V$LOGSTDBY_PROCESS WHERE TYPE = 'APPLIER';


查看空闲的applyer进程

SELECT COUNT(*) AS IDLE_APPLIER 
FROM V$LOGSTDBY_PROCESS WHERE TYPE = 'APPLIER' and status_code = 16166;


3. 调整logical standby的apply进程数

ALTER DATABASE STOP LOGICAL STANDBY APPLY; --- Stop SQL Apply
EXECUTE DBMS_LOGSTDBY.APPLY_SET('APPLY_SERVERS', 20); --- 调整apply进程数为20,默认为5个
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE; --- Start real-time Apply


确认logical standby上的空闲APPLIER进程

SELECT COUNT (*) AS idle_applier
  FROM v$logstdby_process
WHERE TYPE = 'APPLIER' AND status_code = 16166;


注:status_code = 16166 表示进程是空闲状态,可以看到"STATS"为"ORA-16116: no work available"

如何根据系统表现调整APPLIER进程的个数,统计transactions的apply状态,

SQL> SELECT NAME, VALUE FROM V$LOGSTDBY_STATS WHERE NAME LIKE 'transactions%';

NAME                        VALUE
-------------------------- ----------------------------
transactions ready          159
transactions applied        159


如果ready(等待apply)和applied(已经apply)的值基本同步,则设置的APPLIER进程合适或偏多。根据IDLE_APPLIER的进程数,可减少APPLIER进程数目.如果transactions ready - transactions applied的差比APPLIER进程数的2倍还多,则需要增加APPLIER进程数目了。

4. 调整PREPARER(调制机)的进程数

logical standby上有很多transactions等待apply, 但是还有空闲的applyer进程,且已经没有idle状态的PREPARER进程,这时需要增加PREPARER(调制机)的进程数。如下:

ALTER DATABASE STOP LOGICAL STANDBY APPLY; --- Stop SQL Apply
EXECUTE DBMS_LOGSTDBY.APPLY_SET('PREPARE_SERVERS', 4); --- 调整PREPARER进程数为4
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE; --- Start real-time Apply


5. 计算logical standby的apply速度

可以通过v$logstdby_stats视图统计logical standby的apply速度,计算公式如下:
apply_rate = bytes of redo processed / (coordinator uptime - seconds system is idle)

比如:

SELECT NAME, VALUE
  FROM v$logstdby_stats
WHERE NAME IN
          ('coordinator uptime',
          'seconds system is idle',
          'bytes of redo processed'
          );

NAME                        VALUE
--------------------------- ---------------------------------
coordinator uptime          78717
bytes of redo processed    7954813012
seconds system is idle      40

logical standby.apply_rate = 7954813012/(78717-40)/1024/1024


整理成1条sql语句计算出apply_rate如下:

SELECT c.VALUE / (a.VALUE - b.VALUE) / 1024 / 1024 AS "APPLY_RATE"
  FROM v$logstdby_stats a, v$logstdby_stats b, v$logstdby_stats c
WHERE a.NAME = 'coordinator uptime'
  AND b.NAME = 'seconds system is idle'
  AND c.NAME = 'bytes of redo processed';



6. 统计logical standby上是否有报错信息

SELECT xidusn, xidslt, xidsqn, status, status_code
  FROM dba_logstdby_events
WHERE event_time = (SELECT MAX (event_time)
                      FROM dba_logstdby_events);


7. 调整MAX_SGA - 防止Pageouts

SQL> select value bytes from v$logstdby_stats where name='bytes paged out';


注:如果以上查询结果在增长,则查到当前MAX_SGA的大小:

SQL> select value from v$logstdby_stats where name = 'maximum SGA for LCR cache';
VALUE
------------------------
30


增大MAX_SGA,备注:10gR2,MAX_SGA可以增大到4095 MB.

SQL> alter database stop logical standby apply;
Database altered.
SQL> execute dbms_logstdby.apply_set('MAX_SGA',1000);
PL/SQL procedure successfully completed.
SQL> alter database start logical standby apply immediate;
Database altered.


逻辑备库需要将redo记录解析成LCR,会在shared pool里分配一部分空间来作为LCR Cache,如果cache太小,就会像OS的虚拟内存管理一样,需要做page out,这会严重影响应用日志的性能。默认情况下,LCR Cache为Shared pool的四分之一,最少不少于30M,否则SQL Apply不能启动。如果机器的内存足够,建议将LCR Cache尽量设大一点,当然,同时share pool也要足够大。如果机器内存有限,那可以考虑将buffer cache减少一点来给LCR Cache腾出空间。

8.跳过特定表或Schema的DML或DDL事务

alter database stop logical standby apply;
execute dbms_logstdby.skip (stmt => 'DML', schema_name => 'EYGLE',
object_name => 'SALES', proc_name => null);
execute dbms_logstdby.skip (stmt => 'SCHEMA_DDL', schema_name => 'EYGLE',
object_name => 'SALES', proc_name => null);
execute dbms_logstdby.skip (stmt => 'DML',
schema_name => 'EYGLE', object_name => '%', proc_name => null);
execute dbms_logstdby.skip (stmt => 'SCHEMA_DDL',
schema_name => 'EYGLE', object_name => '%', proc_name => null);
alter database start logical standby apply;


9.如何重新初始化数据表
通过以下查询确认当前的skip规则:
select * from dba_logstdby_skip;

建议取消Skip之后,再重新初始化:

alter database stop logical standby apply;
execute dbms_logstdby.unskip('DML','EYGLE','SALES');
exec dbms_logstdby.instantiate_table('EYGLE','SALES','dblink_name');
alter database start logical standby apply;

 

10. Starting Real-time Apply

To start real-time apply on the logical standby database to immediately recover redo data from the standby redo log files on the logical standby database, include the IMMEDIATE keyword as shown in the following statement:

SQL>  ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

11.Stopping Log Apply Services on a Logical Standby Database

To stop SQL Apply, issue the following statement on the logical standby database:

SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;

When you issue this statement, SQL Apply waits until it has committed all complete transactions that were in the process of being applied. Thus, this command may not stop the SQL Apply processes immediately.

If you want to stop SQL Apply immediately, issue the following statement:

SQL> ALTER DATABASE ABORT LOGICAL STANDBY APPLY;


Oracle文档参考:

INSTANTIATE_TABLE Procedure

This procedure creates and populates a table in the standby database from a corresponding table in the primary database. The table requires the name of the database link (dblink) as an input parameter.

Use the INSTANTIATE_TABLE procedure to:

  • Add a table to a standby database
  • Re-create a table in a standby database

Syntax

DBMS_LOGSTDBY.INSTANTIATE_TABLE (
     table_name          IN VARCHAR2,
     schema_name         IN VARCHAR2,
     dblink              IN VARCHAR2);

Parameters

Table 29-4 describes the parameters for the INSTANTIATE_TABLE procedure.

Table 29-4  DBMS_LOGSTDBY.INSTANTIATE_TABLE Procedure Parameters
ParameterDescription

table_name

Name of the table to be created or re-created in the standby database.

schema_name

Name of the schema.

dblink

Name of the database link account that has privileges to read and lock the table in the primary database.

Exceptions

None.

Usage Notes

  • Use this procedure to create and populate a table in a way that keeps the data on the standby database transactionally consistent with the primary database.
  • This procedure assumes that the metadata has been maintained correctly.
  • This table is not safe until the redo log that was current on the primary database at the time of execution is applied to the standby database.

Example

Enter this statement to create and populate a new table on the standby database.

SQL> EXECUTE DBMS_LOGSTDBY.INSTANTIATE_TABLE ('myschema', 'mytable', 'mydblink');

 

 

 

转载于:http://www.eygle.com/digest/2009/02/logical_standby_manual.html

分享到:
评论

相关推荐

    oracle dataguard 逻辑standby建立

    2. **创建控制文件**:在主节点上为逻辑 Standby 数据库创建控制文件,使用命令 `ALTER DATABASE CREATE LOGICAL STANDBY CONTROLFILE AS '/tmp/logical.ctl';`。 3. **复制控制文件**:将新创建的控制文件从主节点...

    运用logical standby技术实现Oracle数据库的读写分离

    6. **监控与维护**:持续监控 Logical Standby 状态,确保无日志 gap 或其他异常,定期执行一致性检查,并根据需要调整备库的读写策略。 Logical Standby 的优点包括: - **低延迟**:由于备库实时应用日志,数据...

    Oracle11G DataGuard相同SID物理Standby搭建手册

    - **配置逻辑切换**:通过`ALTER DATABASE RECOVER MANAGED STANDBY DATABASE`命令开始同步进程,启用Logical Standby Redo Apply。 4. **redo日志传输** - **Physical Standby的redo应用**:通过Fast ...

    DataGuard基本原理和管理手册(英).pdf

    ### DataGuard基本原理与管理手册知识点概述 #### 一、DataGuard简介 Oracle DataGuard是一种高可用性解决方案,旨在提供数据库级别的灾难恢复和数据保护功能。通过在远程位置创建一个或多个物理上独立的副本(即...

    dataguard 10g standby架设参考

    主要角色包括Primary Database(主数据库)和Standby Database(备用数据库),可能还包括一个或多个Physical Standby(物理备用)或Logical Standby(逻辑备用)数据库。 在Oracle 10g中,配置Data Guard的步骤...

    ORACLE-DataGuard系列:逻辑standby搭建.doc

    ### ORACLE DataGuard系列:逻辑Standby搭建 #### 概述 Oracle Data Guard是一种全面的解决方案,用于提供最高级别的数据保护、数据可用性和灾难恢复。它通过在远程位置创建并维护一个或多个完整副本(Standby...

    DataGuard安装

    Oracle DataGuard 是一项关键的高可用性技术,用于创建并维护一个或多个与主数据库(Primary Database)完全同步的副本(Standby Database)。这些副本可以是物理副本、逻辑副本或是组合副本。DataGuard 提供了多种...

    Oracle 白皮书 dataguard vs storage mirroring

    Physical Standby适合需要快速故障切换的情况,而Logical Standby则允许在备用数据库上执行查询和更新操作,进一步扩展了Dataguard的灵活性和实用性。 总的来说,Oracle Dataguard与Active Data Guard提供了超过...

    个人学习DataGuard 心得

    7. **监控和管理**:借助Oracle Enterprise Manager或SQL命令,我们可以轻松监控DataGuard的状态,配置和管理DataGuard环境,以及进行故障诊断和性能优化。 通过学习DataGuard,我深刻理解到其在保障企业关键业务...

    Oracle DataGuard 理论知识

    DataGuard还支持不同类型的备用数据库,如物理备用数据库(Physical Standby)和逻辑备用数据库(Logical Standby)。物理备用数据库与主数据库结构完全相同,同步方式为直接应用重做日志;逻辑备用数据库则将重做...

    dataguard 图文手册

    5. **Logical Standby Databases**: - 不是数据文件的简单副本,而是通过SQL Apply处理redo日志,适用于需要进行复杂转换或分析的场景。 6. **Fast Start Failover (FSFO)**: - 自动故障切换机制,当主数据库...

    ORACLE dataguard

    通过在主数据库(Primary Database)与一个或多个备用数据库(Standby Database)之间建立复制关系,DataGuard能够实现实时数据保护,确保业务连续性。下面,我们将深入探讨Oracle DataGuard的核心概念、工作原理...

    ORACLE DATAGUARD文件配置

    Oracle DataGuard是Oracle数据库系统提供的一种高可用性和灾难恢复解决方案,它通过创建并维护一个或多个数据库副本(称为物理 standby数据库或逻辑 standby数据库),在主数据库出现故障时,能够快速接管业务,确保...

    DataGuard数据库同步

    2. Logical Standby:目标数据库保持打开状态,使用 LogMiner 解析日志并执行 SQL 语句来同步。允许在保持同步的同时执行查询,减轻源数据库压力。 DataGuard 的优点包括: 1. 内置Oracle数据库,与新版本完全兼容...

    [三思笔记]一步一步学DataGuard

    2. **逻辑 Standby(Logical Standby)** - 逻辑 Standby 也是 Primary 数据库的一个副本,但它不仅可以接收 Redo 日志,还可以执行 SQL 应用程序对这些 Redo 日志进行处理。 - 这意味着逻辑 Standby 不仅能保持...

    (完整版)Oracle-DataGuard建立维护恢复V1.2.doc

    - **备用模式**:DataGuard 支持多种备用模式,如物理备用(Physical Standby)、逻辑备用(Logical Standby)和同步/异步模式,以适应不同级别的保护需求。 - **数据保护模式**:包括最大保护(Maximum Protection...

    一步一步学习DATAGUARD

    - **Logical Standby Database**:逻辑备库,通过SQL Apply进程将Redo数据转化为SQL语句来保持与主数据库的一致性。 - **Maximum Availability**:最高可用性模式,通过持续监控主数据库状态并在故障发生时立即...

    oracle_standby_training.ppt

    Oracle DataGuard 提供了一套全面的高可用性方案,包括物理备用数据库(Physical Standby)和逻辑备用数据库(Logical Standby)。物理备用数据库是主数据库的一个实时副本,通过redo应用保持与主数据库的一致性。...

    大牛教你配置Oracle 11g Active Dataguard

    在不影响主数据库性能的情况下,Active Data Guard还支持使用Logical Standby功能进行报表查询,将读取压力转移到standby数据库,提高整体系统的性能。 9. **安全性和审计**: 配置Active Data Guard时,也要考虑...

Global site tag (gtag.js) - Google Analytics