当前位置 博文首页 > 文章内容

    Handling ORL and SRL (Resize) on Primary and Physical Standby in Data Guard Environment (Doc ID 1532566.1)

    作者: 栏目:未分类 时间:2020-10-16 9:01:16

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    Copyright (c) 2020, Oracle. All rights reserved. Oracle Confidential.

    Handling ORL and SRL (Resize) on Primary and Physical Standby in Data Guard Environment (Doc ID 1532566.1)

    In this Document
    Goal
    Solution
    References

    APPLIES TO:
    Oracle Database - Enterprise Edition - Version 10.1.0.2 and later
    Oracle Database Cloud Schema Service - Version N/A and later
    Oracle Database Exadata Cloud Machine - Version N/A and later
    Oracle Database Exadata Express Cloud Service - Version N/A and later
    Oracle Cloud Infrastructure - Database Service - Version N/A and later
    Information in this document applies to any platform.
    GOAL
    NOTE: In the images and/or the document content below, the user information and environment data used represents fictitious data from the Oracle sample schema(s), Public Documentation delivered with an Oracle database product or other training material. Any similarity to actual environments, actual persons, living or dead, is purely coincidental and not intended in any manner.
    For the purposes of this document, the following fictitious environment is used as an example to describe the procedure:

    Primary Database: prm11203
    Standby Database: std11203


    It has been seen in cases where ORA-16401 and ORA-16055 reported in primary alert log when redo log switch is over frequently. So suggestion is to Increase the Size of the Online Redologs to reduce Redolog Switch Frequency. And this may also required to improve primary database performance.

    So the purpose of this article is How to Increase size of Redo Logs in a Dataguard Environment when Physical Standby in place.

    SOLUTION
    Please note if using Maximum Protection mode, you need to downgrade to Maximum availability mode first and then perform the below steps. Starting with 11gR2 this no longer needs a Primary database restart to downgrade to Max Availability mode and then upgrade to Max Protection mode.

    Primary Database:

    $sqlplus sys/ as sysdba

    SQL*Plus: Release 11.2.0.3.0 Production on Tue Feb 26 10:41:27 2013

    Copyright (c) 1982, 2011, Oracle. All rights reserved.

    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    SQL> select status,instance_name,database_role from v$database,v$instance;

    STATUS INSTANCE_NAME DATABASE_ROLE


    OPEN prm11203 PRIMARY

    SQL> select group#,sum(bytes/1024/1024)"Size in MB" from v$log group by group#;

    GROUP# Size in MB
    

         1         50
         2         50
         3         50
    

    SQL> select group#,sum(bytes/1024/1024)"Size in MB" from v$standby_log group by group#;

    GROUP# Size in MB
    

         6         50
         4         50
         5         50
         7         50
    

    Standby Database:

    $sqlplus sys/ as sysdba

    SQL*Plus: Release 11.2.0.3.0 Production on Tue Feb 26 10:48:30 2013

    Copyright (c) 1982, 2011, Oracle. All rights reserved.

    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    SQL> select status,instance_name,database_role from v$database,v$Instance;

    STATUS INSTANCE_NAME DATABASE_ROLE


    OPEN std11203 PHYSICAL STANDBY

    SQL> select group#, sum(bytes/1024/1024)"Size in MB" from v$log group by group#;

    GROUP# Size in MB
    

         1         50
         2         50
         3         50
    

    SQL> select group#,sum(bytes/1024/1024)"Size in MB" from v$standby_log group by group#;

    GROUP# Size in MB
    

         6         50
         4         50
         5         50
         7         50
    

    Check if the parameter standby_file_management is set to AUTO or MANUAL on standby database. If it is not set to MANUAL, then set it.

    SQL> show parameter standby_file_management

    NAME TYPE VALUE


    standby_file_management string AUTO

    SQL> alter system set standby_file_management=manual;

    System altered.

    SQL> show parameter standby_file_management

    NAME TYPE VALUE


    standby_file_management string MANUAL

    On the primary database:

    Check the status of the Online Redo Logs and resize them by dropping the INACTIVE redo logs and re-creating them with the new size.

    SQL> select group#,status from v$log;

    GROUP# STATUS
    

         1 INACTIVE
         2 INACTIVE
         3 CURRENT
    

    Here you can see that Online Redo Log groups 1 and 2 are INACTIVE. Hence we can drop them and re-create with the new size.

    SQL> alter database drop logfile group 1;

    Database altered.

    SQL> alter database add logfile group 1 size 100M;

    Database altered.

    The files will be created in either the default or current directory of the database server, depending upon your operating system.

    Here it would be created in fast_recovery_area since it is already configured.

    Use can fully specify filenames of new log members to indicate where the operating system file should be created.
    for example:
    ALTER DATABASE ADD LOGFILE GROUP 1 ('/u02/oradata/prm11203/redo01.log') SIZE 100M;

    SQL> select group#,status from v$log;

    GROUP# STATUS


    1 UNUSED
    2 INACTIVE
    3 CURRENT

    SQL> alter database drop logfile group 2;

    Database altered.

    SQL> alter database add logfile group 2 size 100M;

    Database altered.

    SQL> select group#,status from v$log;

    GROUP# STATUS


    1 UNUSED
    2 UNUSED
    3 CURRENT

    Now that Online Redo Log Groups 1 and 2 are resized and the status of Group 3 is CURRENT, switch logfiles manually until Group 3 becomes INACTIVE.

    After log switches, we can check the Status of Group 3

    SQL> alter system switch logfile;

    System altered.

    SQL> select group#,status from v$log;

    GROUP# STATUS
    

         1 CURRENT
         2 UNUSED
         3 ACTIVE
    

    SQL> alter system switch logfile;

    System altered.

    SQL> select group#,status from v$log;

    GROUP# STATUS
    

         1 ACTIVE
         2 CURRENT
         3 ACTIVE
    

    SQL> alter system checkpoint;

    System altered.

    SQL> select group#,status from v$log;

    GROUP# STATUS
    

         1 INACTIVE
         2 CURRENT
         3 INACTIVE
    

    Now that Group 3 is INACTIVE, we can drop it and re-create it with the new size.

    SQL> alter database drop logfile group 3;

    Database altered.

    SQL> alter database add logfile group 3 size 100M;

    Database altered.

    Now, we have resized all the Online Redo Logs on the Primary Database from 50M to 100M.

    SQL> select group#,sum(bytes/1024/1024)"size in MB" from v$log group by group#;

    GROUP# size in MB


    1 100
    2 100
    3 100

    Moving on to the Standby Redo Logs on the Primary Database:

    SQL> select group#,sum(bytes/1024/1024)"size in MB" from v$standby_log group by group#;

    GROUP# size in MB


    6 50
    4 50
    5 50
    7 50

    SQL> select group#,status from v$standby_log;

    GROUP# STATUS


    4 UNASSIGNED
    5 UNASSIGNED
    6 UNASSIGNED
    7 UNASSIGNED

    The status of the Standby Redo Logs (SRL) on the Primary database would be UNASSIGNED as they would be used only when the primary database starts behaving as a Standby (Switchover)
    We can easily drop the UNASSIGNED SRLs and re-create them with the new size.

    SQL> alter database drop standby logfile group 4;

    Database altered.

    SQL> alter database add standby logfile group 4 size 100M;

    Database altered.
    Repeat this for the remaining SRLs on the primary database and we can see below that all the SRL on the Primary database have been resized.

    SQL> select group#,sum(bytes/1024/1024)"size in MB" from v$standby_log group by group#;

    GROUP# size in MB
    

         6        100
         4        100
         5        100
         7        100
    

    Moving on to the standby database:

    SQL> select group#,status from v$log;

    GROUP# STATUS


    1 CURRENT
    3 CLEARING
    2 CLEARING

    Lets try to drop Online Redo Log Group 2 as Group 1 is CURRENT status and it cannot be dropped.

    SQL> alter database drop logfile group 2;
    alter database drop logfile group 2
    *
    ERROR at line 1:
    ORA-01156: recovery or flashback in progress may need access to files

    Here above, we faced ORA-01156 error, which is self-explanatory. The recovery (MRP process) on the standby database is active and it needs to be cancelled before we drop any Redo log groups.

    SQL> alter database recover managed standby database cancel;

    Database altered.

    Since the status of Group 2 is still clearing, lets clear it manually before dropping the group.

    SQL> alter database clear logfile group 2;

    Database altered.

    SQL> alter database drop logfile group 2;

    Database altered.

    SQL> alter database add logfile group 2 size 100M;

    Database altered.

    SQL> select group#,status from v$log;

    GROUP# STATUS


    1 CURRENT
    3 CLEARING
    2 UNUSED

    The same is the case with Group 3 whose status is CLEARING. We’ll clear it manually, drop it and create with the new size.

    SQL> alter database clear logfile group 3;

    Database altered.

    SQL> alter database drop logfile group 3;

    Database altered.

    SQL> alter database add logfile group 3 size 100M;

    Database altered.

    To drop online redo log group 1 that is in status CURRENT, generate an archive on the primary database by switching logfile, and then clear the CURRENT online redo log group on the standby database, drop it and re-create it with the required size as done for groups 2 and 3 earlier.

    SQL> select group#,sum(bytes/1024/1024)"size in MB" from v$log group by group#;

    GROUP# size in MB


    1 100
    2 100
    3 100

    Resizing Standby Redo Logs on standby database:

    SQL> select group#,sum(bytes/1024/1024)"size in MB" from v$standby_log group by group#;

    GROUP# size in MB


    4 50
    5 50
    6 50
    7 50

    SQL> select group#,status from v$standby_log;

    GROUP# STATUS


    4 ACTIVE
    5 UNASSIGNED
    6 UNASSIGNED
    7 UNASSIGNED

    Clear the SRL group whose status is ACTIVE as done earlier, drop the group and re-create them with the size same as that of the Online Redo Logs.

    For the SRL groups whose status is UNASSIGNED, just drop the group and recreate them with the size same as that of the Online Redo Logs.

    SQL> select group#,sum(bytes/1024/1024)"size in MB" from v$log group by group#;

    GROUP# size in MB


    1 100
    2 100
    3 100

    SQL> select group#,sum(bytes/1024/1024)"size in MB" from v$standby_log group by group#;

    GROUP# size in MB


    4 100
    5 100
    6 100
    7 100

    Once all the Standby Redo Logs and Online Redo Logs have been resize on both Primary and standby database, set the STANDBY_FILE_MANAGEMENT to AUTO on the standby database and start the recovery (MRP) on standby database.

    SQL> alter system set standby_file_management=auto;

    System altered.

    SQL> alter database recover managed standby database disconnect from session using current logfile;

    Database altered.

    SQL> select process,status,sequence# from v$managed_standby;

    PROCESS STATUS SEQUENCE#


    ARCH CONNECTED 0
    ARCH CLOSING 66
    ARCH CONNECTED 0
    ARCH CLOSING 63
    RFS IDLE 0
    RFS IDLE 0
    MRP0 WAIT_FOR_LOG 71
    RFS IDLE 71
    RFS IDLE 0

    9 rows selected.

    Primary:

    SQL> select max(sequence#) from v$archived_log;

    MAX(SEQUENCE#)

    70

    Standby:

    SQL> select max(sequence#) from v$archived_log where applied='YES';

    MAX(SEQUENCE#)

    70

    For RAC database :

    Syntax to add /drop group are as Below

    SQL>Alter database add standby logfile Thread group size <>M;

    SQL>Alter database add logfile Thread group size <>M;

    REFERENCES
    NOTE:740675.1 - Online Redo Logs on Physical Standby
    NOTE:1243177.1 - ORA-16401 and ORA-16055 reported in primary alert.log when redolog switch is over frequently