Re: Q: far-sync gap

  • From: amihay gonen <agonenil@xxxxxxxxx>
  • To: Ludovico Caldara <ludovico.caldara@xxxxxxxxx>
  • Date: Mon, 3 Nov 2014 15:03:13 +0200

Hi , I've product a report and put it here -->http://pastebin.com/4Mvpx2m4

I think  that if we  stop (or restarting) the farsync then LNS process on
the FS is not started and the way to push data is to failover to standby.



On Wed, Oct 29, 2014 at 10:33 AM, amihay gonen <agonenil@xxxxxxxxx> wrote:

> Thanks for the input . you are correct , as you can bellow  :
>
> although I still don't understand ,why in the following scenario , I get
> data gap:
>
> 1.  stop standby.
> 2.  put data into primary
> 3.  stop primary abort
> 4. restart FS
> 5. start standby .
> 6. compare count on some test table - i see difference .
>
> anyhow , I'll repeat my test using the new query bellow and report to the
> oracle-l list
>
>
> Every 2.0s: ./doquery.sh
>
>                              Wed Oct 29 02:31:57 2014
>
>
> ldb1             LNS              114        356
>
> ldb1fs           RFS                0          0
> ldb1fs           RFS                0          0
> ldb1fs           RFS              114        356
> ldb1fs           RFS                0          0
> ldb1fs           LNS              114        356
>
> ldb1sb           RFS                0          0
> ldb1sb           RFS              114        356
> ldb1sb           RFS                0          0
>
>
> set timing off feedback off head off
> select INSTANCE_NAME,process,SEQUENCE#,BLOCK# from v$instance
> ,v$managed_standby where process in ('LNS','RFS');
> exit
>
>
> On Wed, Oct 29, 2014 at 9:40 AM, Ludovico Caldara <
> ludovico.caldara@xxxxxxxxx> wrote:
>
>> Hi Amihay, I put back the list as recipient, yesterday I've done a reply
>> instead a reply to all using my smartphone...
>>
>> No, indeed, SYNC should be better.
>> The problem is that you're checking the RECOVERY LAG and not the
>> TRANSPORT LAG,
>> SYNC means that the transport is synchronous but you can still have a
>> small recovery lag. A commit on the primary forces a write of the standby
>> log on the standby site but doesn't force the recovery process (MRP0) to
>> apply it on the standby. So this is the problem.
>>
>> You should check instead the sequence# and block# of the RFS processes in
>> the v$managed_standby view. There you should notice no lag if the transport
>> is sync.
>>
>> Best regards
>> --
>> Ludo
>>
>> 2014-10-29 2:08 GMT+01:00 amihay gonen <agonenil@xxxxxxxxx>:
>>
>>> setting to fastsync doesn't seems to do any difference ...
>>>
>>> DGMGRL> show database verbose ldb1
>>>
>>> Database - ldb1
>>>
>>>   Role:               PRIMARY
>>>   Intended State:     TRANSPORT-ON
>>>   Instance(s):
>>>     ldb1
>>>
>>>   Properties:
>>>     DGConnectIdentifier             = 'ldb1'
>>>     ObserverConnectIdentifier       = ''
>>>     LogXptMode                      = 'SYNC'
>>>     RedoRoutes                      = '(LOCAL : ldb1fs FASTSYNC)'
>>>     DelayMins                       = '0'
>>>     Binding                         = 'optional'
>>>
>>>
>>> On Wed, Oct 29, 2014 at 2:44 AM, amihay gonen <agonenil@xxxxxxxxx>
>>> wrote:
>>>
>>>> hi , I'm not sure , but I think I'm using SYNC .
>>>>
>>>> My main problem is that it seems the FS is not sync.
>>>>
>>>> For example  :
>>>>  the following test:
>>>>  1. stop standby db.
>>>>  2. put data into primary.(commit)
>>>>  3. shutdown abort primary.
>>>>  4. restart FS
>>>>  5. start standby db.
>>>>
>>>> after step 5 - it seems that the standby doesn't completely  close the
>>>> GAP .
>>>>
>>>> when  I start the Primary again the gap is closed .
>>>>
>>>>
>>>>
>>>>
>>>> here the output of dgmlgr command and oracle configuration :
>>>>
>>>> DGMGRL> show database verbose ldb1
>>>>
>>>> Database - ldb1
>>>>
>>>>   Role:               PRIMARY
>>>>   Intended State:     TRANSPORT-ON
>>>>   Instance(s):
>>>>     ldb1
>>>>
>>>>   Properties:
>>>>     DGConnectIdentifier             = 'ldb1'
>>>>     ObserverConnectIdentifier       = ''
>>>>     LogXptMode                      = 'SYNC'
>>>>     RedoRoutes                      = '(LOCAL : ldb1fs SYNC)'
>>>>     DelayMins                       = '0'
>>>>     Binding                         = 'optional'
>>>>     MaxFailure                      = '0'
>>>>     MaxConnections                  = '1'
>>>>     ReopenSecs                      = '300'
>>>>     NetTimeout                      = '30'
>>>>     RedoCompression                 = 'DISABLE'
>>>>     LogShipping                     = 'ON'
>>>>     PreferredApplyInstance          = ''
>>>>     ApplyInstanceTimeout            = '0'
>>>>     ApplyLagThreshold               = '0'
>>>>     TransportLagThreshold           = '0'
>>>>     TransportDisconnectedThreshold  = '30'
>>>>     ApplyParallel                   = 'AUTO'
>>>>     StandbyFileManagement           = 'AUTO'
>>>>     ArchiveLagTarget                = '0'
>>>>     LogArchiveMaxProcesses          = '4'
>>>>     LogArchiveMinSucceedDest        = '1'
>>>>     DbFileNameConvert               = 'ldb1, ldb1sb'
>>>>     LogFileNameConvert              = 'ldb1, ldb1sb'
>>>>     FastStartFailoverTarget         = ''
>>>>     InconsistentProperties          = '(monitor)'
>>>>     InconsistentLogXptProps         = '(monitor)'
>>>>     SendQEntries                    = '(monitor)'
>>>>     LogXptStatus                    = '(monitor)'
>>>>     RecvQEntries                    = '(monitor)'
>>>>     StaticConnectIdentifier         =
>>>> '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.11)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ldb1_DGMGRL)(INSTANCE_NAME=ldb1)(SERVER=DEDICATED)))'
>>>>     StandbyArchiveLocation          = 'USE_DB_RECOVERY_FILE_DEST'
>>>>     AlternateLocation               = ''
>>>>     LogArchiveTrace                 = '0'
>>>>     LogArchiveFormat                = '%t_%s_%r.arc'
>>>>     TopWaitEvents                   = '(monitor)'
>>>>
>>>> Database Status:
>>>> SUCCESS
>>>>
>>>>
>>>> Far Sync Instance - ldb1fs
>>>>
>>>>   Transport Lag:      0 seconds (computed 1 second ago)
>>>>   Instance(s):
>>>>     ldb1fs
>>>>
>>>>   Properties:
>>>>     DGConnectIdentifier             = 'ldb1fs'
>>>>     LogXptMode                      = 'ASYNC'
>>>>     RedoRoutes                      = '(ldb1 : ldb1sb ASYNC)'
>>>>     Binding                         = 'optional'
>>>>     MaxFailure                      = '0'
>>>>     MaxConnections                  = '1'
>>>>     ReopenSecs                      = '300'
>>>>     NetTimeout                      = '30'
>>>>     RedoCompression                 = 'DISABLE'
>>>>     LogShipping                     = 'ON'
>>>>     TransportLagThreshold           = '0'
>>>>     TransportDisconnectedThreshold  = '30'
>>>>     LogArchiveMaxProcesses          = '4'
>>>>     LogArchiveMinSucceedDest        = '1'
>>>>     LogFileNameConvert              = 'ldb1, ldb1fs'
>>>>     InconsistentProperties          = '(monitor)'
>>>>     InconsistentLogXptProps         = '(monitor)'
>>>>     LogXptStatus                    = '(monitor)'
>>>>     StandbyArchiveLocation          = 'USE_DB_RECOVERY_FILE_DEST'
>>>>     AlternateLocation               = ''
>>>>     LogArchiveTrace                 = '0'
>>>>     LogArchiveFormat                = '%t_%s_%r.arc'
>>>>     TopWaitEvents                   = '(monitor)'
>>>>
>>>> Far Sync Instance Status:
>>>> SUCCESS
>>>>
>>>>
>>>> DGMGRL> show database  verbose ldb1sb
>>>>
>>>> Database - ldb1sb
>>>>
>>>>   Role:               PHYSICAL STANDBY
>>>>   Intended State:     APPLY-ON
>>>>   Transport Lag:      0 seconds (computed 1 second ago)
>>>>   Apply Lag:          0 seconds (computed 1 second ago)
>>>>   Average Apply Rate: 3.00 KByte/s
>>>>   Active Apply Rate:  1.38 MByte/s
>>>>   Maximum Apply Rate: 5.11 MByte/s
>>>>   Real Time Query:    ON
>>>>   Instance(s):
>>>>     ldb1sb
>>>>
>>>>   Properties:
>>>>     DGConnectIdentifier             = 'ldb1sb'
>>>>     ObserverConnectIdentifier       = ''
>>>>     LogXptMode                      = 'ASYNC'
>>>>     RedoRoutes                      = ''
>>>>     DelayMins                       = '0'
>>>>     Binding                         = 'optional'
>>>>     MaxFailure                      = '0'
>>>>     MaxConnections                  = '1'
>>>>     ReopenSecs                      = '300'
>>>>     NetTimeout                      = '30'
>>>>     RedoCompression                 = 'DISABLE'
>>>>     LogShipping                     = 'ON'
>>>>     PreferredApplyInstance          = ''
>>>>     ApplyInstanceTimeout            = '0'
>>>>     ApplyLagThreshold               = '0'
>>>>     TransportLagThreshold           = '0'
>>>>     TransportDisconnectedThreshold  = '30'
>>>>     ApplyParallel                   = 'AUTO'
>>>>     StandbyFileManagement           = 'AUTO'
>>>>     ArchiveLagTarget                = '0'
>>>>     LogArchiveMaxProcesses          = '4'
>>>>     LogArchiveMinSucceedDest        = '1'
>>>>     DbFileNameConvert               = 'ldb1, ldb1sb'
>>>>     LogFileNameConvert              = 'ldb1, ldb1sb'
>>>>     FastStartFailoverTarget         = ''
>>>>     InconsistentProperties          = '(monitor)'
>>>>     InconsistentLogXptProps         = '(monitor)'
>>>>     SendQEntries                    = '(monitor)'
>>>>     LogXptStatus                    = '(monitor)'
>>>>     RecvQEntries                    = '(monitor)'
>>>>     StaticConnectIdentifier         =
>>>> '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ldb1sb_DGMGRL)(INSTANCE_NAME=ldb1sb)(SERVER=DEDICATED)))'
>>>>     StandbyArchiveLocation          = 'USE_DB_RECOVERY_FILE_DEST'
>>>>     AlternateLocation               = ''
>>>>     LogArchiveTrace                 = '0'
>>>>     LogArchiveFormat                = '%t_%s_%r.arc'
>>>>     TopWaitEvents                   = '(monitor)'
>>>>
>>>> Database Status:
>>>> SUCCESS
>>>>
>>>>
>>>> ----------------------------------- -----------
>>>> ------------------------------
>>>> log_archive_dest                     string
>>>> log_archive_dest_1                   string
>>>>  LOCATION=USE_DB_RECOVERY_FILE_
>>>>                                                  DEST
>>>> VALID_FOR=(ALL_LOGFILES
>>>>                                                  ,ALL_ROLES)
>>>> log_archive_dest_10                  string
>>>> log_archive_dest_11                  string
>>>> log_archive_dest_12                  string
>>>> log_archive_dest_13                  string
>>>> log_archive_dest_14                  string
>>>> log_archive_dest_15                  string
>>>> log_archive_dest_16                  string
>>>> log_archive_dest_17                  string
>>>> log_archive_dest_18                  string
>>>> log_archive_dest_19                  string
>>>> log_archive_dest_2                   string
>>>> log_archive_dest_20                  string
>>>> log_archive_dest_21                  string
>>>> log_archive_dest_22                  string
>>>> log_archive_dest_23                  string
>>>> log_archive_dest_24                  string
>>>> log_archive_dest_25                  string
>>>> log_archive_dest_26                  string
>>>> log_archive_dest_27                  string
>>>> log_archive_dest_28                  string
>>>> log_archive_dest_29                  string
>>>> log_archive_dest_3                   string      service="ldb1fs", SYNC
>>>> AFFIRM
>>>>                                                  delay=0 optional
>>>> compression=d
>>>>                                                  isable max_failure=0
>>>> max_conne
>>>>                                                  ctions=1 reopen=300
>>>> db_unique_
>>>>                                                  name="ldb1fs"
>>>> net_timeout=30,
>>>>
>>>>  valid_for=(online_logfile,all_
>>>>                                                  roles)
>>>>
>>>>
>>>>
>>>>
>>>> On Tue, Oct 28, 2014 at 8:43 PM, Ludovico Caldara <
>>>> ludovico.caldara@xxxxxxxxx> wrote:
>>>>
>>>>> Hi, Are you using sync or fast sync for the redo transport?
>>>>> Il 28-ott-2014 15:21 "amihay gonen" <agonenil@xxxxxxxxx> ha scritto:
>>>>>
>>>>> Hi all ,
>>>>>> I'm testing Farsync and it seems that always a gap in current_scn
>>>>>> between primary and farsync and standby .
>>>>>>
>>>>>> I don't understand why...
>>>>>>
>>>>>>
>>>>>> I've the following configuration :
>>>>>>
>>>>>> DGMGRL> show configuration verbose
>>>>>>
>>>>>> Configuration - dr
>>>>>>
>>>>>>   Protection Mode: MaxAvailability
>>>>>>   Members:
>>>>>>   ldb1   - Primary database
>>>>>>     ldb1fs - Far sync instance
>>>>>>       ldb1sb - Physical standby database
>>>>>>
>>>>>>   Properties:
>>>>>>     FastStartFailoverThreshold      = '30'
>>>>>>     OperationTimeout                = '30'
>>>>>>     TraceLevel                      = 'USER'
>>>>>>     FastStartFailoverLagLimit       = '30'
>>>>>>     CommunicationTimeout            = '180'
>>>>>>     ObserverReconnect               = '0'
>>>>>>     FastStartFailoverAutoReinstate  = 'TRUE'
>>>>>>     FastStartFailoverPmyShutdown    = 'TRUE'
>>>>>>     BystandersFollowRoleChange      = 'ALL'
>>>>>>     ObserverOverride                = 'FALSE'
>>>>>>     ExternalDestination1            = ''
>>>>>>     ExternalDestination2            = ''
>>>>>>     PrimaryLostWriteAction          = 'CONTINUE'
>>>>>>
>>>>>> Fast-Start Failover: DISABLED
>>>>>>
>>>>>> Configuration Status:
>>>>>> SUCCESS
>>>>>>
>>>>>> DGMGRL> enable configuration
>>>>>> Enabled.
>>>>>> DGMGRL> show configuration verbose
>>>>>>
>>>>>> Configuration - dr
>>>>>>
>>>>>>   Protection Mode: MaxAvailability
>>>>>>   Members:
>>>>>>   ldb1   - Primary database
>>>>>>     ldb1fs - Far sync instance
>>>>>>       ldb1sb - Physical standby database
>>>>>>
>>>>>>   Properties:
>>>>>>     FastStartFailoverThreshold      = '30'
>>>>>>     OperationTimeout                = '30'
>>>>>>     TraceLevel                      = 'USER'
>>>>>>     FastStartFailoverLagLimit       = '30'
>>>>>>     CommunicationTimeout            = '180'
>>>>>>     ObserverReconnect               = '0'
>>>>>>     FastStartFailoverAutoReinstate  = 'TRUE'
>>>>>>     FastStartFailoverPmyShutdown    = 'TRUE'
>>>>>>     BystandersFollowRoleChange      = 'ALL'
>>>>>>     ObserverOverride                = 'FALSE'
>>>>>>     ExternalDestination1            = ''
>>>>>>     ExternalDestination2            = ''
>>>>>>     PrimaryLostWriteAction          = 'CONTINUE'
>>>>>>
>>>>>> Fast-Start Failover: DISABLED
>>>>>>
>>>>>> Configuration Status:
>>>>>> SUCCESS
>>>>>>
>>>>>> DGMGRL>
>>>>>>
>>>>>>
>>>>>> when doing the following queries :
>>>>>>
>>>>>> sqlplus -l -s a/a@ldb1 <<EOF
>>>>>> set head off
>>>>>> select 'ldb1:'||current_scn||','||CONTROLFILE_CHANGE# from
>>>>>> v\$database;
>>>>>> EOF
>>>>>> sqlplus -l -s sys/a@ldb1fs as sysdba<<EOF
>>>>>> set head off
>>>>>> select 'ldb1fs:'||current_scn||','||CONTROLFILE_CHANGE# from
>>>>>> v\$database;
>>>>>> EOF
>>>>>> sqlplus -l -s a/a@ldb1sb <<EOF
>>>>>> set head off
>>>>>> select 'ldb1fs:'||current_scn||','||CONTROLFILE_CHANGE# from
>>>>>> v\$database;
>>>>>> EOF
>>>>>>
>>>>>>
>>>>>> I got the following results
>>>>>>
>>>>>> ldb1:*2275269*,2274999
>>>>>>
>>>>>> Elapsed: 00:00:00.00
>>>>>>
>>>>>> ldb1fs*:2275073*,1800180
>>>>>>
>>>>>> Elapsed: 00:00:00.00
>>>>>>
>>>>>> ldb1fs:*2275267*,2250255
>>>>>>
>>>>>> Elapsed: 00:00:00.01
>>>>>>
>>>>>>
>>>>
>>>
>>
>

Other related posts: