Advanced Queuing (correlation id feature)

Nice day!

I'm studying Oracle Advanced Queuing concepts and have faced with the idea that I don't understand: correlation id feature. I'd be happy if someone could clarify this matter for me.

Say we have several of your queue and I add a subscriber to it and I'm specifies the rule to dequeue for this Subscriber:

begin
    dbms_aqadm.add_subscriber(queue_name => 'aq_admin_plsql.msg_queue'
                     ,subscriber => sys.aq$_agent(name => 'APP1', address => null,protocol => null)
                     ,rule => q'[corrid='111']');
end;
/

I guess the part above the code means that the consumer "APP1" can only dequeue messages with message_properties.correlation: = '111';

Am I correct in saying this and if not what one hears the argument of rule for?

Unfortunately, my hypothesis seems to be false. I would like to show the test case to explain.

CONNECT / as sysdba

CREATE USER aq_admin_plsql IDENTIFIED BY aq_admin_plsql
  DEFAULT TABLESPACE users
  TEMPORARY TABLESPACE temp;


ALTER USER aq_admin_plsql QUOTA UNLIMITED ON users;


GRANT aq_administrator_role TO aq_admin_plsql;
GRANT connect               TO aq_admin_plsql;
GRANT create type           TO aq_admin_plsql;
GRANT create sequence       TO aq_admin_plsql;
grant resource to aq_admin_plsql;
grant create  procedure to aq_admin_plsql;


EXECUTE dbms_aqadm.grant_type_access('aq_admin_plsql');
;
grant create  procedure to aq_admin_plsql;


EXECUTE dbms_aqadm.grant_type_access('aq_admin_plsql');

CONNECT aq_admin_plsql/aq_admin_plsql


CREATE TYPE message_type AS OBJECT (
    message_id     NUMBER(15)
  , subject        VARCHAR2(100)
  , text           VARCHAR2(100)
)
/



CREATE SEQUENCE message_seq
       INCREMENT BY 1
       START WITH 1000
       NOMAXVALUE
       NOCYCLE;



CONNECT aq_admin_plsql/aq_admin_plsql
SET SERVEROUTPUT ON


BEGIN


    -- -------------------------------------------------------


    DBMS_AQADM.CREATE_QUEUE_TABLE (
        queue_table         => 'aq_admin_plsql.msg_qt'
      , queue_payload_type  => 'aq_admin_plsql.message_type'
      , sort_list           =>  'priority,enq_time'
      , multiple_consumers  =>  TRUE
    );


    -- -------------------------------------------------------


    DBMS_AQADM.CREATE_QUEUE (
        queue_name          => 'msg_queue'
      , queue_table         => 'aq_admin_plsql.msg_qt'
      , queue_type          => DBMS_AQADM.NORMAL_QUEUE
      , max_retries         => 0                        --max number of dequeue retries (rollbacks) before moving to exception queue
      , retry_delay         => 0                        --after failure, delay before msg can be dequeued again
      , retention_time      => 100                        --time in which msg remains in the queue table after dequeuing
      , dependency_tracking => FALSE                    -- not currently implemented
      , comment             => 'Test Object Type Queue'
      , auto_commit         => FALSE                    --deprecated
    );


    -- -------------------------------------------------------


    DBMS_AQADM.START_QUEUE('msg_queue');


    -- -------------------------------------------------------

  dbms_aqadm.add_subscriber(queue_name => 'aq_admin_plsql.msg_queue'
                     ,subscriber => sys.aq$_agent(name => 'APP1', address => null,protocol => null)
   ,rule => q'[corrid='111']');


END;
/


















Now, the queue of the message with the correlation id say '222'.

CONNECT aq_admin_plsql/aq_admin_plsql


DECLARE
   enqueue_options      DBMS_AQ.ENQUEUE_OPTIONS_T;
   message_properties   DBMS_AQ.MESSAGE_PROPERTIES_T;
   message_handle       RAW (16);
   MESSAGE              aq_admin_plsql.MESSAGE_TYPE;
