Capture LCR's  without Apply Process

I want to capture the LCR's of a single table. So I have setup a capture process. When I do a SELECT * FROM V$STREAMS_CAPTURE I see that the value for "TOTAL_MESSAGES_ENQUEUED" increases BUT I don't get ANY messages in my queue_table that was setup for LCR's.
Please note that I don't have a APPLY process running because I want to read the LCR's from an external process (directly from the LCR queue).
So I have two questions:
(1) Is it possible to use only a Capture Process (to collect the LCR's) and use an external Program (e.g. C++ program) that enqueues the LCR's from the queue (using OCI).
(2) I have read a previous article where it was stated that if there is an external program the LCR's have to be re-enqueued? - What does this mean? - Do I have to move the LCR's in a different queue? - I thought the Apply Process is optional?

You got to have an apply process(DML handler) that dequeues the LCRs from Capture process and re-enqueues them back to the same Streams queue. Only then you can dequeue LCRs from an external application.
I'm using JMS to dequeue these LCRs.
Does anybody face any perfromance issues while using JMS to dequeue LCRs? In my case PL/SQL could dequeue as fast as 40 messages/second while JMS could dequeue only 7 msgs/sec.
Thanks

Similar Messages

  • USING CAPTURE WITHOUT APPLY OR PROPAGATE

    Does anyone know how to set up a capture process to work without a propagate or apply process? We would like to use capture to enqueue and manually dequeue to an external non-Oracle environment.

    An apply process is required to access the captured changes. However, you can use the apply process to re-enqueue the LCRs into the queue so that another application can work with them. An example of this is shown in Chapter 20 of the 9.2.0.2 Streams Manual http://otn.oracle.com/docs/cd/B10501_01/server.920/a96571/capappdemo.htm#64404

  • Apply process against user-enqueued lcrs

    I am working on a project where we want the ability to do multiple things with each lcr in a streams queue. We would like to utilize more than one stored procedure to do this. So to get around the single dml handler allowed for a captured lcr (per dml operation type), we are trying to dequeue and re-enqueue the lcr as a user-enqueued lcr in a multi-consumer or streams queue, and then use one or multiple apply process(es) to further process these lcrs. I've tried it with both the original streams queue, a new streams queue, and a normal AQ queue. In every instance the second apply process against the user-enqueued lcr crashes. The documentation seems to indicate we should be able to do this. Any input on this would be appreciated.

    Patricia, I really appreciate your input on this!
    There is a generic error in the dba_apply_error view, which does not help much: "ORA-06550: line , column :".
    As far as the apply user having privileges, the apply user is the owner of the custom apply procedure.
    There are trace files generated that are fairly cryptic, they appear to memory-related, here are samples:
    <sid>ap10<process>.trc:
    Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.4.0 - Production
    ORACLE_HOME = /orasw/app/oracle/product/9.2.0
    System name: HP-UX
    Node name: tsttib01
    Release: B.11.11
    Version: U
    Machine: 9000/800
    Instance name: ttib
    Redo thread mounted by this instance: 1
    Oracle process number: 22
    Unix process pid: 5313, image: oracle@tsttib01 (AP10)
    *** 2003-10-13 09:14:08.582
    *** SESSION ID:(52.5922) 2003-10-13 09:14:08.581
    knluSetStatus()+{
    finished knluSetStatus()+ }
    knldso: state object 5daae248, action 2 memory 0000000000000000
    knldso: state object 5da871a8, action 2 memory 0000000000000000
    <sid>p009<process>.trc:
    Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.4.0 - Production
    ORACLE_HOME = /orasw/app/oracle/product/9.2.0
    System name: HP-UX
    Node name: tsttib01
    Release: B.11.11
    Version: U
    Machine: 9000/800
    Instance name: ttib
    Redo thread mounted by this instance: 1
    Oracle process number: 28
    Unix process pid: 5317, image: oracle@tsttib01 (P009)
    *** 2003-10-13 09:14:08.475
    *** SESSION ID:(45.10480) 2003-10-13 09:14:08.471
    kngoPic: imagesize = 273

  • Apply process is aborting with:ORA-12801: error signaled in parallel query

    hi,
    We created a queue of a specific type, capture and apply process on the queue. Then we started the queue capture and the apply process. The problem is that the apply process is getting enabled and with in moments going into aborted state. wea re getting the follwoing error:
    ORA-12801: error signaled in parallel query server P000
    ORA-00600: internal error code, arguments: [kwqiceval:anyconv], [], [], [], [], [], [], []
    Any idea what could have gone wrong?
    scripts:
    exec dbms_aqadm.create_queue_table(queue_table=>'qt_anc',queue_payload_type=>'type_anc',multiple_consumers=> true, compatible => '9.0');
    exec dbms_aqadm.create_queue (queue_name => 'q_anc',queue_table=>'qt_anc');
    EXEC DBMS_AQADM.START_QUEUE (queue_name => 'q_anc');
    DECLARE
    emp_rule_name_dml VARCHAR2(300);
    emp_rule_name_ddl VARCHAR2(300);
    BEGIN
    DBMS_STREAMS_ADM.ADD_TABLE_RULES(
    table_name => 'ops.t_anc',
    streams_type => 'capture',
    streams_name => 'capture_anc',
    queue_name => 'strmadmin.q_anc',
    include_dml => true,
    include_ddl => false,
    source_database => null,
    dml_rule_name => emp_rule_name_dml,
    ddl_rule_name => emp_rule_name_ddl);
    DBMS_APPLY_ADM.SET_ENQUEUE_DESTINATION(
    rule_name => emp_rule_name_dml,
    destination_queue_name => 'strmadmin.q_anc');
    END;
    DECLARE
    emp_rule_name_dml VARCHAR2(300);
    emp_rule_name_ddl VARCHAR2(300);
    BEGIN
    DBMS_STREAMS_ADM.ADD_TABLE_RULES(
    table_name => 'ops.t_anc',
    streams_type => 'apply',
    streams_name => 'apply_anc',
    queue_name => 'strmadmin.q_anc',
    include_dml => true,
    include_ddl => false,
    source_database => null,
    dml_rule_name => emp_rule_name_dml,
    ddl_rule_name => emp_rule_name_ddl);
    DBMS_APPLY_ADM.SET_ENQUEUE_DESTINATION(
    rule_name => emp_rule_name_dml,
    destination_queue_name => 'strmadmin.q_anc');
    END;
    BEGIN
    DBMS_APPLY_ADM.START_APPLY(
    apply_name => 'apply_anc');
    END;
    BEGIN
    DBMS_CAPTURE_ADM.START_CAPTURE(
    capture_name => 'capture_anc');
    END;
    /

    Hello
    The above configuration is never supported. The implicit capture expects the queue payload to be SYS.ANYDATA and same with implicit apply also.
    However you can use Streams Messaging capability to achieve this. You need to wrap the messages with SYS.ANYDATA for this to work. The implicit capture uses a persistent logminer session to generate LCRs and it then wraps it with SYS.ANYDATA and enqueues into the capture queue, it then propagated to apply queue. You can generate LCRs and wrap it with SYS.ANYDATA and then enqueue into the capture queue then apply can recognise the messages.
    Here is an example on creating LCRs (tested in 10g):
    CREATE TABLE lcr_test (col1 NUMBER);
    DECLARE
         l_lcr SYS.LCR$_ROW_RECORD;
    BEGIN
         l_lcr :=
    SYS.LCR$_ROW_RECORD.CONSTRUCT
         source_database_name=>SYS_CONTEXT('USERENV','DB_NAME'),
         command_type=>'INSERT',
         object_owner=>USER,
         object_name=>'LCR_TEST'
         l_lcr.ADD_COLUMN('new','col1',SYS.AnyData.ConvertNumber(99));
         l_lcr.EXECUTE(TRUE);
         COMMIT;
    END;
    SELECT * FROM lcr_test;
    Converting to SYS.ANYDATA:
    DECLARE
         l_lcr SYS.LCR$_ROW_RECORD;
         l_anydata SYS.ANYDATA;
    BEGIN
         l_lcr :=
    SYS.LCR$_ROW_RECORD.CONSTRUCT
         source_database_name=>SYS_CONTEXT('USERENV','DB_NAME'),
         command_type=>'INSERT',
         object_owner=>USER,
         object_name=>'LCR_TEST'
         l_lcr.ADD_COLUMN('new','col1',SYS.AnyData.ConvertNumber(99));
         l_anydata:=SYS.ANYDATA.ConvertObject(l_lcr);
         ENQ_PROC(l_anydata);
         COMMIT;
    END;
    Thanks,
    Rijesh

  • Ora-26753 in the apply process

    Yesterday my apply process began to notice me an ora-26753 mismatched columns error but when I re-execute the transaction from dba_apply_error the transaction is apply without problem. I don´t identify what happen. Also there not are mismatch between the columns in the replicate tables. I found in metalink about this error but I did not find anything.
    Thanks a lot in advance.

    Next time it happens, think to open a LCR and compare the list of columns. You can do it through script or using Grid for version is 10.2.0.5+
    For script I wrote a small article but you will need to install Smenu.
    http://sourceforge.net/apps/mediawiki/smenu/index.php?title=How_to_see_contents_of_queues
    For grid, refer to the doc, it is easy to find in the streams section.

  • Same rule set for two apply processes

    Hi!
    Can anyone tell me whether it is possible to use the same rule set and all rules in it for two apply processes? It would be easy for me to use such configuration, because sometimes I create LCRs myself, sometimes Oracle captures them. They're exactly the same.
    And second question - I tried the above configuration, but the apply process for user created LCRs aborts when it sees first message. Error is: "ORA-00600: internal error code, arguments: [knlcfpactx:any_knlso], [], [], [], [], [], [], []". Oracle MetaLink and Google know nothing about this error. I also don't know if it's somehow connected with these rule sets or is it a problem within my procedure which creates LCRs.
    Greetings

    I'm answering myself. Yes, it is possible, to use the same rule set for different processes. It is said in the documentation. It is also possible to use one rule in several rule sets according to documentation.
    And it seems that it has nothing to do with my ORA-00600 error.

  • Error in apply process while indexing for table

    Hi,
    I have successfully implemented downstream capture-apply process from 11g to 11g.
    But, my apply process is aborting due to following error:-
    ORA-01435: user does not exist
    for LCR Error:
    alter index testuser.batchload_stat rebuild
    How can i resolve this conflict or Is their a way to disable index rebuild in target database for given apply process?

    Hi,
    Unfortunately, I have no idea how you could disable index rebuilt. But, since testuser doesn't exist on your target database, why don't you exclude his schema from replication?

  • Enqueue only apply process?

    I'm trying to setup a streams apply process that will enqueue a persistent LCR only. I do not need to apply the LCR.
    I can get the LCR enqueued as a user message using the DBMS_APPLY_ADM.SET_ENQUEUE_DESTINATION but I cannot "turn off" the apply of the LCR.
    I'm wondering if I should have my DML handler "discard" the message or if I need to write my own procedure to enqueue the message and skip the "SET_ENQUEUE_DESTINATION"?
    Any help is appreciated.
    Thx!
    rb

    I found the answer to my question in the documentation.
    The SET_EXECUTE procedure can be used with the SET_ENQUEUE_DESTINATION procedure if you want to enqueue messages that satisfy a particular rule into a destination queue without executing these messages. After a message is enqueued using the SET_ENQUEUE_DESTINATION procedure, it is the same as any message that is enqueued manually. Therefore, it can be manually dequeued, applied by an apply process, or propagated to another queue.
    Sorry for the post...
    rb

  • Update One Table with three Apply Processes

    Hi.
    I have One Database Target with three APPLY processes updating a same table. Each APPLY process refer to a Source Capture remote process.
    But I am verifying there is no update in the table when change data on Sources Databases. This table has a PK with two columns.
    Someone has idea about this problem, and how to resolve it?
    Thanks very much.
    JoseFormiga

    Hi.
    See my definitions below with one table. I have a lot of tables with similar definitons:
    SOURCE: (BD1)
    =======
    begin
    dbms_streams_adm.add_table_rules (table_name => 'TSINMETRO.HW_COBRANCAS',
    streams_type => 'capture',
    streams_name => 'CAPTUPSIE_CAPTURE',
    queue_name => 'STRMADMIN.CAPTUPSIE_QUEUE',
    include_dml => true,
    include_ddl => true,
    inclusion_rule => true);
    end;
    begin
    dbms_streams_adm.add_table_propagation_rules (table_name => 'TSINMETRO.HW_COBRANCAS',
    streams_name => 'DE_MG_PARA_PSCI',
    source_queue_name => 'STRMADMIN.CAPTUPSIE_QUEUE',
    destination_queue_name => 'STRMADMIN.APPLYMG_QUEUE@psci',
    include_dml => true,
    include_ddl => true,
    source_database => 'ipemmg',
    inclusion_rule => true);
    end;
    declare
    source_scn number;
    begin
    source_scn := dbms_flashback.get_system_change_number();
    dbms_apply_adm.set_table_instantiation_scn@psci (source_object_name => 'TSINMETRO.HW_COBRANCAS'     ,
    source_database_name => 'ipemmg',
    instantiation_scn => source_scn);
    end;
    begin DBMS_STREAMS_ADM.ADD_COLUMN(rule_name=>'HW_COBRANCAS595',table_name=> 'TSINMETRO.HW_COBRANCAS'
    ,column_name=>'SRV_UNF_ID',column_value =>ANYDATA.ConvertNumber(35),value_type=>'NEW',step_number=>1,operation=>'ADD'); END;
    begin DBMS_STREAMS_ADM.ADD_COLUMN(rule_name=>'HW_COBRANCAS595',table_name=> 'TSINMETRO.HW_COBRANCAS'
    ,column_name=>'SRV_UNF_ID',column_value =>ANYDATA.ConvertNumber(35),value_type=>'OLD',step_number=>2,operation=>'ADD'); END;
    Target:
    =======
    begin
    dbms_streams_adm.add_table_rules (table_name => 'tsinmetro.HW_COBRANCAS',
    streams_type => 'apply',
    streams_name => 'applymg_apply',
    queue_name => 'strmadmin.applymg_queue',
    include_dml => true,
    include_ddl => true,
    source_database => 'ipemmg',
    inclusion_rule => true);
    end;
    I have more two Source DBs doing so.
    Thanks.
    JoseFormiga

  • Will the apply process send back an acknowledgement when error or conflict?

    Hi.
    To ensure data integration, some mechanisms are introduced into streams. One of those is, when an apply process in the destination receive the LCR, it will send an acknowledgement to the propagation process in the source, and only when the propagation process in the source receive acknowledgements from all destinations, it will remove the LCR from the stream queue.
    My question is, when the apply process encountered with some exceptions, i.e. errors or conflicts, will it still send back the acknowledgement? Or this depends on whether the errors and conflicts are handled appropriately? Or some other conditions?
    Thanks for any suggestions.

    It's really two seperate things. The propagation process will push the lcr to all targets. Once it is safely in all of the target queues, the lcr will be removed from the source queue. If the apply processes successfully executes the lcr, then it will be removed from the target queue for that apply process. If an unhandled exception happens, then you will see the message in dba_apply_error. The apply processes don't know (or care) about what the other apply processes may do with the lcr.

  • Logical Standby Apply Process Performance

    Hello,
    We are testing our logical standby database for sql apply process.We run batch jobs in our active database and monitor the standby database for the time it takes to bring the database in sync following are the steps we follow:
    1) Insure active and standby are in sync.
    2) Stop sql apply on standby database.
    3) Run Batch job on active database.
    4) After completion of the job on active,start sql apply on standby.
    Following are the details of the time taken by sql apply,based on the previous runs:
    1st. 654K volume = 4 hrs (2727 records per min)
    2nd. 810K volume = 8 hrs 45 mins (1543 records per min)
    3rd. 744K volume = 7 hrs 17 mins (1704 records per min)
    Following are the details of the logical stdby parameters :
    MAX_SGA 100
    MAX_SERVERS 15
    PREPARE_SERVERS 4
    APPLY_SERVERS 8
    MAX_EVENTS_RECORDED 10000
    RECORD_SKIP_ERRORS TRUE
    RECORD_SKIP_DDL TRUE
    RECORD_APPLIED_DDL FALSE
    RECORD_UNSUPPORTED_OPERATIONS FALSE
    EVENT_LOG_DEST DEST_EVENTS_TABLE
    LOG_AUTO_DELETE TRUE
    LOG_AUTO_DEL_RETENTION_TARGET 1440
    PRESERVE_COMMIT_ORDER TRUE
    ALLOW_TRANSFORMATION FALSE
    can we ensure SQL apply process to apply data in consistent volume,Is it okay for a sql apply process to take same amount of time what the actual batch takes in active instance,can we further tweak apply process to get better performance.
    Please help.
    Thank you !!

    Following are the details of the time taken by sql apply,based on the previous runs:
    1st. 654K volume = 4 hrs (2727 records per min)
    2nd. 810K volume = 8 hrs 45 mins (1543 records per min)
    3rd. 744K volume = 7 hrs 17 mins (1704 records per min)
    Following are the details of the logical stdby parameters :
    Hi,
    By looking at the above apply rate, the apply process is working normally and not having issues.
    Since it's a bulk batch data update in PRIMARY, it's obvious and quite normal that it will take time in STANDBY database to get applied and in sync with PRIMARY.
    Still, if you need to consider improving the performance, look out for adjusting the APPLIER & PREPARER process. (parameteres, APPLY_SERVERS & PREPAR_SERVERS).

  • How to change Pre-Payment invoice status (without applying)

    Hi,
    I have a paid pre-payment invoice. But i don't need to create standard invoice for it now.
    How do i change the Pre-Payment invoice status (without applying)? ......i.e. it should not be able to apply against any standard invoice.
    eg. maybe change status to 'Fully Applied'
    Thanks

    Closed due to non-response.

  • Logical Standby Apply Processes Die when granting a user sysdba on Primary

    I've run into an issue where the sql apply processes are stopping when granting a user sysdba privilege on the primary.
    The error is insufficient privileges.
    Of course the workaround that we have used is to skip the transaction on the logical and then manually grant the sysdba privilege on the standby. I'm hoping there is a more elegant solution as I have 8 DBAs on my team and each on of the transactions will need to be skipped individually, and is a bit of a pain. Just thought I would ask if anyone out there has run into the same issue and has a better workaround.

    I think you misunderstand. We run our standby in guard_mode 'STANDBY', which allows sys to perform the grant operation directly on the logical. Where it is failing is when we grant on the primary. That or I misunderstand. Are you saying that if I put in the script on the primary, the alter session command, then it will propagate down cleanly? That is something I have not tried of course, but makes sense how that could work, unless it throws an error on the primary because it is not a standby.

  • Is it possible to create an EQ setting (manual) in iTunes that can be stored on an iPod nano as an addition to the 22 EQ onpresets?  I want to use a manual setting for my headphones without applying the setting to each song.

    Hi.  Is it possible to create an EQ setting (manual) in iTunes that can be stored on an ipod nano as an addition to the 22 EQ presets?  I want to use a manual setting for my headphones without applying the EQ to all the individual songs.  I'd use a different EQ for my dock.
    Thanks.
    Paul St

    A quick look at the DM1 site shows that it works with Audiocopy.

  • Increase Apply Process Performance

    Dear All,
    I want to know how can I increase Apply Process Performance in Oracle Streams Setup.
    I use Windows 2003 and Oracle 10g R2

    Check metalink Note:335516.1
    HTH...

Maybe you are looking for

  • Can't Send Email from Iphone Using Pop Account

    I have check our host names, ports, user name, passwords etc (all the account mail settings are OK) for incoming and outgoing servers. I can receive email fine but can't send them back out through the outgoing server. I am using the identical setting

  • Identification on material master in SAP Retail

    Hello, I have a question regarding the material master and if it is possible to somewere enter an age or signal if a consumer have to show an identification when they buy some kind of materials? In Sweden you have to show a identification (f.ex drive

  • How to create payment term '90 days after Bill of lading + 7 days after...'

    Hi all, I was wondering how you can create this special payment term: "90 days after Bill of Lading, the calculation of the Net Due Date has to start 7 days after the invoice date". 90 days after Bill of Lading is no problem to create. The start of t

  • Skype - Problem with conversations (group)

    Hello i have problem : I call to friend - work i call to friend and add 2 friend = It does not work why? I add 2 friend to conversation and 1 friend add 2 friend no (After addition of 2 people can not write in a conversation (connection problem)) Lea

  • Events in ALV block list

    Hi, Im using ALV block list to display the output. In that one column is highlighted using HOT SPOT. I have to capture that event and display the information as pop-up. can anyone tell me how to do this? Thanks, Amal