Logical standby versus Streams?

Anybody can explain me difference between logical standby and streams in terms of architecture and functionality?

Both Logical standby and streams share the same underlying architecture. The difference is the requirements u have
1) the Logical standby database is the complete replica of the whole database. while streams enable you to replicate table, schema or the database.
2) The logical standby database can opened in read only mode. ( by the way u can open it in read/write but you have to stop the recovery first and u have flash back database enabled). Streams allow you to open the replicated database read/write mode.
3) The logical standby database allows one way replication. with streams you can implement bi-directional replication as well.
4) Streams are far more customizable than logical data guard.
5) in my opinion streams are much harder to implement, administer and monitor than logical standby database

Similar Messages

  • Data Guard logical standby Versus Streams

    I'm referring to both Oracle 10g/9i
    If a Data Guard logical database uses similar technology to Streams (Log Mining and SQL apply), why can't you stand up a standby database on a different platform, or at least I have found nothing on the subject.
    But in 11g Oracle Data Guard (physical standby database) is a solution for same endianness platform migration.
    I will appreciate any insight on the subject.

    Yes...thats true...both uses same technology...
    REDO LOGMINER
    SQL------------------------>BLOCK LEVEL CHANGES---------------------------------->SQL
    But there are serious implemetation diff..
    1) Oracle Data Guard is designed for protecting from data failure and disasters.
    Streams is designed for information sharing and distribution but can also provide a very efficient high availability solution.
    2) Streams is configured from the bottom up — individual tables, schemas, capture processes, apply processes, queues.
    Logical Standby is configured from the top down — start with entire database, then specify only what you don’t want.
    As logical standby is top down and changes are capture at remote location (logical standby db) and for that archive log need to be shipped using FAL client/server to remote and to ship the archivelog in Data Guard configuration, all members should be running on same platform.
    As said before, Streams is configured from the bottom up, it start with tables--> Schemas--->Database and we can capture changes at local/remote location. If we capture changes locally, target streams db can be on diff platform. But for downstream capture must need same platform as logical standby database needed so that archivelogs can transport from source to downstream db.

  • Logical Standby and Streams

    Hi,
    I am considering different replication scenarios for our future system and have a (maybe stupid:) question. Is it technically possible to create a logical standby database (Data Guard) and than replicate it further using Streams?
    Regards,
    Tim

    Yes , This is possible with logical standby but you need to have mechanisms to take care of role transitioning in case of fail over. See Oracle document http://download.oracle.com/docs/cd/E14072_01/server.112/e10700/whatsnew.htm (Key word search "streams")
    Thanks
    http://swervedba.wordpress.com/
    Edited by: swervedba on May 30, 2011 8:48 PM

  • Using streams or logical standby

    We are runing Oracle 9.2.0.3.0 and have a requirement to replicate the production database on another server for query and reporting purpose.
    The changes can be applied to the reporting database on a daily basis. Of course, the faster the better if there is no additional overhead added on the production database (performance acceptable on the production database).
    Do you recommend using Oracle Streams or the logical standby database and why? which one is more stable now?
    Thanks in advance for your help.

    Hi,
    there is no difference on the primary site between ADG and normal DG. And there is also no difference in shipment of the redo logs.
    The apply performance on the standby is minimally slower (< 2%) and only recognizable if you already have problems that the standby keeps up to date. But then again this does not effect your DR.
    It only means that a switchover/failover will take minimally longer....
    On the other side, there is always headroom to optimize apply performance. See here:
    http://www.oracle.com/technetwork/database/features/availability/maa-wp-11gr1-activedataguard-1-128199.pdf
    Regards
    Sebastian

  • DATA Guard Logical Standby v.s. Streams Apply (10gR2, rac -- rac )

    Greetings -
    We currently have a 3 node cluster, doing a 'Schema' capture, with a 2 node cluster serving as the apply side. Both are on 10gR2 (solaris 10)
    We have been experiencing apply latency due to large transactions. The way logminer/streams evaluates the arch logs, it converts each updated row into a transaction as part of a transaction set, using 'decode (' statements.
    I am under the impression a physical standby will do the same thing. But what about a logical Standby ?
    (this from the Oracle Documentation)
    [10g Concepts|http://download.oracle.com/docs/cd/B19306_01/server.102/b14239/concepts.htm#SBYDB00010]
    ...Contains the same logical information as the production database, although the physical organization and structure of the data can be different. The logical standby database is kept synchronized with the primary database though SQL Apply, which transforms the data in the redo received from the primary database into SQL statements and then executing the SQL statements on the standby database.
    Does anyone know firsthand if SQL APPLY re-issues the original sql, or if it relies on the 'decode' command as well ?
    Thanks
    The Nets Edge

    A Physical standby does not do anything with SQL. It is running media recovery under the covers. A Logical standby uses the Logminer to read the redo, converts it to SQL and Data and applies those transactions to the Logical standby.
    The both build logical change records, figure out order, dependencies etc etc and applies the transaction. Both are susceptible to long running transactions on the Primary (source) database.
    Streams uses Logminer, Logical Standby use part of the Streams apply so as Mr. Morgan said, they are very similar :^)
    If you are having apply performance issues you may want to look at Active data Guard.
    Larry

  • Streams Replication:Source database Physical or Logical Standby DB

    Can the source database in streams replication be a physical or logical standby database ? If so, is the process of configuring streams the same as a regular database ? Are there any best practices or different configuration if the source is Logical or Physical standby DB ?
    Thanks in advance.

    Never done it, but I don't see any reason why it should not work.
    Streams, at capture site, is only a data dictionary game and in a logical standby your data dictionary is open read write.
    Streams, at capture site, never touch the source tables, in fact they may even not exists from Streams point of view,
    as it deals only with the redo that are generated.
    So Streams horizon is limited to the data dictionary, the log buffer, the archives and, in SYSAUX tablespace, all the LOGMNR_% tables. All these structures are read write in the logical standby. However, for the capture/propagation you may have to set to true the 'include_tagged_lcr' parameters.

  • Streams Replication: Logical Standby DB as source

    I don't have much experience with streams replications. So, the following might sound like a silly questions to Oracle Gurus:
    If the source database is a logical standby database, can stream replication be used to replicate some of the tables in the source database to the target DB ?
    The source and the target DB are 11g R2.
    Thanks in adavance:
    - Sanjay
    Edited by: sanjayku on Dec 8, 2010 4:38 PM

    Never done it, but I don't see any reason why it should not work.
    Streams, at capture site, is only a data dictionary game and in a logical standby your data dictionary is open read write.
    Streams, at capture site, never touch the source tables, in fact they may even not exists from Streams point of view,
    as it deals only with the redo that are generated.
    So Streams horizon is limited to the data dictionary, the log buffer, the archives and, in SYSAUX tablespace, all the LOGMNR_% tables. All these structures are read write in the logical standby. However, for the capture/propagation you may have to set to true the 'include_tagged_lcr' parameters.

  • Which way - Streams or Logical Standby?

    Hi,
    I'm having a requirement to replicate a schema between two databases. The scenario is that we've got an Interactive Voice Recorder system for tracking voice calls to a call center contact.
    The system will be hosted in two sites, with kind of load balancing where calls are routed to either of the centers. The two centers will each have an OLTP database, and the databases will of-course be similar.
    There's a particular schema that needs to be replicated between the two databases so that the schema is available in either of the nodes. We were thinking of Active Standby but this seems to be out of question because the two databases need to be open read-write all the time.
    We are looking into Streams to accomplish this, but we wonder if a logical standby can also accomplish the same, since it can be open read-write?
    The database version will be 11.1.0.7.0

    user11983948 wrote:
    Thanks Anuraq,
    The volume of the data that will be replicated will be small, just a single schema. I also did not clarify, but the data in the two databases will be kept only for about 30 days, then truncated, after being sent to a separate warehouse server where the data will be stored and analyzed.
    Regards,
    dulaIf the data replicated is small, and dmls are free then streams would be better than logical standby.
    Regarding the truncate part you meant the data would be deleted from the table which are older than 30 days. Streams would be able to handle that. Make sure you delete the data from one site only and that would be replicated on another site. I also assume you are looking for two way replication in that case logical standby is not an option.
    Regards
    Anurag

  • Logical Standby Database in NOARCHIVE Mode

    Hi,
    I have configured a Logical Standby Database for Reporting purposes. A Physical Standby Database is running for MAA. i.e. in case of Role Transition (switch/Failover) the Physical Stdby Db will get the role of the Primary.
    The logical standby database is creating a lot of Archive Redologs files, nearly every minute. Redolog files are 50MB and there is no work done in db during the time. I'm NOT using Standby Redolog files.
    Is there a need for logical standby database to be in NOARCHIVELOG mode? The Primary is definatley in ARCHIVELOG mode.
    Thanks for any responses.
    regards
    Sahba

    hi,
    well there are two things to the above:-
    1. there was an archive file nearly every minute:
    this is due to a db recovery. for some reason, the db was in inconsistent state, after a sudden shutdownof the OS. I was on a test environment, on windows vista, unfortunately. unimportant ... a reboot solved it.
    2. Logical standby db in NOARCHIVE MODE when setup for the purpose of Reporting.
    As long as the MAA configured for the primary db, such as physical standby db, and a second, the logical standby db setup purely for the purpose of reporting, which then can run with NOARCHIVELOG mode, after converting the physical standby db to logical.
    logical standby db uses Streams architecture, so this method brings cost, time and performance advantages to the customer.
    regards
    Sahba

  • Logical standby stuck at initializing SQL apply only coordinator process up

    Hi
    OS: solaris 5.10
    Hardware: sun sparc
    Oracle database: 11.2.0.1.0
    Primary database name: asadmin
    Standby database name: test
    I had been trying to convert a physical standby to logical standby database. Both the primary and standby reside on the same machine.
    The physical standby was created with a hot backup of primary.
    I had been following document id 278371.1 to convert the physical to logical standby and used the following steps:
    Relevant init parameters on primary:
    *.db_name='asadmin'
    *.db_unique_name='asadmin'
    *.log_archive_config='dg_config=(asadmin,test)'
    *.log_archive_dest_1='location=/u01/asadmin/archive valid_for=(all_logfiles,all_roles) db_unique_name=asadmin'
    *.log_archive_dest_2='SERVICE=test async valid_for=(online_logfiles,primary_role) db_unique_name=test'
    *.log_archive_dest_state_1='enable'
    *.log_archive_dest_state_2='enable'
    *.fal_client='asadmin'
    *.fal_server='test'
    *.remote_login_passwordfile='EXCLUSIVE'
    Relevant init parameters on standby database:
    *.db_name='test' -- Was asadmin before I renamed the DB during conversion to logical standby
    *.db_unique_name='test'
    *.log_archive_dest_1='location=/u01/test/archive valid_for=(all_logfiles,all_roles) db_unique_name=test'
    *.log_archive_dest_2='service=asadmin async valid_for=(online_logfiles,primary_role) db_unique_name=asadmin'
    *.log_archive_dest_state_1=enable
    *.log_archive_dest_state_2=defer
    *.remote_login_passwordfile='EXCLUSIVE'*.fal_server=test
    *.fal_client=asadmin
    Steps on primary:
    1) alter system set log_archive_dest_state_2=defer;
    2) shutdown immediate;
    3) Made sure that the physical standby has applied all of the redo sent to it following the shutdown.
    4) startup mount;
    5) ALTER DATABASE BACKUP CONTROLFILE to '/home/oracle/control01.ctl';
    6) ALTER SYSTEM ENABLE RESTRICTED SESSION;
    7) ALTER DATABASE OPEN;
    8) Verified that the supplemental logging is on.
    9) ALTER SYSTEM ARCHIVE LOG CURRENT;
    10) Checked for the checkpoint change no. at this point which is 72403818 and is present in archive log file 1_62_775102253.dbf
    11) EXECUTE DBMS_LOGSTDBY.BUILD;
    12) ALTER SYSTEM ARCHIVE LOG CURRENT;
    13) Checked for the archive log containing dictionary build which is 1_64_775102253.dbf
    14) ALTER SYSTEM DISABLE RESTRICTED SESSION;
    Details of archive logs and related checkpoint change nos:
    NAME FIRST_CHANGE# NEXT_CHANGE#
    /u01/asadmin/archive/1_61_775102253.dbf 72402901 72403817
    /u01/asadmin/archive/1_62_775102253.dbf 72403817 72404069
    /u01/asadmin/archive/1_63_775102253.dbf 72404069 72404211
    /u01/asadmin/archive/1_64_775102253.dbf 72404211 72405700
    Steps on standby:
    1) shutdown immediate;
    2) Copy the archivelog file 61(was created at primary after apply stopped at standby), 62(contains checkpoint no. 72403818), 63 and 64(contains dictionary build). Copy the backup controlfile from step 5 above to the controlfile location in standby init.
    3) startup mount;
    4) Rename all datafiles and redo log files (including standby redo log files) to the correct path on standby.
    5) alter database recover automatic from '/u01/test/archive' until change 72405700 using backup controlfile; -- This completed error-free
    6) alter database guard all; -- this completed error free
    7) alter database open resetlogs; -- this completed error free.
    8) nid target=sys/oracle12 dbname=test
    9) Changed the db_name in init file to new name test.
    10) Added a tempfile to temp tablespaces.
    11) ALTER DATABASE REGISTER LOGICAL LOGFILE '/u01/test/archive/1_61_775102253.dbf'; -- ORA-16225: Missing LogMiner session name for Streams
    12) ALTER DATABASE START LOGICAL STANDBY APPLY INITIAL 72405700; -- This completed error free.
    Also enabled the log_archive_dest_state_2 on primary.
    After this output from some views:
    SQL> SELECT SESSION_ID, STATE FROM V$LOGSTDBY_STATE;
    SESSION_ID STATE
    1 INITIALIZING
    SQL> SELECT SID, SERIAL#, SPID, TYPE FROM V$LOGSTDBY_PROCESS;
    SID SERIAL# SPID TYPE
    587 22 15476 COORDINATOR
    SELECT PERCENT_DONE, COMMAND
    FROM V$LOGMNR_DICTIONARY_LOAD
    WHERE SESSION_ID = (SELECT SESSION_ID FROM V$LOGSTDBY_STATE);
    PERCENT_DONE
    COMMAND
    0
    SQL> SELECT TYPE, HIGH_SCN, STATUS FROM V$LOGSTDBY;
    TYPE HIGH_SCN STATUS
    COORDINATOR ORA-16111: log mining and apply setting up
    SQL> SELECT APPLIED_SCN, NEWEST_SCN FROM DBA_LOGSTDBY_PROGRESS;
    APPLIED_SCN NEWEST_SCN
    72405700 72411501
    SELECT THREAD#, SEQUENCE#, FILE_NAME FROM DBA_LOGSTDBY_LOG L
    WHERE NEXT_CHANGE# NOT IN
    (SELECT FIRST_CHANGE# FROM DBA_LOGSTDBY_LOG WHERE L.THREAD# = THREAD#)
    ORDER BY THREAD#,SEQUENCE#;
    no rows selected
    SQL> SELECT EVENT_TIME, STATUS, EVENT
    FROM DBA_LOGSTDBY_EVENTS
    ORDER BY EVENT_TIMESTAMP, COMMIT_SCN; 2 3
    EVENT_TIME STATUS EVENT
    14-FEB-12 02:00:50 ORA-16111: log mining and apply setting up
    14-FEB-12 02:00:50 Apply LWM 72405699, HWM 72405699, SCN 72405699
    14-FEB-12 02:20:11 ORA-16128: User initiated stop apply successfully
    completed
    14-FEB-12 02:20:39 ORA-16111: log mining and apply setting up
    14-FEB-12 02:20:39 Apply LWM 72405699, HWM 72405699, SCN 72405699
    14-FEB-12 02:54:15 ORA-16128: User initiated stop apply successfully
    completed
    14-FEB-12 02:57:38 ORA-16111: log mining and apply setting up
    EVENT_TIME STATUS EVENT
    14-FEB-12 02:57:38 Apply LWM 72405699, HWM 72405699, SCN 72405699
    14-FEB-12 03:01:36 ORA-16128: User initiated stop apply successfully
    completed
    14-FEB-12 03:13:44 ORA-16111: log mining and apply setting up
    14-FEB-12 03:13:44 Apply LWM 72405699, HWM 72405699, SCN 72405699
    14-FEB-12 04:32:23 ORA-16128: User initiated stop apply successfully
    completed
    14-FEB-12 04:34:17 ORA-16111: log mining and apply setting up
    14-FEB-12 04:34:17 Apply LWM 72405699, HWM 72405699, SCN 72405699
    EVENT_TIME STATUS EVENT
    14-FEB-12 04:36:16 ORA-16128: User initiated stop apply successfully
    completed
    14-FEB-12 04:36:21 ORA-16111: log mining and apply setting up
    14-FEB-12 04:36:21 Apply LWM 72405699, HWM 72405699, SCN 72405699
    14-FEB-12 05:15:22 ORA-16128: User initiated stop apply successfully
    completed
    14-FEB-12 05:15:29 ORA-16111: log mining and apply setting up
    14-FEB-12 05:15:29 Apply LWM 72405699, HWM 72405699, SCN 72405699
    I also greped for lsp and lcr processes and found that lsp is up but do not see any lcr.
    The logs are getting transported to the archive destination on standby whenever they are archived on primary but are not getting applied to standby.
    Also in case the standby is down while a log is generated on primary it is not automatically transported to standby once the standby is up, means gap resolution is also not working.
    I see the following in alert log every time I try to restart the log apply, everything seems to be stuck at initialization.
    ALTER DATABASE START LOGICAL STANDBY APPLY (test)
    with optional part
    IMMEDIATE
    Attempt to start background Logical Standby process
    Tue Feb 14 05:15:28 2012
    LSP0 started with pid=28, OS id=23391
    Completed: alter database start logical standby apply immediate
    LOGMINER: Parameters summary for session# = 1
    LOGMINER: Number of processes = 3, Transaction Chunk Size = 201
    LOGMINER: Memory Size = 30M, Checkpoint interval = 150M
    LOGMINER: SpillScn 0, ResetLogScn 0
    -- NOTHING AFTER THIS

    Hello;
    I noticed some of your parameters seem to be wrong.
    fal_client - This is Obsolete in 11.2
    You have db_name='test' on the Standby, it should be 'asadmin'
    fal_server=test is set like this on the standby, it should be 'asadmin'
    I might consider changing VALID_FOR to this :
    VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES)Would review 4.2 Step-by-Step Instructions for Creating a Logical Standby Database of Oracle Document E10700-02
    Document 278371.1 is showing its age in my humble opinion.
    -----Wait on this until you fix your parameters----------------------
    Try restarting the SQL Apply
    ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATEI don't see the parameter MAX_SERVERS, try setting it to 8 times the number of cores.
    Use these statements to trouble shoot :
    SELECT NAME, VALUE, UNIT FROM V$DATAGUARD_STATS;
    SELECT NAME, VALUE FROM V$LOGSTDBY_STATS WHERE NAME LIKE ;TRANSACTIONS%';
    SELECT COUNT(1) AS IDLE_PREPARERS FROM V$LOGSTDBY_PROCESS WHERE
    TYPE = 'PREPERER' AND STATUS_CODE = 16166;Best Regards
    mseberg
    Edited by: mseberg on Feb 14, 2012 7:37 AM

  • Logical standby database

    Guys,
    Is it possible to create a logical standby database without installing Oracle Data Guard.And if yes how sync. is performed.
    Thanks

    Hi,
    Is it possible to create a logical standby database without installing Oracle Data Guard.In a sense Oracle Streams and Quest Shareplex created a logical standby, but you can have them open too . . . Madhu Tumma explains this in his Oracle Streams book, but it's only conceptually similar to logical standby in Data Guard:
    http://www.rampant-books.com/book_2004_2_streams.htm
    Hope this helps. . .
    Don Burleson
    Oracle Press author
    Author of “Oracle Tuning: The Definitive Reference”
    http://www.dba-oracle.com/bp/s_oracle_tuning_book.htm

  • Logical standby database SE

    In the past we creating and maintaining physical standby database in SE (without DataGuard, via scripts).
    Is possible create and maintain LOGICAL standby database in SE without DataGard (any example are welcome!)
    Thanks in advance!
    Diego.

    According to Metalink Note:271886.1
    "Message queuing and apply features of Oracle Streams are available in Standard Edition and Standard Edition One, but change capture is available only in Enterprise Edition."
    HTH
    Thanks
    Chandra Pabba

  • Logical standby DB with unsupported datatype

    Hello,
    Has anyone setup the following Data Guard Configuration, although it is not recommended by Oracle:-
    Setup a logical standby DB from a Primary DB with unsupported Data Types. I'm need (and want) to save time and effort to configure a database for the purpose of Reporting and avoid Oracle Streams or Change Data Capture or even the new middleware Product Data Integrator
    Data is sent from the Productive DB, and with logical standby DB, I (hope) can still get it to run even with unsupported data types using DBMS_LOGSTDBY.SKIP procedure, to skip unwanted and unsupported attributes in the primary DB.
    I would appreciate any comments and experience using Logical Standby DB for Reporting Purposes.
    regards
    Sahba

    Hello Anantha,
    thanks for your reply.
    unfortunately the Productive database uses dartatypes such as DMSYS.SDO_GEOMERTY.
    these datatypes are not supported by the Logical standby DB.
    I thought, i could skip those tables with such datatypes when applying redodata in the logical standby db, dbms_logstdby.skip procedure allow such mechanism.
    the reason why i need logical stndby db ist due to READ/WRITE during apply process. as I mentioned, i need an up-to-date replica of the productive db for reporting purposes, without such tables with unsupported datatpes. because these are tables are not part of the reporting procedure, i thought of skipping them from appling in logical stndby db .
    so, has anyone have had any complications with Logical stndby db even when using dbms_logstdby.skip procedure?
    are there any other problems encountered with logical stndby db to share here?
    thanks
    regards
    Sahba

  • Logical Standby SQL Apply Using Incorrect Decode Statement

    We are seeing statements erroring out on our logical standby that have been rewritten (presumably by sql apply) with decode statements that don't appear to be correct. For example, here is one of the rewritten statements.
    update /*+ streams restrict_all_ref_cons */ "CADPROD"."OMS_SQL_STATEMENT" p
    set *"APPLICATION"=decode(:1,'N',"APPLICATION",:2)*,
    "STATEMENT"=dbms_reputil2.get_final_lob(:3,"STATEMENT",:4)
    where (:5='N' or(1=1 and (:6='N' or(dbms_lob.compare(:7,"STATEMENT")=0)or(:7 is null and "STATEMENT" is null)))) and(:8="APPLICATION")
    The problem comes in, we believe, with the attempt to write the value "APPLICATION" to the application column which is only a 10 character field. the value for the :1 bind variable is "N" and the value for :2 is null.
    We see the following error on the logical standby:
    ORA-00600: internal error code, arguments: [kgh_heap_sizes:ds], [0x01FCDBE60], [], [], [], [], [], []
    ORA-07445: exception encountered: core dump [ACCESS_VIOLATION] [kxtoedu+54] [PC:0x2542308] [ADDR:0xFFFFFFFFFFFFFFFF] [UNABLE_TO_READ] []
    ORA-12899: value too large for column "CADPROD"."OMS_SQL_STATEMENT"."APPLICATION" (actual: 19576, maximum: 10)
    Is this a configuration issue or is it normal for SQL Apply to convert statements from logminer into decode statements?
    We have an Oracle 10.2.0.4 database running on windows 2003 R2 64-bit os. We have 3 physical and 2 logical standby's, no problems on the physical standbys.

    Hello;
    I noticed some of your parameters seem to be wrong.
    fal_client - This is Obsolete in 11.2
    You have db_name='test' on the Standby, it should be 'asadmin'
    fal_server=test is set like this on the standby, it should be 'asadmin'
    I might consider changing VALID_FOR to this :
    VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES)Would review 4.2 Step-by-Step Instructions for Creating a Logical Standby Database of Oracle Document E10700-02
    Document 278371.1 is showing its age in my humble opinion.
    -----Wait on this until you fix your parameters----------------------
    Try restarting the SQL Apply
    ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATEI don't see the parameter MAX_SERVERS, try setting it to 8 times the number of cores.
    Use these statements to trouble shoot :
    SELECT NAME, VALUE, UNIT FROM V$DATAGUARD_STATS;
    SELECT NAME, VALUE FROM V$LOGSTDBY_STATS WHERE NAME LIKE ;TRANSACTIONS%';
    SELECT COUNT(1) AS IDLE_PREPARERS FROM V$LOGSTDBY_PROCESS WHERE
    TYPE = 'PREPERER' AND STATUS_CODE = 16166;Best Regards
    mseberg
    Edited by: mseberg on Feb 14, 2012 7:37 AM

  • Logical standby: ORA-01031: insufficient privileges

    Dear Colleagues,
    Today in my Logical Standby don't apply archivelogs and I see an error in alert.log:
    ORA-26808: Apply process AS01 died unexpectedly.
    ORA-01031: insufficient privileges
    Also I see next logs in trace files:
    h4.
    1)
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    With the Partitioning, Data Mining and Real Application Testing options
    ORACLE_HOME = /ora/Ora11203
    System name: Linux
    Node name: base
    Release: 2.6.18-308.20.1.el5
    Version: #1 SMP Tue Nov 6 04:38:29 EST 2012
    Machine: x86_64
    Instance name: oracle
    Redo thread mounted by this instance: 1
    Oracle process number: 43
    Unix process pid: 16634, image: oracle@base (AS01)
    *** 2013-04-04 16:58:47.062
    *** SESSION ID:(146.16811) 2013-04-04 16:58:47.062
    *** CLIENT ID:() 2013-04-04 16:58:47.062
    *** SERVICE NAME:(SYS$USERS) 2013-04-04 16:58:47.062
    *** MODULE NAME:(Streams) 2013-04-04 16:58:47.062
    *** ACTION NAME:( - Apply Server) 2013-04-04 16:58:47.062
    knasplcr: eager error was not rolled back
    ++ LCR Dump Begin: 0x2b0cf2a6d168 - ddl
    op: 5, Original op: 5, baseobjn: 0, objn: 0, objv: 0
    DF: 0x00000002, DF2: 0x00000010, MF: 0x00020810, MF2: 0x00000000
    PF: 0x00000000, PF2: 0x08000000
    MergeFlag: 0x00, FilterFlag: 0x00
    Id: 0, iotPrimaryKeyCount: 0, numChgRec: 1
    NumCrSpilled: 0
    RedoThread#: 1, rba: 0x0213d7.00023455.01ac
    scn: 0x0002.fc0f8769, (scn: 0x0000.00000000, scn_sqn: 0, lcr_sqn: 0)xid: 0x0019.00e.0007f8d9, parentxid: 0x0019.00e.0007f8d9, proxyxid: 0x0000.000.00000000
    ncol: 0 newcount: 24, oldcount: 0
    LUBA: 0x4.1000ad1.e.0.0
    ++ LCR Dump Begin: 0x59b1afdc8 - commit
    op: 7, Original op: 7, baseobjn: 0, objn: 0, objv: 0
    DF: 0x00000002, DF2: 0x00000010, MF: 0x00220000, MF2: 0x02000000
    PF: 0x00100000, PF2: 0x08040000
    MergeFlag: 0x03, FilterFlag: 0x00
    Id: 3, iotPrimaryKeyCount: 0, numChgRec: 0
    NumCrSpilled: 0
    RedoThread#: 1, rba: 0x0213d7.00023456.0108
    scn: 0x0002.fc0f876b, (scn: 0x0002.fc0f876b, scn_sqn: 1, lcr_sqn: 1)xid: 0x0019.00e.0007f8d9, parentxid: 0x0019.00e.0007f8d9, proxyxid: 0x0000.000.00000000
    ncol: 0 newcount: 0, oldcount: 0
    LUBA: 0x4.1000ad1.e.0.0
    Apply Slave is exiting due to error ORA-1031KSV 1031 error in slave process
    *** 2013-04-04 16:58:47.067
    ORA-01031: insufficient privileges
    OPIRIP: Uncaught error 447. Error stack:
    ORA-00447: fatal error in background process
    ORA-01031: insufficient privileges
    h4.
    2)
    Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
    With the Partitioning, Data Mining and Real Application Testing options
    ORACLE_HOME = /ora/Ora11203
    System name: Linux
    Node name: base
    Release: 2.6.18-308.20.1.el5
    Version: #1 SMP Tue Nov 6 04:38:29 EST 2012
    Machine: x86_64
    Instance name: oracle
    Redo thread mounted by this instance: 1
    Oracle process number: 30
    Unix process pid: 16404, image: oracle@base (LSP0)
    *** 2013-04-04 16:41:58.401
    *** SESSION ID:(294.35251) 2013-04-04 16:41:58.401
    *** CLIENT ID:() 2013-04-04 16:41:58.401
    *** SERVICE NAME:(SYS$BACKGROUND) 2013-04-04 16:41:58.401
    *** MODULE NAME:() 2013-04-04 16:41:58.401
    *** ACTION NAME:() 2013-04-04 16:41:58.401
    knahcapplymain: encountered error=26808
    *** 2013-04-04 16:41:58.401
    dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x0, level=0, mask=0x0)
    ----- Error Stack Dump -----
    ORA-26808: Apply process AS02 died unexpectedly.
    ORA-01031: insufficient privileges
    KNACDMP: *******************************************************
    KNACDMP: Dumping apply coordinator's context at 25487cb0
    KNACDMP: Apply Engine # 0
    KNACDMP: Apply Engine name
    KNACDMP: Coordinator's Watermarks ------------------------------
    KNACDMP: Apply High Watermark = 0002fc0f875f (SCN=0x0002.fc0f875f)
    KNACDMP: Apply Low Watermark = 0002fc0f875f (SCN=0x0002.fc0f875f)
    KNACDMP: Recovery Low Watermark = 0002fc0f875f (SCN=0x0002.fc0f875f)
    KNACDMP: Fetch Low Watermark = 0002fc0f876b (SCN=0x0002.fc0f876b)
    KNACDMP: Fetch Low Watermark Time = 811857327
    KNACDMP: Oldest SCN = (SCN=0x0000.00000000)
    KNACDMP: Oldest XID =
    KNACDMP: Oldest Create Time = 0
    KNACDMP: Last replicant syncpoint SCN = 0x0000.00000000
    KNACDMP: Last syncpoint at primary SCN = 0x0002.fc0f875f
    KNACDMP: First partition max pos = 0002fc10fab4 (SCN=0x0002.fc10fab4)
    KNACDMP: Last partition max pos = 0002fc10fab4 (SCN=0x0002.fc10fab4)
    KNACDMP: Last processed = 0002fc0f875f (SCN=0x0002.fc0f875f)
    KNACDMP: Conservative pos = 0002fc0f8cb2 (SCN=0x0002.fc0f8cb2)
    KNACDMP: Recovery start pos = (SCN=0x0000.00000000)
    KNACDMP: Recovery high watermark = 0002fc0f875f (SCN=0x0002.fc0f875f)
    KNACDMP: Spill LWM = (SCN=0x0000.00000000)
    KNACDMP: Spill LWM Create Time = 0
    KNACDMP: Coordinator's constants -------------------------------
    KNACDMP: number of apply slaves = 5
    KNACDMP: min number of apply slaves = 5
    KNACDMP: max number of apply slaves = 5
    KNACDMP: safety level (K) = 1
    KNACDMP: max txns in memory = 400
    KNACDMP: max constraints per table = 620
    KNACDMP: hash table size (in entries) = 10000000
    KNACDMP: Coordinator's intervals -------------------------------
    KNACDMP: syncpoint interval (ms) = 0
    KNACDMP: write low watermark interval(ms)= 1
    KNACDMP: Coordinator's timers/counters -------------------------
    KNACDMP: current time = 1365082918
    KNACDMP: low watermark timer = 0
    KNACDMP: syncpoint timer = 1365082918
    KNACDMP: txnbufsize timer = 1365082220
    KNACDMP: Coordinator's txn counts -------------------------
    KNACDMP: total txns applied = 0
    KNACDMP: number of unassigned comp txns = 0
    KNACDMP: number of unassigned incomp txns= 0
    KNACDMP: avg number of unassigned txns = 0.00
    KNACDMP: total applied at last plwm write= 0
    KNACDMP: apply prog. entries below plwm = 0
    KNACDMP: total unassigned lcrs = 0
    KNACDMP: Coordinator's State/Flags -----------------------------
    KNACDMP: Coordinator's State = KNACST_APPLY_UNTIL_END
    KNACDMP: Coordinator's Flags = 0x408004
    KNACDMP: Slave counts ------------------------------------------
    KNACDMP: number of reserved slaves = 0
    KNACDMP: number of admin slaves = 0
    KNACDMP: number of slaves in wait cmt = 1
    KNACDMP: number of slaves suspended = 0
    KNACDMP: number of safe slaves = 1
    KNACDMP: avg number of idle slaves = 0.00
    KNACDMP: number of slaves initializing = 0
    KNACDMP: number of slaves terminating = 0
    KNACDMP: Slave Lists -------------------------------------------
    KNACDMP: Dumping All Slaves :-
    Slave id = 0, State = 8, Flags = 0, Not Assigned 0 txns 0 lcrs
    Slave id = 1, State = 9, Flags = 2, Assigned Xid = 0x001e.006.0005d213 1 txns 0 lcrs
    Slave id = 2, State = 5, Flags = 1, Assigned Xid = 0x0019.00e.0007f8d9 1 txns 0 lcrs
    Slave id = 3, State = 0, Flags = 0, Not Assigned 0 txns 0 lcrs
    Slave id = 4, State = 0, Flags = 0, Not Assigned 0 txns 0 lcrs
    Slave id = 5, State = 0, Flags = 0, Not Assigned 0 txns 0 lcrs
    KNACDMP: End dumping all slaves
    KNACDMP: syncdep slaves = { }
    KNACDMP: cont chunk slaves = { }
    KNACDMP: cont slaves = { }
    KNACDMP: exec txn slaves = { }
    KNACDMP: Active slaves (2) = { 1 2 }
    KNACDMP: Idle slaves (3) = { 3 4 5 }
    KNACDMP: Txn Lists ---------------------------------------------
    KNACDMP: Dumping all txns :-
    XID = 0x001e.006.0005d213 Commit pos = 0002fc06718c (SCN=0x0002.fc06718c) State = 0
    Lcr cnt = 0
    Assigned to slavid = 1
    Fetched chunks = 142
    depslaves = { } wm depslaves = { }
    XID = 0x0019.00e.0007f8d9 Commit pos = 0002fc0f876b (SCN=0x0002.fc0f876b) State = 1
    Lcr cnt = 0
    Assigned to slavid = 2
    Fetched chunks = 1
    depslaves = { } wm depslaves = { }
    KNACDMP: End dumping all txns.
    KNACDMP: Complete txns = { 0x0019.00e.0007f8d9 ** NO UNASS ** }
    KNACDMP: Unassigned txns = { }
    KNACDMP: *******************************************************
    Warning: Apply error received: ORA-26714: User Error encountered during apply process. Clearing.
    knahcapplymain: encountered error=26808
    *** 2013-04-04 16:58:47.073
    dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x0, level=0, mask=0x0)
    ----- Error Stack Dump -----
    ORA-26808: Apply process AS01 died unexpectedly.
    ORA-01031: insufficient privileges
    KNACDMP: *******************************************************
    KNACDMP: Dumping apply coordinator's context at 25487cb0
    KNACDMP: Apply Engine # 0
    KNACDMP: Apply Engine name
    KNACDMP: Coordinator's Watermarks ------------------------------
    KNACDMP: Apply High Watermark = 0002fc0f875f (SCN=0x0002.fc0f875f)
    KNACDMP: Apply Low Watermark = 0002fc0f875f (SCN=0x0002.fc0f875f)
    KNACDMP: Recovery Low Watermark = 0002fc0f875f (SCN=0x0002.fc0f875f)
    KNACDMP: Fetch Low Watermark = 0002fc0f876b (SCN=0x0002.fc0f876b)
    KNACDMP: Fetch Low Watermark Time = 811857327
    KNACDMP: Oldest SCN = (SCN=0x0000.00000000)
    KNACDMP: Oldest XID =
    KNACDMP: Oldest Create Time = 0
    KNACDMP: Last replicant syncpoint SCN = 0x0000.00000000
    KNACDMP: Last syncpoint at primary SCN = 0x0002.fc0f875f
    KNACDMP: First partition max pos = 0002fc10fab4 (SCN=0x0002.fc10fab4)
    KNACDMP: Last partition max pos = 0002fc10fab4 (SCN=0x0002.fc10fab4)
    KNACDMP: Last processed = 0002fc0f875f (SCN=0x0002.fc0f875f)
    KNACDMP: Conservative pos = 0002fc0f8cb2 (SCN=0x0002.fc0f8cb2)
    KNACDMP: Recovery start pos = (SCN=0x0000.00000000)
    KNACDMP: Recovery high watermark = 0002fc0f875f (SCN=0x0002.fc0f875f)
    KNACDMP: Spill LWM = (SCN=0x0000.00000000)
    KNACDMP: Spill LWM Create Time = 0
    KNACDMP: Coordinator's constants -------------------------------
    KNACDMP: number of apply slaves = 5
    KNACDMP: min number of apply slaves = 5
    KNACDMP: max number of apply slaves = 5
    KNACDMP: safety level (K) = 1
    KNACDMP: max txns in memory = 400
    KNACDMP: max constraints per table = 620
    KNACDMP: hash table size (in entries) = 10000000
    KNACDMP: Coordinator's intervals -------------------------------
    KNACDMP: syncpoint interval (ms) = 0
    KNACDMP: write low watermark interval(ms)= 1
    KNACDMP: Coordinator's timers/counters -------------------------
    KNACDMP: current time = 1365083926
    KNACDMP: low watermark timer = 0
    KNACDMP: syncpoint timer = 1365083926
    KNACDMP: txnbufsize timer = 1365083218
    KNACDMP: Coordinator's txn counts -------------------------
    KNACDMP: total txns applied = 0
    KNACDMP: number of unassigned comp txns = 0
    KNACDMP: number of unassigned incomp txns= 1
    KNACDMP: avg number of unassigned txns = 0.00
    KNACDMP: total applied at last plwm write= 0
    KNACDMP: apply prog. entries below plwm = 0
    KNACDMP: total unassigned lcrs = 0
    KNACDMP: Coordinator's State/Flags -----------------------------
    KNACDMP: Coordinator's State = KNACST_APPLY_UNTIL_END
    KNACDMP: Coordinator's Flags = 0x8204
    KNACDMP: Slave counts ------------------------------------------
    KNACDMP: number of reserved slaves = 0
    KNACDMP: number of admin slaves = 0
    KNACDMP: number of slaves in wait cmt = 0
    KNACDMP: number of slaves suspended = 0
    KNACDMP: number of safe slaves = 1
    KNACDMP: avg number of idle slaves = 0.00
    KNACDMP: number of slaves initializing = 0
    KNACDMP: number of slaves terminating = 0
    KNACDMP: Slave Lists -------------------------------------------
    KNACDMP: Dumping All Slaves :-
    Slave id = 0, State = 8, Flags = 0, Not Assigned 0 txns 0 lcrs
    Slave id = 1, State = 5, Flags = 1, Assigned Xid = 0x0019.00e.0007f8d9 1 txns 0 lcrs
    Slave id = 2, State = 0, Flags = 0, Not Assigned 0 txns 0 lcrs
    Slave id = 3, State = 0, Flags = 0, Not Assigned 0 txns 0 lcrs
    Slave id = 4, State = 0, Flags = 0, Not Assigned 0 txns 0 lcrs
    Slave id = 5, State = 0, Flags = 0, Not Assigned 0 txns 0 lcrs
    KNACDMP: End dumping all slaves
    KNACDMP: syncdep slaves = { }
    KNACDMP: cont chunk slaves = { }
    KNACDMP: cont slaves = { }
    KNACDMP: exec txn slaves = { }
    KNACDMP: Active slaves (1) = { 1 }
    KNACDMP: Idle slaves (4) = { 2 3 4 5 }
    KNACDMP: Txn Lists ---------------------------------------------
    KNACDMP: Dumping all txns :-
    XID = 0x001e.006.0005d213 Commit pos = 0002fc06718c (SCN=0x0002.fc06718c) State = 0
    Lcr cnt = 0
    Not Assigned
    Fetched chunks = 142
    depslaves = { } wm depslaves = { }
    XID = 0x0019.00e.0007f8d9 Commit pos = 0002fc0f876b (SCN=0x0002.fc0f876b) State = 1
    Lcr cnt = 0
    Assigned to slavid = 1
    Fetched chunks = 1
    depslaves = { } wm depslaves = { }
    KNACDMP: End dumping all txns.
    KNACDMP: Complete txns = { 0x0019.00e.0007f8d9 ** NO UNASS ** }
    KNACDMP: Unassigned txns = { 0x001e.006.0005d213 }
    KNACDMP: *******************************************************
    *** 2013-04-04 16:58:47.513
    Warning: Apply error received: ORA-26714: User Error encountered during apply process. Clearing.
    I watched this link http://docs.oracle.com/cd/E11882_01/server.112/e17069/strms_trapply.htm#i1014714 and I checked grants of schemas owners. These grants identical as on Primary DB Server.
    I don't know what I need to do. It's very critical Server. Please help me.

    So, my problem is solved very easy.
    Logical Standby didn't work because I added grant SYSDBA to temporary user and revoked this grant at once and I didn't change orapwSID file on Logical Standby from Primary.
    http://docs.oracle.com/cd/E11882_01/server.112/e25608/create_ps.htm#SBYDB00424Note:
    Whenever you grant or revoke the SYSDBA or SYSOPER privileges or change the login password of a user who has these privileges, you must replace the password file at each physical or snapshot standby database in the configuration with a fresh copy of the password file from the primary database.
    >
    So, I deleted temporary user on Logical Standby and it solved the problem.
    Thanks a lot to all who helped me!

Maybe you are looking for