BEGIN
   MESSAGE :=
      AQ_ADMIN_PLSQL.MESSAGE_TYPE (aq_admin_plsql.message_seq.NEXTVAL,
                                   'Subject: EXAMPLE MESSAGE',
                                   'Message: THIS IS A SAMPLE MESSAGE.');


   ------------------------------------------------------------------------
   enqueue_options.VISIBILITY := DBMS_AQ.ON_COMMIT; --ON_COMMIT - the enqueue is part of the current transaction
   enqueue_options.SEQUENCE_DEVIATION := NULL;                    --deprecated
   
   ----------------------------------------------------------------------------
   message_properties.priority := -5; --priority of message. Smaller number = higher priority, may be negative.
   message_properties.delay := DBMS_AQ.NO_DELAY; --Is the number of seconds for which the message is in the WAITING state.
   message_properties.expiration := DBMS_AQ.NEVER; --Is the number of seconds during which the message is available for dequeuing, starting from
   message_properties.correlation := '222'; --Is an identifier supplied by the producer of the message at the time of enqueuing the message.
   message_properties.recipient_list(1) := sys.aq$_agent('APP1', null, null); 


   ------------------------------------------------------------------------------------------------------------
   DBMS_AQ.ENQUEUE (queue_name           => 'aq_admin_plsql.msg_queue',
                    enqueue_options      => enqueue_options,
                    message_properties   => message_properties,
                    payload              => MESSAGE,
                    msgid                => message_handle     --out_parameter
                                                          );


   COMMIT;
----------------------------------------------------------------------------------------------
END;
/








We can verify that the message has managed to put in the queue.

select t.MSG_ID, t.CORR_ID, t.MSG_STATE, t.CONSUMER_NAME
from aq$msg_qt t
; 

MSG_ID(2)CORR_IDMSG_STATECONSUMER_NAME
14506AAED0CCBA48E055000000000001222LOANAPP1

Now, I do the dequeue the message defines the name of the consumer to "APP1" and I think that the message will not be removed because we have a rule for this Subscriber: corrid'art = '111'

DECLARE
   dequeue_options      DBMS_AQ.DEQUEUE_OPTIONS_T;
   message_properties   DBMS_AQ.MESSAGE_PROPERTIES_T;
   message_handle       RAW (16);
   MESSAGE              aq_admin_plsql.MESSAGE_TYPE;
BEGIN
   ------------------------------------------------------------
   dequeue_options.consumer_name := 'APP1'; --Indicates the consumer for multi-consumer queues.
   dequeue_options.dequeue_mode := DBMS_AQ.remove;
   dequeue_options.navigation := DBMS_AQ.FIRST_MESSAGE;
   dequeue_options.visibility := DBMS_AQ.IMMEDIATE;
   dequeue_options.wait := DBMS_AQ.FOREVER;
   dequeue_options.msgid := NULL;
   --------------------------------------------------------------


   DBMS_AQ.dequeue (queue_name           => 'aq_admin_plsql.msg_queue',
                    dequeue_options      => dequeue_options,
                    message_properties   => message_properties --out parameter
                    , payload              => MESSAGE            --out parameter
                    , msgid                => message_handle     --out parameter
                   );




   DBMS_OUTPUT.put_line ('+-----------------+');
   DBMS_OUTPUT.put_line ('| MESSAGE PAYLOAD |');
   DBMS_OUTPUT.put_line ('+-----------------+');
   DBMS_OUTPUT.put_line ('- Message ID   := ' || MESSAGE.message_id);
   DBMS_OUTPUT.put_line ('- Subject      := ' || MESSAGE.subject);
   DBMS_OUTPUT.put_line ('- Message      := ' || MESSAGE.text);


   COMMIT;
END;
/








However, the message seems to be removed:

select t.MSG_ID, t.CORR_ID, t.MSG_STATE, t.CONSUMER_NAME, t.DEQ_TIME, t.DEQ_USER_ID, t.DEQ_TXN_ID
from aq$msg_qt t
; 

MSG_ID(2)CORR_IDMSG_STATECONSUMER_NAMEDEQ_TIMEDEQ_USER_IDDEQ_TXN_IDQUEUE
14506AAED0CCBA48E055000000000001222PROCESSEDAPP122.04.2015 16:53:11AQ_ADMIN_PLSQL8.29.2818MSG_QUEUE

It seems strange, isn't it?

To put it in a Word so my question is:

1. How could the queue breaking the rules of correlation id? If it works as designed then what is the reason for the correlation id?

I thank very you much in advance! I'd appreciate any help.

Hello

your problem in your example is that you have addressed your message explicitly to the Subscriber (line #21):

message_properties.recipient_list(1) := sys.aq$_agent('APP1', null, null);

This Subscriber will still get the info that there are new messages. Normally, you do not know the subscribers for messages

and you don't publish it. If you remove this line then the rule is analyzed. For the payload parameter value "YYY", you will get:

ORA-24033: no recipients for message

Kind regards

WoG

Tags: Database

Similar Questions

  • Oracle Streams Advanced Queuing and advanced replication

    Hi experts,

    I don't have much experience in Oracle. Please tell me what is "Oracle Streams" in simple words. What is use of this example.

    difference between "Oracle Streams, advanced and advanced replication queues".

    Reg,

    Hard

    Hi harsh,

    I'll try and simply summarize for you.

    (1) advanced replication - the ancient mode of replication of data between databases - no one really uses this method more (even if it's still there)

    (2) AQ (or now renamed as streams AQ I think) is a technology of queues for the publication and subscription to messages - it is not a replication method on its own, but is a key technology for manufacturing workflow

    (3) water - a replication technology course complete with a huge amount of flexibility (and complexity) - one of the best tools of the oracle set product - but it is now be depracated in favor of goldengate (in large part because GG is a costly option, personally, I think)

    (4) goldengate - just like rivers but can replicate to/from databases (Sql server, sybase etc.) non-oracle

    streams and goldengate roughly the same work but are implemented very differently - flow is much plsql and queues, GG is to learn another language (although scripting tool really)

    hope that helps.

    See you soon,.

    Rich

  • Y at - it all x 64 support for Advanced Queuing?

    Y at - it x 64 current ODP.NET version of the driver that supports AQ? I know that the 11.1.0.7.20 version is supported, but that won't work in 32-bit mode. Is there anything for x 64 yet? If not, is there an ETA?

    11.2 it has.

    There is a beta of bundle odac 11.2, or you can use the production version of the 11.2 full client.

    It will be useful,
    Greg

    Published by: gdarling on April 23, 2010 09:48

    Oops, the beta version is only 32 bits. Full client should have what you need.

  • Job queue and event ADVANCE.

    Hello

    I'm getting to do advanced queues work which could be removed by the use of event in function. For a single message, it seems to work but if I queue of messages more some of them are 'lost' without having been processed. In below code I create job scheduler queue and event. Then I enqueue messages 3 - two immediately after each other and third with 5 delay. Only the first and the third message are processed (and written to the TST_DATA table). In the queue table, it seems all messaged have been processed. RDBMS version is 12.1.0.2.

    Thanks for any response.

    CREATE TABLE TST_DATA (
      sCommand VARCHAR2(50)
    );
    
    CREATE TYPE TST_PAYLOAD_T AS OBJECT (
    sCommand VARCHAR2(50)
    );
    /
    
    CREATE OR REPLACE PROCEDURE processMessage(
      itMsg TST_PAYLOAD_T
    ) IS
    BEGIN
      INSERT INTO TST_DATA (sCommand) VALUES (itMsg.sCommand);
      COMMIT;
    END;
    /
    
    BEGIN
        dbms_aqadm.create_queue_table(
          queue_table => 'TST_QUEUE_TAB',
          queue_payload_type => 'TST_PAYLOAD_T',
          multiple_consumers => TRUE
        );
    
        dbms_aqadm.create_queue(
          queue_name => 'TST_QUEUE',
          queue_table => 'TST_QUEUE_TAB'
        );
    
        dbms_scheduler.create_program(
          program_name => 'TST_PROG',
          program_type => 'STORED_PROCEDURE',
          program_action => 'processMessage',
          number_of_arguments => 1,
          enabled => FALSE
        );
    
        dbms_scheduler.define_metadata_argument(
          program_name => 'TST_PROG',
          metadata_attribute => 'EVENT_MESSAGE',
          argument_position => 1
        );
        dbms_scheduler.enable('TST_PROG');
    
        dbms_scheduler.create_job(
          job_name => 'TST_JOB',
          program_name => 'TST_PROG',
          queue_spec => 'TST_QUEUE',
          enabled => FALSE
        );
        dbms_scheduler.enable('TST_JOB');
    
        dbms_aqadm.start_queue('TST_QUEUE');
    END;
    /
    
    DECLARE
      ltMsg TST_PAYLOAD_T;
      ltEnqueueOptions dbms_aq.enqueue_options_t;
      ltMsgProperties dbms_aq.message_properties_t;
      lrMsgId RAW(16);
    BEGIN
      ltEnqueueOptions.visibility := dbms_aq.IMMEDIATE;
      ltMsg := TST_PAYLOAD_T('test1');
      dbms_aq.enqueue(
        queue_name => 'TST_QUEUE',
        enqueue_options => ltEnqueueOptions,
        message_properties => ltMsgProperties,
        payload => ltMsg,
        msgid => lrMsgId
      );
      ltMsg := TST_PAYLOAD_T('test2');
      dbms_aq.enqueue(
        queue_name => 'TST_QUEUE',
        enqueue_options => ltEnqueueOptions,
        message_properties => ltMsgProperties,
        payload => ltMsg,
        msgid => lrMsgId
      );
      dbms_lock.sleep(5);
      ltMsg := TST_PAYLOAD_T('test3');
      dbms_aq.enqueue(
        queue_name => 'TST_QUEUE',
        enqueue_options => ltEnqueueOptions,
        message_properties => ltMsgProperties,
        payload => ltMsg,
        msgid => lrMsgId
      );
    END;
    /
    
    SELECT * FROM TST_DATA;
    

    Hello

    you're right: after two immediate queue operations and a separate queue there are only two lines in the table

    (tested on 11.2.0.4):

    SQL> select * from tst_data;
    
    SCOMMAND
    --------------------------------------------------
    test1
    test3
    

    If you wait just 1 sec after each DBMS_ENQUEUE there are 3 rows.

    Even with a visibility using DBMS_AQ.COMMIT and COMMIT after that each line there are only 2 rows.

    This mechanism using DBMS_SCHEDULER and EVENT_MESSAGE functionality seems to be a bit slow.

    You must specify the option parallel instance for your business:

    DBMS_SCHEDULER.set_attribute ('TST_JOB', 'parallel_instances', TRUE);
    

    You will get then 3 rows, even without a delay of sleep:

    SQL> select * from tst_data;
    
    SCOMMAND
    -----------------------------
    test1
    test2
    test3
    

    Kind regards

    WoG

  • Queues advanced Vs normal queues?

    Hi, can someone let me know if there are any another in addition to the 'Advanced' queues queue mechanism in Oracle? I want to know if there is some standard/normal queues and more queues ' Advanced'?

    Thank you

    Nope - they are all "Advanced".

    Indeed, in some ways advanced queues is simply the trade name, to distinguish it from Microsoft's MSMQ or IBM MQ.

    However, given that the queue can be stored in a persistent Oracle table, some fairly advanced can be derived which are not traditionally part of the Message Queueing. Things like restarting the queue and the contents of the queue according to reports. (As described in the QA manual at http://tahiti.oracle.com)

  • Advance (AQ) queues for EBS R12

    Hello

    EBS R12.1
    OEL 5.4

    Did someone here used AQ in your EBS R12?

    We have EBS R12 of installation and a separate mini inventory made in APEX on server of Oracle 10 g XE system.

    Both systems interacts with others, each data send/receive on both sides.

    What will be the best solution for this type of installation? AQ is a good option?
    Can you give me the notes metalink on how to set up QA on EBS?
    Or simply create dblinks and do some concurrent programs that send/receive/process data.


    Thank you very much

    Ms. K

    Hello

    Integrate the APEX R12, please check these threads.

    Integration of the APEX with eBS R12
    Integration of the APEX with eBS R12

    How to install the APEX in environment R12
    How to install the APEX in environment R12

    Installation procedure for APEX
    Re: Installation Procedure for APEX

    Advanced for Files, please see the documnetation.

    Advanced Queuing
    http://www.Oracle.com/pls/db102/search?remark=quick_search&word=Advanced+Queuing&tab_id=&format=ranked

    Thank you
    Hussein

  • A time-out of the finite queue of wiring allows parallelism?

    I have several loops (11) all running in parallel, set up with a producer--> several consumer-> multiple consumer architecture.

    In each of the loops of consumer, I wired the values of time-out on the order of 1 second each of the vi "remove item" which feed on each loop. However, the overall performance of all vi is very slugish.  I have no expectation s vi in the loops of consumer, I guess the time queue supports this feature and allows labview to work its magic of parallelism. This hypothesis is correct?

    For what it's worth, the loop of the producer bed synchronously large shared memory double paintings representing the acquired data and post processed in RT through virtualization (hypervisor). The loop of producer implements an element of expectation. This loop of producer distributes the data to the various queues, depending on the data type meta code embedded in the data of recevied. Then, first consumer level loops review data, update some PLC tags accordingly (via the datasocket connection) and, under certain conditions, send signals well formatted the next level consumer loops that manages storage PDM.

    Each consumer has a dedicated queue and each of them are powered by several producers to the top of the pipe. I put vi waiting in each loop of consumer with a value of about half of the time waiting for data to arrive, and it did not help at all. However, the problem has been resolved by configuring the properties of execution of almost all under vi as priority of subroutine, returning with dedicated allocation of memory. I know it's basic stuff that I should have checked before hand, but everything works fine now.

    Thanks for the help anyway!

  • With the help of legends custom B2B with incoming messages batch to push directly to an AQ queue

    I'm trying to create a legend, attached to a partnership agreement, which will process an incoming batch load and write each individual message in the batch to advanced queue.

    I have the following in place pieces and works so far... 

    1 QA 

    2 B2B lot

    3. partnership agreements

    4 making SOA message waiting

    5 Basic legend in place and access to the message.

    My problem occurs in step 5.  My legend is fired as each message in the batch is traversed and the output of the whole lot (all messages) seem to be added to the AQ at the same time. (They are messages separate, which is good, but I try to insert a pause in order to limit the speed at which these messages are pushed on the queue).

    My question is, How can I publish the message I shot of the lot to QA immediately that I did it - as opposed to add the message to the standard output of the legend? 

    [sample code and further explanation below]

    . . .

    I have tried this approach because my queue is set up in a clustered environment and the options I've seen so far for the AQ limitation apply only to single-server systems.  For example, setting the property minimumDelayBetweenMessages in my composite SOA side for fact the message isn't an option for me.  We have no access to the database settings associated with querying on distributed systems.

     

    Here is a version of my legend:

    public class inboundThrottler implements legend

     

    public Sub run (context of CalloutContext, )

    throws CalloutDomainException, CalloutSystemException  

    { 

       try  

    //Retrieve the properties of the legend of CalloutContext

    String context.getStringProperty = TimeInterval ("timeIntervalInSeconds"); 

      System. on .println ("Time-out interval is" + timeInterval); 

    //Get the message of the legend of entry

    //Message Passthrough

    CalloutMessage cmOut = cmIn;

                try {

      TimeUnit. SECONDS . Sleep (timeIntervalAsLong);

    { } catch (InterruptedException e) { }

                          System. on .println ('error found in the part of the timeout of the legend');

    e.printStackTrace ();

                      }

      System. on .println ("+++ B2B LEGEND PROPERLY TREATED +++ ');

    output.add (cmOut);

    //Throw exception, if any

      { } catch (Exception e) { }

                     System. on .println ('error found in the legend'); 

    take new (e) CalloutDomainException;

      }

      }

      }

     

    Y at - it something other than output.add (cmOut); can I use to insert my message in QA?

    In my server logs, I can see the "+++ B2B LEGEND CORRECTLY PROCESSED +++ ' message for each message in the batch however, they are all pushed to the AQ at the same time and that is why they are all handled by the composite made as fast it can handle to Dequeue the message.  When we deal with more payloads of 5000 messages, the end result is a highly bogged down the server and in some extreme cases, the server crash.

       

    Thank you in advance for any input. Even if there are better ways to strangle my incoming messages (I certainly heard about these opportunities) for my own edification, I too wish to know suggestions for the insertion of my message in AQ at the point in my code that I have highlighted.

    I found a solution, and because I didn't know all the answers on this topic, I'll go ahead and answer myself for the sake of posterity.

    The short answer is do not use a legend Java at all since the intention of the legend was first place to strangle incoming messages so that they are placed on QA in a more controlled way and at a pace slower to allow SOA handle a large load. I found an excellent article, "handling large payloads" [https://docs.oracle.com/middleware/1213/b2b/b2b-user/app_perform.htm] which addressed my needs perfectly.

    To summarize in a few words, there are a number of settings that can be made as size to commit partial lot, size of the payload and large load useful program, in conjunction with a setting called 'Enable the Streaming' in the bpel AQ adapter side SOA Dequeue of things who will accomplish what I need to do.  The version I use is Oracle SOA Suite 11.1.1.7

    Directly related to the question, I referred to above concerning how to insert a message directly in my QA:

    I will not go into the horrific details, but basically I create a ConnectionFactory via an InteractionSpec to get the right connection managed, then convert the message correctly and insert the message in the queue, taking care to manage the space of thread, and close all open connections.  Finally, in my contract partner, I make a note to NOT add the message to the queue after my process of legend in order to avoid duplication of messages.

    All said, I'm happy I found a way to let SOA Suite and B2B to treat this issue with a few "out of the box" settings, because even if the captions can be very useful to insert a custom header or do a quick transformation, using them to enter the bowels of my managed connections are not a walk in the Park.

    Hope this question and the subsequent response will be useful to those seeking similar tasks on the road.

  • Anyone know how to "cone" and "fade out", a rule (online tool) at each end? Thanks in advance!

    Anyone know how to "cone" and "fade out", a rule (online tool) at each end? Thanks in advance!

    Use features of variable width.

  • No 'Mirror Image' checkbox not tab in advance for c4680

    Hello! I just bought a new printer hp Photosmart c4680 for iron for transfer on fabric as my previous printer packed. After a few discussions and research, I settled on this one because he supported for transfers and is a brand that I've not used it before. I don't know what to do and how to do it, but I can't cos told me to do is not available; CL 'Advance' in the box 'Features' tab select the 'Mirror Image' checkbox. There are 2 boxes, 1 - 'allow the maximum the DPI setting. 2 "" activate Technologies HP Real Life '. " No MIRROR IMAGE! Any help would be most appreciated. Thank you. AKO.

    Sorry I was wrapped in me lately. Windows XP. I went to considerably emails with HP abuse and their final answer is lower.

    "Please write to the HP customer service.

    I would like to inform you that the printer supports the iron on transfer but the pilot did not have the mirroring of the image feature is why we have suggested you to use third-party manufacturers called Microsoft Office Picture Manager software to reflect the image. "Being an ODP that is not an option for me.

    I have since had their ring for me today to (India)? in the measure and suggests using Microsoft Word. I had previously rang Braintree HP Customer Care and spoke to a technician who, after deliberating with other Tech: says "Mirror Image isn't necessary, just select iron-Ontransfer paper and print normally. Does'nt work.  PICASA Forum suggests:-point culminating pic click > Ctrl-Shift-H to flip horizontal and Shift-Ctrl-V for vertical turning. He worked for some but not for me.

    I have mine by visiting "download.com" chose "free downloads" "mirror image" search and chose "Easyimage" sort.

    Thank you for taking the time for me, hope this might help someone like me who is getting fed up with the problem. AKO

  • Development of a feature of single line with list items

    Hello
    I am new to Oracle forms. Currently using Oracle forms 6i.
    I am facing a problem when you check the condition of the components of a line while choosing the "item in the list. I basically multiple data block. On the block of data I assigned to the property as 'Item in the list' to one of the element. This list item has three options 'MANUAL', 'AUTO' and 'ADVANCE '. When I choose the 'MANUAL' list item, corresponding line should be editable and the user can insert the record in the same row. But when I choose 'AUTO' or 'ADVANCE' only the specified element say for example the element 'Sr.no" only be editable while all other elements are unchangeable. I tried to use set_record_property for 'MANUAL' and that my point. But writing set_item_property to "AUTO" and "ADVANCE", which spoils the feature then 'MANUAL' for the line/record after having inserted a line 'AUTO' or 'FORWARD '.
    Please help as soon as possible because it is urgently needed.

    Published by: 1005292 on May 10, 2013 12:43

    I agree with Gregor uses WHEN-LIST-CHANGED-relaxation. But I wouldn't set the INSERT_ALLOWED and UPDATE_ALLOWED properties in a WHEN-NEW-FOLDER-iNSTANCE-trigger, but put in the WHEN-LIST-CHANGED-trigger and in the process of filling the block (I don't know how the block is filled, if its done using EXECUTE_QUERY the relaxation would be POST-QUERY-relaxation).

    The statement to make it a feature in the Insertable current record is

    SET_ITEM_INSTANCE_PROPERTY('BLOCK.ITEM', TO_NUMBER(:SYSTEM.TRIGGER_RECORD), INSERT_ALLOWED, PROPERTY_TRUE);
    SET_ITEM_INSTANCE_PROPERTY('BLOCK.ITEM', TO_NUMBER(:SYSTEM.TRIGGER_RECORD), UPDATE_ALLOWED, PROPERTY_TRUE);
    
  • Need details on the tablespace and storage used by the queue oracel

    Hi all

    I'm working on the lines of the Oracle. I need some details about the storage space of the queues.

    1. is it mandatory that we have space separate for the queue table? What will happen if we run out of table space? Lose us data?
    2. how much storage space is required for a queue of the oracle?

    Please suggest me on this.

    Hello

    946965 wrote:
    1. is it mandatory that we have space separate for the queue table? What will happen if we run out of table space? Lose us data?

    No - it is not necessary to separate queue objects, you can do however purely for the simplicity of space management, but is certainly not a requirement. Space missing in a storage space for a queue is not different to press space to a normal process - Oracle will trigger an error ("ORA-xxxxx cannot extend... ") and the process trying to NQ to the queue will fail or do what it has been coded so that error." So, if your code NQ did something stupid mistake so I guess it's possible loss of data in case of error (not only exhausted space) but in general I'm expecting the process to report the error and stop.

    946965 wrote:
    2. how much storage space is required for a queue of the oracle?

    It is depends entirely on how you plan to use the queues, queues are not generally intended for long-term data storage, they do not perform well for this - they work better with the message in. message on (enqueue | dequeue) so unless you intend to leave messages in the queue for long periods of time I expect no significant space consumption. But only you guys can really work it to according to the type of user data and how long messages remain in the queue.

    There are some useful notes on My Oracle Support on the management of the space occupied by the queues which is very important for performance, for example
    How can I reduce the high watermark (HWM) of advanced queue objects? (Doc ID 421474.1)

    Hope this helps,

    Paul

  • Purpose of Converter PDF Adobe Advanced Options

    I am curious about the purpose of the " Advanced Options " (also called " Advanced Document Settings " "") for the Adobe PDF virtual printer.  For example access from an application via

    Print(.. . Select Adobe PDF as printer) > Properties > Layout > Advanced .

    I've included a screenshot for clarity.

    Options include the Paper Size .  Above all, I am interested in the creation of PDF to MS Word documents, and the layout in Word would negate the Paper Size option, I'm pretty sure.

    There is an option for Print Quality .  But the joboptions files (profiles accessed via ... > Properties > Adobe PDF Settings > Default Settings/Edit ) seem to control the ultimate resolution output printing.

    There is an option for PostScript Output Option , with possible selections including " Optimize for Portability "and" Archive Format ". ""  I'm interested in the PDF/A output, but these two evocative PostScript options appear only useful if the postscript file was going to be created/used/manipulated.  It seems that nowadays the postscript file is not usually explicitly created, but serves as a 'hidden' intermediate in the creation of the PDF file.  See also http://www.freeframers.org/archive/01/msg00050.html

    Am I right to conclude that the 'Advanced' options are a feature inherited , not useful to anyone who creates PDF files in a single step - instead of printing to a file in postscript format, followed by the creation of PDF files using the Distiller?

    See for example http://forums.Adobe.com/message/1240330#1240330

    Kind regards

    DIV

    I pretty much agree. However, the print quality may be a great. I use 300 dpi and a lot of people recommend 600 dpi. The 1200 dpi is well beyond what is normally required. A place where the 1200 is a major problem is in preparation of slides in PDF format. If you have drawn with lines of 1 pixel color, they will be 1200 dpi. Imagine the problems when viewing on a 96 dpi screen, a factor of more than 12 less pixels. A yellow line 1 pixel is almost unreadable because of the way the line is sampled for display. If 300 dpi is used for print quality, then there is no problem. I found this one on the hard.

    Most of the other settings let you alone, or change somewhere else.

    In your example of another post DOC file, your A4 came out as a letter for me. The paper defined in the DOC file is A4. My default in Acrobat's letter. Thus, the WORD does NOT replace the printer setting. You must set the paper in the printer separately, similar to the right paper in the printer.

    I'm still struggling with all the differences that you are trying to report on your other post. There are differences, but I am not sure of the reason. You might want to look at a page in the PDF document audit optimize see were the resources are used.

  • When to recreate queues and tables of the queue in QA?

    When recreate us queues and queue tables when you use Advanced Queuing? Is there an advantage in doing this?

    dbms_aqadm.stop_queue)
    dbms_aqadm.drop_queue)
    dbms_aqadm.drop_queue_table)

    dbms_aqadm.create_queue_table)
    dbms_aqadm.create_queue)
    dbms_aqadm.start_queue)

    Also, can you please let me know what is the difference between the queue and queue table? I'm newbie and not able to get help on that. I had a little of that first we can create the queue table and then create the queue. Any help would be appreciated.

    Why do you want to "recreate" the queues and queue tables?

    Read the documentation of

    DBMS_AQADM.ALTER_QUEUE
    and
    DBMS_AQADM.ALTER_QUEUE_TABLE
    

    and see if you can get out without falling and re - create

    In the contrary case; do some reading on how to manage queues, to drop, modification and creation!

    http://download.Oracle.com/docs/CD/B19306_01/server.102/b14257/aq_admin.htm#i1005956
    and
    http://download.Oracle.com/docs/CD/B19306_01/server.102/b14257/aq_admin.htm#i1006297

    If you want to change the payload type, you need to remove the queue and re-create it, in which case read on drop, keep in mind the STOP_QUEUE!
    http://download.Oracle.com/docs/CD/B19306_01/server.102/b14257/aq_admin.htm#i1006355

    Similarly for the DROP table queue!

    P;

  • filter on deque

    Hello

    I am very new to advanced queues. In fact I've never implemented it, but I'm just to assess whether this feature is corresponding to our requirements.


    Can someone please let me know if it is possible to filter the events being pumped-out (dequeued)?

    Thank you very much?

    Hello

    > Can you be it someone please let me know if it is possible to filter the events in pumped-out (dequeued)?

    It is possible to filter the data that have been queued. There are several possibilities:

    You could implement a mechanism of publication/register your payload of queue. Here, you define your own payload

    by type, e.g. with an indicator of type of object (e.g. process_type = 'A' or 'B').

    Next, you will configure two subscribers (using a listener) using the functionality of the rule: a waiting process all data in queue handles

    with the flag 'A', another wait process works for the flag "B".

    Another possibility could be a single wait (infinite loop) process with control of the payload.

    If process_type = "A" only, process_type = 'B' do.

    Kind regards

    WoG

Maybe you are looking for