<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Oracle Tales &#187; Tutorials</title>
	<atom:link href="http://www.stijf.com/wordpress/category/oracle/tutorials/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.stijf.com/wordpress</link>
	<description>Just another Oracle weblog</description>
	<lastBuildDate>Tue, 14 Dec 2010 23:16:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>New article on Descriptive Flexfields</title>
		<link>http://www.stijf.com/wordpress/2010/12/new-article-on-descriptive-flexfields/</link>
		<comments>http://www.stijf.com/wordpress/2010/12/new-article-on-descriptive-flexfields/#comments</comments>
		<pubDate>Tue, 14 Dec 2010 21:03:44 +0000</pubDate>
		<dc:creator>Arian Stijf</dc:creator>
				<category><![CDATA[eBS]]></category>
		<category><![CDATA[Flexfields]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[descriptive flexfields structure segments context]]></category>

		<guid isPermaLink="false">http://www.stijf.com/wordpress/?p=513</guid>
		<description><![CDATA[I just published the second part of the article series on Flexfields. This part is about Descriptive Flexfields. It is available from:&#160;http://www.stijf.com/joomla/flexfields/flexfields-in-oracle-ebs-descriptive-flexfields The next part will follow shortly, and will discuss the flexfield datamodel.]]></description>
			<content:encoded><![CDATA[<p>I just published the second part of the article series on Flexfields. This part is about Descriptive Flexfields. It is available from:&nbsp;<a href="http://www.stijf.com/joomla/flexfields/flexfields-in-oracle-ebs-descriptive-flexfields">http://www.stijf.com/joomla/flexfields/flexfields-in-oracle-ebs-descriptive-flexfields</a></p>
<p>The next part will follow shortly, and will discuss the flexfield datamodel.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stijf.com/wordpress/2010/12/new-article-on-descriptive-flexfields/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Special and Pair validation types</title>
		<link>http://www.stijf.com/wordpress/2010/04/special-and-pair-validation-types/</link>
		<comments>http://www.stijf.com/wordpress/2010/04/special-and-pair-validation-types/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 17:55:27 +0000</pubDate>
		<dc:creator>Arian Stijf</dc:creator>
				<category><![CDATA[eBS]]></category>
		<category><![CDATA[Flexfields]]></category>
		<category><![CDATA[Internals]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Validation]]></category>
		<category><![CDATA[loadid]]></category>
		<category><![CDATA[loadidr]]></category>
		<category><![CDATA[pair validation]]></category>
		<category><![CDATA[popid]]></category>
		<category><![CDATA[popidr]]></category>
		<category><![CDATA[special validation]]></category>
		<category><![CDATA[valid]]></category>
		<category><![CDATA[validation type]]></category>
		<category><![CDATA[validr]]></category>

		<guid isPermaLink="false">http://www.stijf.com/wordpress/?p=445</guid>
		<description><![CDATA[Tutorial on special and pair validation types]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">I am working on an article about flexfields and flexfield validation. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Even though the article is not yet finished, I thought the part about &lsquo;SPECIAL&rsquo; and &lsquo;PAIR&rsquo; validation types might be interesting enough. Many people seem to think they can only use the seeded validation sets. However, you can also create your own validation sets. And their options are very powerful. So I wanted to publish this part of the article as a prelude to the full story. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<h2 style="margin: 12pt 0cm 3pt"><span lang="EN-US" style="mso-ansi-language: en-us"><em><font size="5"><font face="Cambria"><font color="#000000">Special Validation<o:p></o:p></font></font></font></em></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Special validation is used to provide flexfield functionality for a single value. What that means is that you can have for example a concurrent program parameter that will be filled with a Key flexfield value, or a range of flexfield values. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Let&rsquo;s go back to the Key Flexfield. We know that they are combinations of different segment values that are stored in a separate combination table. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">When you want to submit a key-flexfield combination as a parameter to a concurrent program, you can code your own validation for the separate values. But you&rsquo;ll be missing the nice functionality that gives you pop-ups, a validation over the resulting combination and if needed the ID-value for the flexfield combination.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">That is possible with a &lsquo;Special&rsquo; validation type.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">The special validation uses a number of user exits to enter, validate and query keyflex segments. With special validation, you will be able to enter one or more segment values for a key flexfield. To enter these segment values, 3 user exits can be used. They are: &lsquo;POPID&rsquo;, &lsquo;VALID&rsquo; and &lsquo;LOADID&rsquo;.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">POPID is used to enable the user to enter the flexfield segment value. It is called when the users cursor enters the segment value field. With this user exit, you decide which segment values should be shown, and how they should be shown.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;</span>VALID is called when the user exits the segment value, or confirms the chosen flexfield combination. It validates the entered value against the values existing in the key flexfield table. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">LOADID is optional, and it can be used to choose which information will be returned as flexfield value. This can be the concatenated segments, or the id-value for the flexfield combination or segment values. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">These 3 user exits can be assigned to 3 &lsquo;events&rsquo;. There are more events possible, but they are either not yet in use, or their use is not yet supported. So we will only use &lsquo;Validate&rsquo;, &lsquo;Edit&rsquo; and &lsquo;Load&rsquo;. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Sounds complicated, so far? Don&rsquo;t worry; this is not an easy validation. But we&rsquo;ll build some examples to give you an idea. First we start with building a very easy special validation. This will be built on our Code Combination key flexfield. We&rsquo;ll be using a concurrent program &lsquo;Test Flex Validation&rsquo; program to see our different options. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">This program is based on the following procedure: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">CREATE OR REPLACE PROCEDURE XXX_TEST_FLEXFIELD_PARAMS<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">( errbuf<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>out varchar2<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">, retcode <span style="mso-spacerun: yes">&nbsp;</span>out varchar2<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">, p_flex<span style="mso-spacerun: yes">&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span>in<span style="mso-spacerun: yes">&nbsp; </span>varchar2<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">, p_flex2<span style="mso-spacerun: yes">&nbsp; </span>in<span style="mso-spacerun: yes">&nbsp; </span>varchar2 := &lsquo;XXX&rsquo;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">, p_flex3<span style="mso-spacerun: yes">&nbsp; </span>in<span style="mso-spacerun: yes">&nbsp; </span>varchar2 := &lsquo;XXX&rsquo;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">, p_flex4<span style="mso-spacerun: yes">&nbsp; </span>in<span style="mso-spacerun: yes">&nbsp; </span>varchar2 := &lsquo;XXX&rsquo;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">, p_flex5<span style="mso-spacerun: yes">&nbsp; </span>in<span style="mso-spacerun: yes">&nbsp; </span>varchar2 := &lsquo;XXX&rsquo;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">) IS<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">BEGIN<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>FND_FILE.PUT_LINE(FND_FILE.OUTPUT,p_flex);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>FND_FILE.PUT_LINE(FND_FILE.OUTPUT,p_flex2);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>FND_FILE.PUT_LINE(FND_FILE.OUTPUT,p_flex3);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>FND_FILE.PUT_LINE(FND_FILE.OUTPUT,p_flex4);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>FND_FILE.PUT_LINE(FND_FILE.OUTPUT,p_flex5);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">END;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">This will only write the parameter value to the output of the request. To use flexfields as parameters for concurrent programs, we need to define a value set based on them. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">We will start with the barest setup to enter a key-flexfield combination. For this article, we use the accounting flexfield, with code &lsquo;GL#&rsquo;<span style="mso-spacerun: yes">&nbsp; </span>and id-num &lsquo;101&rsquo;. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">In this case, we have the following definition:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font size="3"><font face="Calibri"><font color="#000000"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shapetype coordsize="21600,21600" filled="f" id="_x0000_t75" o:preferrelative="t" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path gradientshapeok="t" o:connecttype="rect" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id="Picture_x0020_4" o:spid="_x0000_i1042" style="width: 453.75pt; height: 288.75pt; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image001.png"></v:imagedata></v:shape></span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><img alt="" height="481" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special1.jpg" width="755" /></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">So what does this mean? <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">The first box is for the edit event. This will be triggered when the user enters the cursor into the field with this value set.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">FND POPID<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>This is the user exit to pop up a flexfield screen, and let the user enter the flexfield values. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">CODE=&quot;GL#&quot;<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>This is the flexfield code for the key flexfield that we will be using.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">APPL_SHORT_NAME=&quot;SQLGL&quot;<span style="mso-tab-count: 1"> </span>The short name for the application the flexfield belongs too. Together with &lsquo;Code&rsquo;, this will identify the flexfield itself. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">NUM=&quot;101&quot;<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The id-number for the flexfield structure. If you have only a single structure flexfield, it is optional. For flexfields enabled for multiple structures, you need to enter the id-number.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">VALIDATE=&quot;PARTIAL&quot;<span style="mso-tab-count: 1">&nbsp;&nbsp; </span>Validate can be &lsquo;None&rsquo;, &lsquo;Partial&rsquo; or &lsquo;Full&rsquo;. None means the combination is not validated. Partial means that the separate segments are validated, there is no validation if the combination exists. Full means that segments and combination will be checked, and if a new value is entered, this will be inserted into the key flexfield table.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">SEG=&quot;:!VALUE&quot;<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>This is the forms field that will be used to store the value of the segments. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">The second box is for the &lsquo;Validation&rsquo; event. This code will be called when the user navigates out of the field, or submits the entire combination.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Now when we set this value set as a parameter for our concurrent program, we can see how the validation works:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font size="3"><font face="Calibri"><font color="#000000"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shape id="Picture_x0020_7" o:spid="_x0000_i1041" style="width: 453.75pt; height: 303pt; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image003.png"></v:imagedata></v:shape></span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><img alt="" height="504" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special2.jpg" width="755" /></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Now when we run the program, we get this pop-up: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font size="3"><font face="Calibri"><font color="#000000"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shape id="Picture_x0020_10" o:spid="_x0000_i1040" style="width: 453.75pt; height: 244.5pt; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image005.png"></v:imagedata></v:shape></span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><img alt="" height="414" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special3.jpg" width="769" /></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">We have all the functionality of the key flexfield. We can use the &lsquo;Combinations&rsquo; button to search for existing combinations, and all separate segments will be validated, as will be the final combination. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">When we submit a value to our program, it will show the concatenated segments as the value of our parameter: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font size="3"><font face="Calibri"><font color="#000000"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shape id="Picture_x0020_13" o:spid="_x0000_i1039" style="width: 453.75pt; height: 45pt; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image007.png"></v:imagedata></v:shape></span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><img alt="" height="73" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special4.jpg" width="732" /></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Now let&rsquo;s see some more features of this validation. For example, we&rsquo;d like to have the value of the combination id. (CODE_COMBINATION_ID in our case, since we use the Accounting Flexfield). <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">To get that, we need to add the LOADID user exit: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;<img alt="" height="596" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special5.jpg" width="730" /></font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font size="3"><font face="Calibri"><font color="#000000"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shape id="Picture_x0020_22" o:spid="_x0000_i1038" style="width: 453.75pt; height: 378pt; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image009.png"></v:imagedata></v:shape></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">The &lsquo;Load&rsquo; event will get the combination-id from the flexfield table. This is only possible for the &lsquo;VALIDATE=&rdquo;FULL&rdquo;, since it will validate the whole combination. Also we need to set the ID=&rdquo;:!ID&rdquo;. This will populate the :!ID column with the ID value of the combination.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Finally, I added the &lsquo;DINSERT=&rdquo;NO&rdquo; &lsquo;, because we don&rsquo;t want to allow insertion of new code combinations from this value set. (And Validation=&rdquo;FULL&rdquo; by default inserts new combinations into the flexfield column). <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Now when we run the concurrent request, we see that the parameter value is the code_combination_id instead of the concatenated segments:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font size="3"><font face="Calibri"><font color="#000000"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shape id="Picture_x0020_19" o:spid="_x0000_i1037" style="width: 453.75pt; height: 43.5pt; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image011.png"></v:imagedata></v:shape></span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><img alt="" height="69" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special6.jpg" width="722" /></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><br />
	<font size="3"><font face="Calibri"><font color="#000000">With these user exits it is also possible to select just a number of segments, instead of the whole combination. For this we remove the &lsquo;Load&rsquo; / &lsquo;LOADID&rsquo; part again. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Then we add a &lsquo;DISPLAY=&rdquo;x&rdquo; &lsquo; to the &lsquo;Edit&rsquo; and &lsquo;Validate&rsquo; user exits. The &ldquo;display&rdquo; parameter is defaulting to &lsquo;ALL&rsquo;. But you can also specify separate segments by their sequence number or names. In our case, we display the first 2 segments: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font size="3"><font face="Calibri"><font color="#000000"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shape id="Picture_x0020_25" o:spid="_x0000_i1036" style="width: 453.75pt; height: 258.75pt; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image013.png"></v:imagedata></v:shape></span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><img alt="" height="405" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special8.jpg" width="710" /></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Now when we run the concurrent program, we get a pop-up for only the first 2 values:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font size="3"><font face="Calibri"><font color="#000000"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shape id="Picture_x0020_28" o:spid="_x0000_i1035" style="width: 453.75pt; height: 126.75pt; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image015.png"></v:imagedata></v:shape></span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><img alt="" height="174" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special9.jpg" width="623" /></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">A very nice feature (at least as far as I&rsquo;m concerned) is the use of a where clause on the combination values. Consider the following &lsquo;Enter&rsquo; code:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-size: 8pt; mso-ansi-language: en-us"><font face="Calibri"><font color="#000000">FND POPID<o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-size: 8pt; mso-ansi-language: en-us"><font face="Calibri"><font color="#000000">CODE=&quot;GL#&quot;<o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-size: 8pt; mso-ansi-language: en-us"><font face="Calibri"><font color="#000000">NUM=&quot;101&quot;<o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-size: 8pt; mso-ansi-language: en-us"><font face="Calibri"><font color="#000000">APPL_SHORT_NAME=&quot;SQLGL&quot;<o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-size: 8pt; mso-ansi-language: en-us"><font face="Calibri"><font color="#000000">VALIDATE=&quot;FULL&quot;<o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-size: 8pt; mso-ansi-language: en-us"><font face="Calibri"><font color="#000000">TITLE=&quot;Special Validation Key&quot;<o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-size: 8pt; mso-ansi-language: en-us"><font face="Calibri"><font color="#000000">ID=&quot;:!ID&quot;<o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-size: 8pt; mso-ansi-language: en-us"><font face="Calibri"><font color="#000000">SEG=&quot;:!VALUE&quot;<o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-size: 8pt; mso-ansi-language: en-us"><font face="Calibri"><font color="#000000">DESC=&quot;:!MEANING&quot;<o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><b style="mso-bidi-font-weight: normal"><span lang="EN-US" style="line-height: 115%; font-size: 8pt; mso-ansi-language: en-us"><font face="Calibri"><font color="#000000">WHERE=&quot;segment2 not like &#39;1%&#39; &quot;<o:p></o:p></font></font></span></b></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">The &ldquo;WHERE&rdquo; clause prevents us from choosing combinations that have a segment2 starting with &lsquo;1&rsquo;. When we run our concurrent program with this, and choose the combinations: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font size="3"><font face="Calibri"><font color="#000000"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shape id="Picture_x0020_31" o:spid="_x0000_i1034" style="width: 220.5pt; height: 328.5pt; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image017.png"></v:imagedata></v:shape></span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><img alt="" height="438" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special10.jpg" width="294" /></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">There is no Dpt starting with 1. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">When we add the &ldquo;WHERE&rdquo;-clause to the validation event too, it will prevent us from entering the values manually:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font size="3"><font face="Calibri"><font color="#000000"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shape id="Picture_x0020_34" o:spid="_x0000_i1033" style="width: 330.75pt; height: 105pt; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image019.png"></v:imagedata></v:shape></span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><img alt="" height="140" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special11.jpg" width="441" /></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">The last feature that we&rsquo;ll look into is the use of a pl/sql validation through the special validation routines. By using the user-exit PLSQL, we can call an anonymous PL/SQL block in our &lsquo;Validation&rsquo; event. I created a value set with the following function for the &lsquo;Validation&rsquo; event:</font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000"><o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000"><img alt="" height="404" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special12.jpg" width="712" /></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">FND PLSQL &quot; declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span>v_value varchar2( 10 ) := :!value ;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span>v_sum number;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span>v_valid boolean;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>v_sum:=0;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>for i in 1..length(v_value) loop<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>v_sum :=v_sum+(length(v_value)+1-i)*substr(v_value,i,1);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span>end loop;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span>if mod(v_sum,11)=0 then<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>v_valid := TRUE;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span>else<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>v_valid:=FALSE;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span>end if;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span>if not v_valid then<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>fnd_message.set_name(&#39;FND&#39;,&#39;FND_GENERIC_MESSAGE&#39; );<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>fnd_message.set_token(&#39;MESSAGE&#39;,&#39;This is not a valid bank account&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>fnd_message.raise_error;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span>end if;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><font color="#000000"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us">END; &quot; </span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p></o:p></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font size="3"><font face="Calibri"><font color="#000000"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shape id="Picture_x0020_46" o:spid="_x0000_i1032" style="width: 453.75pt; height: 257.25pt; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image021.png"></v:imagedata></v:shape></span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">This PL/SQL procedure validates a (Dutch) bank account number. If it does need pass the test, a message will be displayed. This gives you almost unlimited possibilities for validating entered data. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">As you can see, it is only a &lsquo;Validate&rsquo; event. Because we don&rsquo;t need any special functionality for entering the data. We can limit the entry to numbers only on the &lsquo;Validation Set&rsquo; main page. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Now when we use this value set for our concurrent program, we can only enter valid dutch bank accounts:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font size="3"><font face="Calibri"><font color="#000000"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shape id="Picture_x0020_49" o:spid="_x0000_i1031" style="width: 343.5pt; height: 120.75pt; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image023.png"></v:imagedata></v:shape></span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><img alt="" height="161" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special13.jpg" width="458" /></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">And<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font size="3"><font face="Calibri"><font color="#000000"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shape id="Picture_x0020_52" o:spid="_x0000_i1030" style="width: 453.75pt; height: 44.25pt; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image025.png"></v:imagedata></v:shape></span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font size="3"><font face="Calibri"><font color="#000000"><span lang="EN-US" style="mso-ansi-language: en-us"><img alt="" height="69" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special14.jpg" width="713" /></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><br />
	<font size="3"><font face="Calibri"><font color="#000000">The list of parameters for the user exits is longer than this. So we won&rsquo;t be going through all the possibilities. You can check the Developers Guide and the Flexfield guide for a complete listing of options. (Did you notice the flexfield title that I sneaked into the pop-up? Try and find the option for that!)<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Please try the different options for yourself, and realize the possibilities of the special validation. <o:p></o:p></font></font></font></span></p>
<h2 style="margin: 12pt 0cm 3pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><em><font color="#000000" face="Cambria" size="5">&nbsp;</font></em></o:p></span></h2>
<h2 style="margin: 12pt 0cm 3pt"><span lang="EN-US" style="mso-ansi-language: en-us"><em><font size="5"><font face="Cambria"><font color="#000000">Pair Validation<o:p></o:p></font></font></font></em></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Meanwhile, we&rsquo;ll continue to the &lsquo;Pair&rsquo; validation. The pair validation is very much like the &lsquo;special&rsquo; validation. It uses the same kind of user exits, but this time, a range of segment values or combinations is selected. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Let&rsquo;s first create a range of the account segment. Instead of using POPID and VALID, we use POPIDR and VALIDR. The R-version of the user-exits automatically create a range. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Of course we need 2 parameters to set the range. However, we need only one validation set. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">I created the validation set &lsquo;XXX_PAIR_VAL&rsquo;. I entered only the edit and validate events: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font size="3"><font color="#000000"><font face="Calibri"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shape id="Picture_x0020_58" o:spid="_x0000_i1029" style="width: 453.75pt; height: 4in; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image027.png"></v:imagedata></v:shape></span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><img alt="" height="480" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special16.jpg" width="755" /></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt">&nbsp;</p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The next step is to set the parameters for both the low and high value. Both parameters have the validation set &lsquo;XXX_PAIR_VAL&rsquo;.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font size="3"><font color="#000000"><font face="Calibri"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shape id="Picture_x0020_61" o:spid="_x0000_i1028" style="width: 453.75pt; height: 192.75pt; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image029.png"></v:imagedata></v:shape></span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><img alt="" height="317" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special18.jpg" width="747" /></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Now when we run the program, we can enter a range. This includes validation that the high value is indeed higher or equal to the low value. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font size="3"><font color="#000000"><font face="Calibri"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shape id="Picture_x0020_55" o:spid="_x0000_i1027" style="width: 453.75pt; height: 102.75pt; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image031.png"></v:imagedata></v:shape></span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><img alt="" height="174" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special15.jpg" width="769" /></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Of course the concurrent program will receive the values for 2 parameters. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">When we use the full validation we can enter a range of the whole account combination. Note that we cannot use the FULL validation for pair-validation. Because that would mean the use of the combination-id from the flexfield table and based on the combination-id&rsquo;s you cannot build a range.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">So we can only use PARTIAL and NONE for the validation. For that same reason, I have not yet had a reason to use a LOAD event for PAIR validation. It is however allowed to use one. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">I created a PAIR validation for the whole accounting range as follows: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><font size="3"><font color="#000000"><font face="Calibri"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shape id="Picture_x0020_64" o:spid="_x0000_i1026" style="width: 453.75pt; height: 4in; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image033.png"></v:imagedata></v:shape></span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p></o:p></span></font></font></font></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt">&nbsp;<img alt="" height="479" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special19.jpg" width="755" /></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">When used in the concurrent program, it will indeed allow us to enter a range of all segments:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><font size="3"><font color="#000000"><font face="Calibri"><span style="mso-fareast-language: nl; mso-no-proof: yes"><v:shape id="Picture_x0020_67" o:spid="_x0000_i1025" style="width: 265.5pt; height: 201.75pt; visibility: visible; mso-wrap-style: square" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:UsersArianAppDataLocalTempmsohtmlclip1 1clip_image035.png"></v:imagedata></v:shape></span><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><img alt="" height="269" src="http://www.stijf.com/wordpress/wp-content/uploads/image/Flex_special20.jpg" width="354" /></o:p></span></font></font></font></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">That completes the chapter on PAIR validation too. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stijf.com/wordpress/2010/04/special-and-pair-validation-types/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Oracle eBS 11i Infrastructure</title>
		<link>http://www.stijf.com/wordpress/2010/04/oracle-ebs-11i-infrastructure/</link>
		<comments>http://www.stijf.com/wordpress/2010/04/oracle-ebs-11i-infrastructure/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 09:58:05 +0000</pubDate>
		<dc:creator>Arian Stijf</dc:creator>
				<category><![CDATA[eBS]]></category>
		<category><![CDATA[Internals]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[components]]></category>
		<category><![CDATA[concurrent]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[forms server]]></category>
		<category><![CDATA[iAS]]></category>
		<category><![CDATA[infrastructure]]></category>

		<guid isPermaLink="false">http://www.stijf.com/wordpress/?p=423</guid>
		<description><![CDATA[Oracle eBS 11i Infrastructure &#160; In this article we will describe the infrastructure of Oracle eBusiness Suite (eBS). In its simplest form, eBS is a 3-tier application with a client tier, Application-tier and DB-tier. Database-Tier Let&#8217;s start with the DB-Tier. Surprisingly, the database tier has only very little eBS specific features. Of course we need [...]]]></description>
			<content:encoded><![CDATA[<h1 style="margin: 24pt 0cm 0pt"><span style="mso-ansi-language: en-us"><font color="#365f91"><font face="Cambria">Oracle eBS 11i Infrastructure<o:p></o:p></font></font></span></h1>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">In this article we will describe the infrastructure of Oracle eBusiness Suite (eBS). In its simplest form, eBS is a 3-tier application with a client tier, Application-tier and DB-tier. <o:p></o:p></font></font></font></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><font size="4"><font color="#4f81bd"><font face="Cambria">Database-Tier<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Let&rsquo;s start with the DB-Tier. Surprisingly, the database tier has only very little eBS specific features. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Of course we need a database (instance) and therefore an ORACLE_HOME. But the database can either be a single-instance or a RAC-installation and all Oracle RDBMS features are transparently available for eBS. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The management of the RDBMS Installation is also independent of eBS.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><font size="4"><font color="#4f81bd"><font face="Cambria">DB-Tier filesystem<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Let&rsquo;s start with the filesystem on the DB-Tier. Of course there is an Oracle_home installation needed, for the RDBMS-Instance. This will be installed during installation of eBS. But also a fresh installed ORACLE_HOME can be used, with an eBS database.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">In the ORACLE_HOME, an extra directory is added. The Appsutil directory. This directory contains the software and data needed for running Autoconfig and Rapidclone. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">All other directories are at the discretion of the eBS DBA. <o:p></o:p></font></font></font></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><font size="4"><font color="#4f81bd"><font face="Cambria">Oracle Instance<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">When we look at the instance to run eBS, we find a number of mandatory parameters for eBS. These are found in Metalink notes 216205.1 and 396009.1 (At the time of writing. Please verify these notes for yourself).<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">These parameters are recommended or mandatory based on testing by Oracle Corp. They will automatically be set by the eBS installer. But you should take note of them when you use a fresh installed ORACLE_HOME.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Then we finally come to the contents of the database. <o:p></o:p></font></font></font></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><font size="4"><font color="#4f81bd"><font face="Cambria">The eBS Database<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Let&rsquo;s start with the schemas in the database. Oracle eBS creates a separate schema for every module. The schema is named as the short_name of the module, for example AP (Oracle Payables / Accounts Payable), AR (Oracle Receivables / Oracle Receivables). <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">There is a separate schema for the Application owner APPS. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The Application schemas contain the tables, indexes and sequences for the different applications. All objects in these schemas (except indexes, of course) have a synonym in the APPS Schema. In the APPS Schema we also find all PL/SQL objects, views and Materialized Views. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">A major part of eBS is written in PL/SQL. All PL/SQL objects are also installed in the APPS Schema. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">User sessions within eBS will usually run in the APPS Schema as well. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">That brings us to an extra schema in the database: APPLSYSPUB. This schema has access to some of the eBS tables and packages, that allow it to validate eBS logins and start an APPS-session based on that login information. We will see the details of this later on. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Before release 11.5.2 every schema had its own tablespace. However, the number of modules for eBS (and with that the number of schemas) is ever increasing. So managing the database became more and more complex. In 11.5.2 Oracle introduced the Oracle Applications Tablespace Model (OATM). Within this model, the tablespaces in eBS are based on functionality, rather than schemas. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">In this model, we see the following tablespaces: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">APPS_TS_TX_DATA &ndash; Containing all transaction tables, Materialized Views and IOT&rsquo;s<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">APPS_TS_TX_IDX &ndash; Containing all indexes for transaction tables<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">APPS_TS_SEED &ndash; Containing the tables and indexes with seeded data (as opposed to transaction data).<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">APPS_TS_INTERFACE &ndash; For Open Interface tables<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">APPS_TS_SUMMARY &ndash; Contains summary tables for several modules (AR, PA, BIM, etc)<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">APPS_TS_NOLOGGING &ndash; For tables and objects that are created with the NOLOGGING option<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">APPS_TS_ARCHIVE &ndash; Containing archive and history tables (and indexes)<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">APPS_TS_QUEUES &ndash; Containing the AQ (Advanced Queuing) objects<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">APPS_TS_MEDIA &ndash; Containing tables with LOB&rsquo;s. For media objects or documents.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The Undo and Temp tablespaces are not part of the tablespace model.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><font size="4"><font color="#4f81bd"><font face="Cambria">Application Tier<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Now it&rsquo;s time to look at the Application Tier. In fact the Application Tier consists of 3 different services: Web service, Forms service and Concurrent Processing. In 11i installations, there is also an Administration service.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The Application Tier significantly changed from R11i to R12. We&rsquo;ll discuss the 11i Apps Tier shortly, and then discuss the R12 tier in more detail.<o:p></o:p></font></font></font></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><font size="4"><font color="#4f81bd"><font face="Cambria">The 11i infrastructure<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Both the R11 and R12 infrastructure consist of a Web-service, a Forms Service and a Concurrent Processing part. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">We will be discussing the different services here. The following picture shows all components and their communications. You might want to keep it for reference during this article. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us; mso-no-proof: yes"><v:shapetype coordsize="21600,21600" filled="f" id="_x0000_t75" o:preferrelative="t" o:spt="75" path="m@4@5l@4@11@9@11@9@5xe" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path gradientshapeok="t" o:connecttype="rect" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id="Object_x0020_1" o:gfxdata="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&#13;&#10;c1BLBQYAAAAABQAFAGcBAAAzFAAAAAA=&#13;&#10;" o:spid="_x0000_i1030" style="width: 453.75pt; height: 277.5pt; visibility: visible" type="#_x0000_t75"><v:imagedata cropbottom="-130f" croptop="-119f" o:title="" src="file:///C:DOCUME~1ARIANS~1LOCALS~1Tempmsohtmlclip1 1clip_image001.png"></v:imagedata><o:lock aspectratio="f" v:ext="edit"></o:lock></v:shape></span><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri"><span style="mso-spacerun: yes">&nbsp;</span><o:p></o:p></font></font></font></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><o:p><font color="#4f81bd" face="Cambria" size="4">&nbsp;</font></o:p></span></h2>
<h2 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><font size="4"><font color="#4f81bd"><font face="Cambria">R11i Web Service<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font color="#000000"><font face="Calibri"><font size="3">For 11i, the web tier is built on Oracle iAS 9i. The iAS installation provides webservices (Apache HTTP/HTTPS), a Java Runtime Engine (JSERV) and a PL/SQL engine (modplsql).<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font color="#000000"><font face="Calibri"><font size="3">The web service also acts a gateway for the Concurrent Request log and output files. And it is the first point of access when starting a forms session. (When using a socket forms connection, when using a forms servlet the web tier will host the forms process).<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font color="#000000"><font face="Calibri"><font size="3">A detail from the picture above shows the iAS structure.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font color="#000000"><font face="Calibri"><font size="3"><span style="mso-ansi-language: en-us; mso-no-proof: yes"><v:shape id="Object_x0020_2" o:gfxdata="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&#13;&#10;e1ZBk1Avcsr15vSQYu61NfBPr3xsMYNRbh82C5rc/4WKFbOqHW+G53Nv2RD9YbHMauVVAcJKU0E3&#13;&#10;K/vXVOEVp1rbsZYsbrRz5SCKyxYDsVgQpXDeg/Q/mP+o8Jm9bdAT6pjvQm9FcNGgmUHaQFZfsAsP&#13;&#10;pBukJU5g4WSJNpk0K+vabOmkvZZP1ue80i3kHnO21uws8X5FZxeLM1ecU4vn6ezMw46vLe1EV0Nk&#13;&#10;j5cokKb5RsYEpurWaRunaBLWex7c/ECg78ET3B15QGtoWkPT4AkuhGCxZG9xel72kFPgu6UUmGZO&#13;&#10;aeaYVk5p5ZR2ToHFWXZfklM60Kn0FQdcsekfD+W3GbCCy24/8qbqXM2t/wUAAP//AwBQSwMEFAAG&#13;&#10;AAgAAAAhAJxmRkG7AAAAJAEAACoAAABjbGlwYm9hcmQvZHJhd2luZ3MvX3JlbHMvZHJhd2luZzEu&#13;&#10;eG1sLnJlbHOEj80KwjAQhO+C7xD2btJ6EJEmvYjQq9QHCMk2LTY/JFHs2xvoRUHwsjCz7DezTfuy&#13;&#10;M3liTJN3HGpaAUGnvJ6c4XDrL7sjkJSl03L2DjksmKAV201zxVnmcpTGKSRSKC5xGHMOJ8aSGtHK&#13;&#10;RH1AVzaDj1bmIqNhQaq7NMj2VXVg8ZMB4otJOs0hdroG0i+hJP9n+2GYFJ69elh0+UcEy6UXFqCM&#13;&#10;BjMHSldnnTUtXYGJhn39Jt4AAAD//wMAUEsBAi0AFAAGAAgAAAAhALvlSJQFAQAAHgIAABMAAAAA&#13;&#10;AAAAAAAAAAAAAAAAAFtDb250ZW50X1R5cGVzXS54bWxQSwECLQAUAAYACAAAACEArTA/8cEAAAAy&#13;&#10;AQAACwAAAAAAAAAAAAAAAAA2AQAAX3JlbHMvLnJlbHNQSwECLQAUAAYACAAAACEAg6Vi6mUIAAB3&#13;&#10;VgAAHwAAAAAAAAAAAAAAAAAgAgAAY2xpcGJvYXJkL2RyYXdpbmdzL2RyYXdpbmcxLnhtbFBLAQIt&#13;&#10;ABQABgAIAAAAIQDhUTcfzwYAAOYbAAAaAAAAAAAAAAAAAAAAAMIKAABjbGlwYm9hcmQvdGhlbWUv&#13;&#10;dGhlbWUxLnhtbFBLAQItABQABgAIAAAAIQCcZkZBuwAAACQBAAAqAAAAAAAAAAAAAAAAAMkRAABj&#13;&#10;bGlwYm9hcmQvZHJhd2luZ3MvX3JlbHMvZHJhd2luZzEueG1sLnJlbHNQSwUGAAAAAAUABQBnAQAA&#13;&#10;zBIAAAAA&#13;&#10;" o:spid="_x0000_i1029" style="width: 453.75pt; height: 114.75pt; visibility: visible" type="#_x0000_t75"><v:imagedata cropbottom="-345f" cropright="-210f" croptop="-288f" o:title="" src="file:///C:DOCUME~1ARIANS~1LOCALS~1Tempmsohtmlclip1 1clip_image003.png"></v:imagedata><o:lock aspectratio="f" v:ext="edit"></o:lock></v:shape></span><span style="mso-ansi-language: en-us"><o:p></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font color="#000000"><font face="Calibri"><font size="3">The core of iAS is the web server. This is the front-end for the client. Requests can also be forwarded to and from the forms server and the concurrent processing. We&rsquo;ll see that in the next paragraphs. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font color="#000000"><font face="Calibri"><font size="3">Within the iAS Jserv and modplsql are plugins. They are the only components that communicate with the database. When they are called, they execute java (Jserv) or PL/SQL (modplsql) and return an html page. This page is then sent to the client through the HTTP service. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font color="#000000"><font face="Calibri"><font size="3">The Jserv delivers a Java Runtime Environment. In the Jserv, java servlets can be run. Also the JSP-files are executed in the Jserv. A JSP-file (Java Server Page) is a page with java code that returns an html-page (similar to the way scripting languages like PhP work). The java part is executed in Jserv, which returns the html to the webserver. The webserver redirects the html to the client. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font color="#000000"><font face="Calibri"><font size="3">Let&rsquo;s take a closer look at the components and their executions: <o:p></o:p></font></font></font></span></p>
<h3 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><o:p><font color="#4f81bd" face="Cambria" size="3">&nbsp;</font></o:p></span></h3>
<h3 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><font color="#4f81bd"><font face="Cambria"><font size="3">Webserver<o:p></o:p></font></font></font></span></h3>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The webserver is based on the regular Apache 2 webserver. The configuration file is also equal to the Apache config file. The configuration is set in httpd.conf (or httpds.conf for SSL). <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Instead of starting the webserver through $APACHE_HOME/bin/httpdctl, we start through $APACHE_HOME/apachectl. The default port number used for eBS 11i is 8000. This is part of port-pool 0. For different port-pools, the port number is increased. So for port-pool 1 the webserver runs on port 8001. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The root directory for the webserver is set to $OA_HTML, which is by default $COMMON_TOP/html. This directory contains all *.html files for eBS. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">A number of virtual directories are set up within eBS. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><font size="4"><font color="#4f81bd"><font face="Cambria">JServ<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">As mentioned before, java code is executed by Jserv. Jserv is a java servlet engine. That means that it can run both servlets and jsp-files.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">These servlets are mostly located in the $JAVA_TOP. The *.jsp files are located in the $OA_HTML directory. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">One of the options of Jserv is to create a database connection to the rdbms database. This is done by a JDBC Thin Client connection. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Before we look at the configuration for Jserv, examine the following picture. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font size="3"><font face="Calibri"><font color="#000000"><span style="mso-ansi-language: en-us; mso-no-proof: yes"><v:shape id="Object_x0020_3" o:gfxdata="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&#13;&#10;IQCcZkZBuwAAACQBAAAqAAAAY2xpcGJvYXJkL2RyYXdpbmdzL19yZWxzL2RyYXdpbmcxLnhtbC5y&#13;&#10;ZWxzhI/NCsIwEITvgu8Q9m7SehCRJr2I0KvUBwjJNi02PyRR7Nsb6EVB8LIws+w3s037sjN5YkyT&#13;&#10;dxxqWgFBp7yenOFw6y+7I5CUpdNy9g45LJigFdtNc8VZ5nKUxikkUigucRhzDifGkhrRykR9QFc2&#13;&#10;g49W5iKjYUGquzTI9lV1YPGTAeKLSTrNIXa6BtIvoST/Z/thmBSevXpYdPlHBMulFxagjAYzB0pX&#13;&#10;Z501LV2BiYZ9/SbeAAAA//8DAFBLAQItABQABgAIAAAAIQC75UiUBQEAAB4CAAATAAAAAAAAAAAA&#13;&#10;AAAAAAAAAABbQ29udGVudF9UeXBlc10ueG1sUEsBAi0AFAAGAAgAAAAhAK0wP/HBAAAAMgEAAAsA&#13;&#10;AAAAAAAAAAAAAAAANgEAAF9yZWxzLy5yZWxzUEsBAi0AFAAGAAgAAAAhAIBpg+GaCgAArq0AAB8A&#13;&#10;AAAAAAAAAAAAAAAAIAIAAGNsaXBib2FyZC9kcmF3aW5ncy9kcmF3aW5nMS54bWxQSwECLQAUAAYA&#13;&#10;CAAAACEA4VE3H88GAADmGwAAGgAAAAAAAAAAAAAAAAD3DAAAY2xpcGJvYXJkL3RoZW1lL3RoZW1l&#13;&#10;MS54bWxQSwECLQAUAAYACAAAACEAnGZGQbsAAAAkAQAAKgAAAAAAAAAAAAAAAAD+EwAAY2xpcGJv&#13;&#10;YXJkL2RyYXdpbmdzL19yZWxzL2RyYXdpbmcxLnhtbC5yZWxzUEsFBgAAAAAFAAUAZwEAAAEVAAAA&#13;&#10;AA==&#13;&#10;" o:spid="_x0000_i1028" style="width: 453.75pt; height: 329.25pt; visibility: visible" type="#_x0000_t75"><v:imagedata cropbottom="-123f" croptop="-1771f" o:title="" src="file:///C:DOCUME~1ARIANS~1LOCALS~1Tempmsohtmlclip1 1clip_image005.png"></v:imagedata><o:lock aspectratio="f" v:ext="edit"></o:lock></v:shape></span><span style="mso-ansi-language: en-us"><o:p></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Within Jserv, we can define different java environments, called zones. These zones are configured with different servlets or java archives (jar-files). Each zone is configured with its own configuration file. Within the zone the startup parameters (initargs) for the servlet are defined. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">On the other side of the picture, you see a group. All java processes within Jserv are grouped together. You must define at least one group. The default group is &lsquo;OACoreGroup&rsquo;. Within each group, we create one or more processes that will be mapped to our zones.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">This mapping is done by mounting the zones and the groups to different logical directories. In the picture, a mountpoint is created: /oa_servlets/. It refers to the group &lsquo;OACoreGroup&rsquo;, which holds 3 java processes. And it is mapped to zone &lsquo;root&rsquo;, which includes the servlet &lsquo;dummy&rsquo; with a set of startup parameters. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">When iAS receives a call to the virtual directory /oa_servlets/ it will be recognized as a Jserv mount point and the request will be forwarded to Jserv. In this example Jserv has 3 java processes in the group for this mount point. And they will be able to run all the servlets in the zone. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Sounds complicated? Take a look at the following configurations:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Jserv.conf:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">ApJServGroup OACoreGroup 3 1 /etc/oracle/iAS/Jserv/etc/jserv.properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">ApJServGroupMount /oa_servlets balance://OACoreGroup/root<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Jserv.properties:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">wrapper.bin=/opt/oracle/iAS/Apache/Apache/bin/java.sh<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">zones=root&lt;host&gt;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">root&lt;host&gt;.properties = /etc/oracle/iAS/Jserv/etc/zone.properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Zone.properties<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">servlet.Dummy.initArgs=message=I&#39;m a dummy servlet<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Within jserv.conf we define a group called OACoreGroup. This group is running 3 Java processes. And the definition of the group is in the jserv.properties file. The 1 indicates the weight for load-balancing with multiple groups.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Then we mount the zone &lsquo;root&rsquo; to the group &lsquo;OACoreGroup&rsquo;. This mount point is linked to the virtual directory /oa_servlets/. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The virtual directory is used for redirection to the JServ. When a request is made to the virtual directory Jserv will be called. The part of the URL after the virtual directory is the path to the servlet. This path will be searched for in the $CLASSPATH.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">When the java servlets need to connect to the database, they can build a connection using JDBC. The access information is stored in a *.dbc file in $FND_TOP/secure. The dbc-file is referred to in the parameters for the zone. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><font size="4"><font color="#4f81bd"><font face="Cambria">Modplsql<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Let&rsquo;s take a look at the modplsql module. This module is designed to run pl/sql procedures within the database. The connection is based on the wdbsvr.app file. This file contains the DAD (Database Access Descriptor), including the access data to the eBS database. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The module is also called through a virtual directory. For example http://&lt;host&gt;:&lt;port&gt;/pls/TESTDB/ dummy. /pls/ is the virtual directory that refers to modplsql. TESTDB is the name of the DAD and dummy is the name of a pl/sql procedure accessible for the db-user from the DAD.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri"><span style="mso-spacerun: yes">&nbsp;</span><o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">That concludes the 9i iAS module for now. <o:p></o:p></font></font></font></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><o:p><font color="#4f81bd" face="Cambria" size="4">&nbsp;</font></o:p></span></h2>
<h2 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><font size="4"><font color="#4f81bd"><font face="Cambria">Formsserver<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Let&rsquo;s take a look at the forms server. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Oracle forms can be set up in two ways, socket connection and servlet. The default is socket connection. With a socket connection, a separate forms server and dedicated forms processes are used. For the servlet connection, a java servlet is called within the iAS. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The formsserver itself is installed in the 8.0.9 ORACLE_HOME. Forms has a forms server, and one or more client processes. The forms server is started with f60svr. It will spawn a f60webmx process for every client session connecting.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">On the server side, forms are run in the forms client processes. On the client side, they are run in a java applet. When the client clicks a forms based function in the Personal Home Page, it calls an URL that refers to the forms client executable in the 8.0.6 ORACLE_HOME. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">This URL is taken from the profile option &lsquo;ICX: Forms Launcher&rsquo;, and the default value is like &lsquo;http://&lt;server&gt;:&lt;port&gt;/dev60cgi/f60cgi&rsquo;. The parameters referring to the function being clicked are added to this URL as parameters. (i.e. the name of the form to be started)<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">When this URL is called, the webserver will execute the executable f60cgi. This executable returns a HTML page to the client. This page is called the &lsquo;Base HTML&rsquo; for this forms server. (by default this is $OA_HTML/US/appsbase.htm)<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">This HTML page calls the J-initiator plugin (or the native JVM when configured). It also includes the parameters to connect to the forms server and the name of the form to start. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The J-initiator will start an applet on the client, which connects to the forms listener process. The forms listener process then assigns a dedicated forms client process. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">At this point the whole chain looks like this: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font size="3"><font color="#000000"><font face="Calibri"><span style="mso-ansi-language: en-us; mso-no-proof: yes"><v:shape id="Object_x0020_5" o:gfxdata="UEsDBBQABgAIAAAAIQC75UiUBQEAAB4CAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbKSRvU7DMBSF&#13;&#10;dyTewfKKEqcMCKEmHfgZgaE8wMW+SSwc27JvS/v23KTJgkoXFsu+P+c7Ol5vDoMTe0zZBl/LVVlJ&#13;&#10;gV4HY31Xy4/tS3EvRSbwBlzwWMsjZrlprq/W22PELHjb51r2RPFBqax7HCCXIaLnThvSAMTP1KkI&#13;&#10;+gs6VLdVdad08ISeCho1ZLN+whZ2jsTzgcsnJwldluLxNDiyagkxOquB2Knae/OLUsyEkjenmdzb&#13;&#10;mG/YhlRnCWPnb8C898bRJGtQvEOiVxjYhtLOxs8AySiT4JuDystlVV4WPeM6tK3VaILeDZxIOSsu&#13;&#10;ti/jidNGNZ3/J08yC1dNv9v8AAAA//8DAFBLAwQUAAYACAAAACEArTA/8cEAAAAyAQAACwAAAF9y&#13;&#10;ZWxzLy5yZWxzhI/NCsIwEITvgu8Q9m7TehCRpr2I4FX0AdZk2wbbJGTj39ubi6AgeJtl2G9m6vYx&#13;&#10;jeJGka13CqqiBEFOe2Ndr+B03C3WIDihMzh6RwqexNA281l9oBFTfuLBBhaZ4ljBkFLYSMl6oAm5&#13;&#10;8IFcdjofJ0z5jL0MqC/Yk1yW5UrGTwY0X0yxNwri3lQgjs+Qk/+zfddZTVuvrxO59CNCmoj3vCwj&#13;&#10;MfaUFOjRhrPHaN4Wv0VV5OYgm1p+LW1eAAAA//8DAFBLAwQUAAYACAAAACEAfvikpG4OAAD+3wAA&#13;&#10;HwAAAGNsaXBib2FyZC9kcmF3aW5ncy9kcmF3aW5nMS54bWzsXWtv28gV/V6g/4HgpwaFY/EtGass&#13;&#10;Em92u4WbGlHS9uuYoh4NRWpJRnb663vnxSFl0rTkx3iSCwM2ZQ6Hw6NLcs65j/np55tNau2Solzn&#13;&#10;2dR2Xo9sK8nifL7OllP786dfT8a2VVYkm5M0z5Kp/S0p7Z/f/PlPP5GzZUG2q3VsQQ9ZeUam9qqq&#13;&#10;tmenp2W8SjakfJ1vkwz2LfJiQyr4WCxP5wW5hp436ak7GoWnG7LO7Deqq19IRayvxfqIrtI8/pLM&#13;&#10;z0m2IyV0mcZnzf+IMabxw3smZ9nut2I7214WdOTxh91lYa3nUxuQy8gGILJPxQ7RDD6e7h21VB3c&#13;&#10;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&#13;&#10;Le1EV0Nkj5cokKb5RsYEpurWaRunaBLWex7c/ECg78ET3B15QGtoWkPT4AkuhGCxZG9xel72kFPg&#13;&#10;u6UUmGZOaeaYVk5p5ZR2ToHFWXZfklM60Kn0FQdcsekfD+W3GbCCy24/8qbqXM2t/wUAAP//AwBQ&#13;&#10;SwMEFAAGAAgAAAAhAJxmRkG7AAAAJAEAACoAAABjbGlwYm9hcmQvZHJhd2luZ3MvX3JlbHMvZHJh&#13;&#10;d2luZzEueG1sLnJlbHOEj80KwjAQhO+C7xD2btJ6EJEmvYjQq9QHCMk2LTY/JFHs2xvoRUHwsjCz&#13;&#10;7DezTfuyM3liTJN3HGpaAUGnvJ6c4XDrL7sjkJSl03L2DjksmKAV201zxVnmcpTGKSRSKC5xGHMO&#13;&#10;J8aSGtHKRH1AVzaDj1bmIqNhQaq7NMj2VXVg8ZMB4otJOs0hdroG0i+hJP9n+2GYFJ69elh0+UcE&#13;&#10;y6UXFqCMBjMHSldnnTUtXYGJhn39Jt4AAAD//wMAUEsBAi0AFAAGAAgAAAAhALvlSJQFAQAAHgIA&#13;&#10;ABMAAAAAAAAAAAAAAAAAAAAAAFtDb250ZW50X1R5cGVzXS54bWxQSwECLQAUAAYACAAAACEArTA/&#13;&#10;8cEAAAAyAQAACwAAAAAAAAAAAAAAAAA2AQAAX3JlbHMvLnJlbHNQSwECLQAUAAYACAAAACEAfvik&#13;&#10;pG4OAAD+3wAAHwAAAAAAAAAAAAAAAAAgAgAAY2xpcGJvYXJkL2RyYXdpbmdzL2RyYXdpbmcxLnht&#13;&#10;bFBLAQItABQABgAIAAAAIQDhUTcfzwYAAOYbAAAaAAAAAAAAAAAAAAAAAMsQAABjbGlwYm9hcmQv&#13;&#10;dGhlbWUvdGhlbWUxLnhtbFBLAQItABQABgAIAAAAIQCcZkZBuwAAACQBAAAqAAAAAAAAAAAAAAAA&#13;&#10;ANIXAABjbGlwYm9hcmQvZHJhd2luZ3MvX3JlbHMvZHJhd2luZzEueG1sLnJlbHNQSwUGAAAAAAUA&#13;&#10;BQBnAQAA1RgAAAAA&#13;&#10;" o:spid="_x0000_i1027" style="width: 453.75pt; height: 309.75pt; visibility: visible" type="#_x0000_t75"><v:imagedata cropbottom="-142f" croptop="-1991f" o:title="" src="file:///C:DOCUME~1ARIANS~1LOCALS~1Tempmsohtmlclip1 1clip_image007.png"></v:imagedata><o:lock aspectratio="f" v:ext="edit"></o:lock></v:shape></span><span style="mso-ansi-language: en-us"><o:p></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The configuration for the forms server is in the appsweb.cfg file in ($OA_HTML/bin). This file contains the basic coloring scheme for the forms server, the forms settings and the referral information to the J-Initiator plugin. The plugin on the client side is called through its class-id, which is also set in the appsweb.cfg.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><font size="4"><font color="#4f81bd"><font face="Cambria">Concurrent Managers<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The last part of the application tier is the concurrent processing part. The concurrent managers are used to execute background and batch processes.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Different executables including host-command files, pl/sql procedures, Oracle Reports, SQL*Loader control files and Binary executables can be defined to be run as concurrent programs. Parameters are also optionally defined with the concurrent programs. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The executable files are defined separate from the concurrent programs. So an executable can be run as different programs with different parameters.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The programs are executed through &lsquo;Requests&rsquo;. A request is started as a concurrent program and the values of its parameters. It can be scheduled to start at a specific time, or in a specific schedule. The output of the program can be sent to a printer. It is also available through the application. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">This picture shows the relation between programs, requests and managers. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font size="3"><font color="#000000"><font face="Calibri"><span style="mso-ansi-language: en-us; mso-no-proof: yes"><v:shape id="Object_x0020_6" o:gfxdata="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&#13;&#10;cG5nUEsFBgAAAAAHAAcA9wEAAGZAAAAAAA==&#13;&#10;" o:spid="_x0000_i1026" style="width: 453.75pt; height: 297pt; visibility: visible" type="#_x0000_t75"><v:imagedata cropbottom="-524f" croptop="-111f" o:title="" src="file:///C:DOCUME~1ARIANS~1LOCALS~1Tempmsohtmlclip1 1clip_image009.png"></v:imagedata><o:lock aspectratio="f" v:ext="edit"></o:lock></v:shape></span><span style="mso-ansi-language: en-us"><o:p></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><font size="4"><font color="#4f81bd"><font face="Cambria">The managers<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">We&rsquo;ll take a closer look at the concurrent programs later. Let&rsquo;s first look at the concurrent managers. There are concurrent managers and transaction managers. Also a number of control managers are defined. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">We&rsquo;ll start with the &lsquo;Internal Manager&rsquo;. This is the first manager to be started. Its purpose is to control the stopping and (re-)starting of the other managers. When Generic Service Management is enabled (default as of 11.5.7), it delegates to the &lsquo;Service Managers&rsquo;. On every node where concurrent processing is enabled, a &lsquo;Service Manager&rsquo; is started. However, only one Internal Manager is running at any time.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The other concurrent managers are defined with a work shift that controls how many processes a concurrent manager should have at certain times. The work shifts consist of a time-range and a number of processes. The Service Managers (or Internal Manager) will start and stop processes according to these work shifts. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Another part of the setup of concurrent managers is their specialization rules. The specialization rules indicate which programs are valid for a concurrent manager, or are excluded for that manager. They work on an include/exclude principle. When programs are included for that manager, the manager can only run those programs. When programs are excluded, the manager can run any program except the excluded ones.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">When a request (to run a program) is submitted from eBS, it will be placed in FND_CONCURRENT_REQUESTS with a status_code &lsquo;I&rsquo; (The eBS forms have fewer statuses than the codes in the table). The manager processes will query this table for requests that they are eligible to run. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Once a manager process finds a request with status_code &lsquo;I&rsquo;, which it is eligible to run then it will put the request on its own queue. It will then run the executable with the defined parameters. The logfile and outputfile are written to the filesystem in $APPLCSF/$APPLLOG resp. $APPLCSF/$APPLOUT. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">There are some special cases that need to be discussed. The first is the incompatibility. Concurrent Programs can be made incompatible with each other. That means that they cannot run at the same time. Once a program is started that is defined as incompatible with another, it will be automatically put on the queue for the &lsquo;Conflict Resolution Manager&rsquo;. This special manager will check if any incompatible program is running or &lsquo;Pending&rsquo; with code &lsquo;I&rsquo;. If so, it will hold the request on its own queue. If no incompatible program is running or &lsquo;Pending&rsquo;, then it will set the status of the request to &lsquo;Pending&rsquo;. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Another special case are the &lsquo;Transaction Managers&rsquo;. They are started and stopped the same way as the other concurrent managers. But they do not use the request queue. Transaction managers are called online from the eBS forms. And they execute a limited number of programs. These programs defined within their executables. They are called through the &lsquo;FND_TRANSACTION.SYNCHRONOUS&rsquo; procedure, which uses the &lsquo;DBMS_PIPE&rsquo; package.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><font size="4"><font color="#4f81bd"><font face="Cambria">The programs<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">It&rsquo;s time to look at the concurrent programs. As mentioned before, a concurrent program is an instantiation of an executable. The executable is defined with a short name, an application (module), a filename and a method. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The short name will uniquely identify the executable. The other data is needed to determine what should be run for this executable. If the executable is an OS-based program, the application will be used to derive the directory on the file system where the executable is found. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">When the executable is defined as PL/SQL, the filename will contain the procedure that needs to be run.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The concurrent program is defined as the executable with an (optional) set of parameters. It also has some properties for the printing of the output (print-style, pre-defined printer, size of the output). <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Depending on the type of executable that needs to be run, the parameters will be sent to the executable ordered or named. For PL/SQL and host files, the parameters are ordered. And the order in which they are defined in the form defines how they will be sent to the executable. For reports the parameters are named, which means they are sent as &lt;parameter&gt;=&lt;value&gt;, &hellip;.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">After the request has finished, the request table &lsquo;FND_CONCURRENT_REQUESTS&rsquo; will be updated with the status information and a reference to the log- and output file. During the execution of the request, a status_code and phase_code are updated. The exact values of these fields are described in one of the next articles. That will go deeper into concurrent processing. <o:p></o:p></font></font></font></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span style="mso-ansi-language: en-us"><font size="4"><font color="#4f81bd"><font face="Cambria">The output<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The log- and output file from the requests are written to the directories $APPLCSF/$APPLLOG and $APPLCSF/$APPLOUT. But they of course also need to be made available to the user. This is done through the &lsquo;Applications Report Review Agent&rsquo;.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">There is quite a lot of setup that can be done for the whole process. But within the scope of this article, we&rsquo;ll only look at the basic architecture. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">From the eBS form the log and output file are available from 2 buttons. These buttons call the web server for &lsquo;FNDWRR.exe&rsquo; (.exe on both Windows and Unix). <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">FNDWRR.exe is a cgi-executable that will call the &lsquo;FNDFS listener&rsquo;. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">This is an 8.0.6 TNS-listener in the eBS ORACLE_HOME on the eBS application tier. One of the less known features of the TNS-listeners is that they can do more than create database connections. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">In the listener.ora, you can define a program to be called when a connection is made on a certain tns-entry. That feature is used for the FNDFS listener. When it is called, it will redirect traffic to the &lsquo;FNDFS&rsquo; (FND File System) executable. This executable will read the requested file from the file-system and send it to FNDWRR.exe. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Again, we have a schema to show the whole flow: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><font size="3"><font color="#000000"><font face="Calibri"><span style="mso-ansi-language: en-us; mso-no-proof: yes"><v:shape id="Object_x0020_7" o:gfxdata="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&#13;&#10;BgAIAAAAIQCtMD/xwQAAADIBAAALAAAAAAAAAAAAAAAAAEUBAABfcmVscy8ucmVsc1BLAQItABQA&#13;&#10;BgAIAAAAIQC6T0wc6wwAAKGDAAAfAAAAAAAAAAAAAAAAAC8CAABjbGlwYm9hcmQvZHJhd2luZ3Mv&#13;&#10;ZHJhd2luZzEueG1sUEsBAi0AFAAGAAgAAAAhAOqxsCXaAAAAMgIAACoAAAAAAAAAAAAAAAAAVw8A&#13;&#10;AGNsaXBib2FyZC9kcmF3aW5ncy9fcmVscy9kcmF3aW5nMS54bWwucmVsc1BLAQItABQABgAIAAAA&#13;&#10;IQDhUTcfzwYAAOYbAAAaAAAAAAAAAAAAAAAAAHkQAABjbGlwYm9hcmQvdGhlbWUvdGhlbWUxLnht&#13;&#10;bFBLAQItAAoAAAAAAAAAIQAMnJlOGA8AABgPAAAaAAAAAAAAAAAAAAAAAIAXAABjbGlwYm9hcmQv&#13;&#10;bWVkaWEvaW1hZ2UxLnBuZ1BLAQItAAoAAAAAAAAAIQC2CpwwcQcAAHEHAAAaAAAAAAAAAAAAAAAA&#13;&#10;ANAmAABjbGlwYm9hcmQvbWVkaWEvaW1hZ2UyLnBuZ1BLBQYAAAAABwAHAPcBAAB5LgAAAAA=&#13;&#10;" o:spid="_x0000_i1025" style="width: 453.75pt; height: 273pt; visibility: visible" type="#_x0000_t75"><v:imagedata cropbottom="-145f" croptop="-121f" o:title="" src="file:///C:DOCUME~1ARIANS~1LOCALS~1Tempmsohtmlclip1 1clip_image011.png"></v:imagedata><o:lock aspectratio="f" v:ext="edit"></o:lock></v:shape></span><span style="mso-ansi-language: en-us"><o:p></o:p></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">This complex retrieval is of course needed because the concurrent processing tier can be separate from the forms and web-tiers.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stijf.com/wordpress/2010/04/oracle-ebs-11i-infrastructure/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Oracle Advanced Queues (AQ)</title>
		<link>http://www.stijf.com/wordpress/2010/03/oracle-advanced-queues-aq/</link>
		<comments>http://www.stijf.com/wordpress/2010/03/oracle-advanced-queues-aq/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 21:28:08 +0000</pubDate>
		<dc:creator>Arian Stijf</dc:creator>
				<category><![CDATA[Internals]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[dbms_aq]]></category>
		<category><![CDATA[dbms_aqadm]]></category>
		<category><![CDATA[dequeue]]></category>
		<category><![CDATA[eBS]]></category>
		<category><![CDATA[enqueue]]></category>
		<category><![CDATA[IOT]]></category>
		<category><![CDATA[payload]]></category>
		<category><![CDATA[query]]></category>
		<category><![CDATA[queue]]></category>
		<category><![CDATA[queue table]]></category>

		<guid isPermaLink="false">http://www.stijf.com/wordpress/?p=392</guid>
		<description><![CDATA[Oracle Advanced Queuing (AQ) &#160; A customer asked me to do a presentation about AQ (Advanced Queuing). This article is a rewrite of that presentation. We&#8217;ll be getting some hands-on experience with AQ, and then some tips on the issues that might occur. As always, your comments to this article are more than welcome. If [...]]]></description>
			<content:encoded><![CDATA[<h2 style="margin: 10pt 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="4"><font color="#4f81bd"><font face="Cambria">Oracle Advanced Queuing (AQ)<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">A customer asked me to do a presentation about AQ (Advanced Queuing). This article is a rewrite of that presentation. We&rsquo;ll be getting some hands-on experience with AQ, and then some tips on the issues that might occur. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">As always, your comments to this article are more than welcome. If you enjoy this article, find it useful or maybe not at all, please let me know by leaving a comment on the site.</font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri"><o:p>The article is also available in PDF format from <a href="http://www.stijf.com/wordpress/PDF/Oracle queues.pdf">here.</a></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="4"><font color="#4f81bd"><font face="Cambria">Queuing: I don&rsquo;t want to queue. <o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The title might be true in many cases, but there are also situations where a queue is very convenient. For example in the case of batch processing where a batch process handles multiple incoming messages from an online process. Or when 2 processes need inter-process communication, but still need to function independently of each other. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">In eBS we use queues for the workflow system. (Deferred items, notifications for the workflow mailer and the Business Event System). Some more queues are found for concurrent processing and SFM. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">So whether you like it or not, you&rsquo;ll have to queue. The trick is to manage these queues to get optimal performance for your system. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="4"><font color="#4f81bd"><font face="Cambria">(Advanced) Queue design<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Before we can start building queues, there are some things to consider. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">AQ supports both point-to-point queues and publish-subscribe-queues (also called multi-consumer queues). <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Point-to-point queues are emptied by only one specific process. One or more processes can enqueue messages on the queue, but only one process can dequeue them. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">In contrast, a publish-subscribe queue can have many processes reading the messages in the queue. Either the messages are broadcasted, or the receivers have to subscribe to a certain kind of messages. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Of course the publish-subscribe queue has some very interesting properties. But we&rsquo;ll start our item with the point-to-point queue. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">So you&rsquo;ll first have to decide who the senders and receivers of the queue data will be. In this article, we start with using a point-to-point queue. After that we start using multi-consumer queues.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Another thing to consider is the payload of the message. Of course, the messages will need some content to give it a meaning to the receiver. This content is called the payload. And you can either use a custom type (including XML), or a raw type. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">During this article, we&rsquo;ll see some more features of AQ. But when we decide on the type of queue and the payload type, we can build our own queues. All queues are built on queue-tables. These tables hold the data in the queue. On top of these tables, the actual queue and some management views are built. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">To build a queue-table, we use the dbms_aqadm package:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">dbms_aqadm.create_queue_table(queue_table =&gt;&rsquo;&lt;table_name&gt;&rsquo;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>,queue_payload_type =&gt; [&lsquo;RAW&rsquo;|&lt;custom_type&gt;]);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;</span><o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">This creates the queue table including a LOB segment for the payload, some indexes, and an &lsquo;Error queue&rsquo;:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">dbms_aqadm.create_queue_table(queue_table=&gt;&rsquo;xxx_test&rsquo; <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>,queue_payload_type=&gt;&rsquo;RAW&rsquo;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Select object_name,object_type from dba_objects where created&gt;sysdate-1/24;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 6pt; mso-ansi-language: en-us"><font color="#000000">OBJECT_NAME<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>OBJECT_TYPE<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 6pt; mso-ansi-language: en-us"><font color="#000000">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&#8212;&#8212;&#8212;&#8211;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 6pt; mso-ansi-language: en-us"><font color="#000000">SYS_C0011768<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>INDEX<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 6pt; mso-ansi-language: en-us"><font color="#000000">XXX_TEST<span style="mso-tab-count: 1"> </span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>TABLE<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 6pt; mso-ansi-language: en-us"><font color="#000000">SYS_LOB0000073754C00029$$<span style="mso-tab-count: 1">&nbsp;&nbsp; </span>LOB<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 6pt; mso-ansi-language: en-us"><font color="#000000">SYS_LOB0000073754C00028$$<span style="mso-tab-count: 1">&nbsp;&nbsp; </span>LOB<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 6pt; mso-ansi-language: en-us"><font color="#000000">AQ$_XXX_TEST_T<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>INDEX<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 6pt; mso-ansi-language: en-us"><font color="#000000">AQ$_XXX_TEST_I<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>INDEX<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 6pt; mso-ansi-language: en-us"><font color="#000000">AQ$_XXX_TEST_E<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>QUEUE<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 6pt; mso-ansi-language: en-us"><font color="#000000">AQ$_XXX_TEST_F<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>VIEW<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'courier new'; font-size: 6pt; mso-ansi-language: en-us"><font color="#000000">AQ$XXX_TEST<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>VIEW<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">This created the base-table for a point-to-point queue. The table is a regular heap-oriented table. And you are free to create extra indexes on it, if you feel the urge. The necessary indexes have been created already. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The queue that is created now is the default error queue. Messages that failed dequeuing will be set on this queue. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Now it&rsquo;s time to create the actual queue. The queue-tables are the infrastructure for storing the messages and related information. The queue can now be created to control the queuing and dequeuing of messages. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri"><span style="mso-spacerun: yes">&nbsp;</span><o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">For both point-to-point as publish-subscriber queues, the command is: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; color: black; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">dbms_aqadm.create_queue (queue_table =&gt;&rsquo;&lt;table_name&gt;&rsquo;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp; </span>queue_name =&gt; &lsquo;&lt;queue_name&gt;&rsquo;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; color: black; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">So for us we run: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">dbms_aqadm.create_queue (queue_name =&gt; &#39;xxx_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 108pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span>,queue_table =&gt; &#39;xxx_mc_test&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">This creates an object of type QUEUE. This is the object that will control the contents of the underlying tables / IOT&rsquo;s. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Before we can start using our queues, we also have to &lsquo;start&rsquo; them. On starting, we indicate whether the queue is available for queuing, dequeuing or both: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;</span>dbms_aqadm.start_queue(queue_name=&gt;&rsquo;xxx_test_q&rsquo;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 72pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;</span>,enqueue=&gt;TRUE<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 72pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;</span>,dequeue=&gt;TRUE);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Our queue is now enabled for both queueing and dequeuing. Let&rsquo;s first verify if things are working correctly. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">To enqueue (or dequeue) a message, we use the dbms_aq package. It has an enqueue and dequeue procedure. Both with their own parameters. The parameters include en-/dequeue options, message properties, a message_id and of course the message itself: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_enq_options Dbms_aq.Enqueue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload:=Utl_raw.Cast_to_raw(&#39;Hello world!&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aq.Enqueue(Queue_name=&gt;&#39;xxx_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Enqueue_options=&gt;V_enq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_output.Put_line(rawtohex(V_msgid));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">end;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">This enqueues a &lsquo;Hello world!&rsquo; message, and returns the message id. If everything works correctly, you&rsquo;ll see the msgid as a hexadecimal string. (Don&rsquo;t forget to set serveroutput on).<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">We created 2 extra parameters: v_enq_options with the options used to enqueue this message. And v_msg_properties to set additional information about the message. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">V_enq_options is of type &lsquo;dbms_aq.enqueue_options_t&rsquo;. This is a record of:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Visibility<span style="mso-tab-count: 1">&nbsp;&nbsp; </span>BINARY_INTEGER<span style="mso-spacerun: yes">&nbsp; </span>&#8211;Options are: dbms_aq.on_commit and dbms_aq.immediate. This indicates whether the enqueue is part of the current transaction, or done autonomously. <o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Relative_msgid<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>RAW(16)<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&#8211;If the message needs to be enqueued at a specific position, it will be relative to this msgid.<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Sequence_deviation BINARY_INTEGER &ndash;-Options are: DBMS_AQ.BEFORE, DBMS_AQ.TOP or NULL (default). If before then the message is before the relative_msgid. If top, the message will be the first to be dequeued.<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">V_msg_properties is of type &lsquo;dbms_aq.message_properties_t&rsquo;. This is a record of:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">priority<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>BINARY_INTEGER <span style="mso-spacerun: yes">&nbsp;</span>&#8211; Any integer, to set the priority. Smaller is higher priority. The default is 1.<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">delay<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>BINARY_INTEGER <span style="mso-spacerun: yes">&nbsp;</span>&#8211; If the message needs to be delayed before it can be dequeued, set the time in seconds here. The default is dbms_aq.no_delay.<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">expiration<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>BINARY_INTEGER <span style="mso-spacerun: yes">&nbsp;</span>&#8211; For messages that need to expire after a certain time, set the expiration time in seconds. (Offset from the delay). The default is dbms_aq.never.<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">correlation<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>VARCHAR2(128)<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>&#8211; A free text field that can be used to identify groups of messages. <o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">attempts<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>BINARY_INTEGER<span style="mso-spacerun: yes">&nbsp; </span>&#8211; Number of failed attempts to dequeue, before the message will be failed and marked as expired.<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">recipient_list<span style="mso-spacerun: yes">&nbsp; </span>DBMS_AQ.AQ$_RECIPIENT_LIST_T &ndash;- Only valid for multi-consumer queues. Sets the designated recipients.<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">exception_queue VARCHAR2(51) <span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span>&#8211; The exception queue to use, when it is not the default.<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">enqueue_time<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>DATE<span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp; </span>&#8211; Set automatically during enqueue <o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">state<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>BINARY_INTEGER<span style="mso-spacerun: yes">&nbsp; </span>&#8211; Automatically maintained by AQ, to indicate the status of the message.<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Let&rsquo;s see if the dequeue also works. For this the procedure dequeue is used, with similar parameters. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_deq_options Dbms_aq.dequeue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aq.dequeue(Queue_name=&gt;&#39;xxx_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>,dequeue_options=&gt;V_deq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_output.Put_line(utl_raw.cast_to_varchar2(V_payload));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">This time, our message should be displayed. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">For the dequeue, we used v_deq_options of type &lsquo;dbms_aq.dequeue_options_t&rsquo;. This is a record of:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">consumer_name<span style="mso-spacerun: yes">&nbsp; </span>VARCHAR2(30) <span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&#8211; Indicates the consumer for multi-consumer queues.<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">dequeue_mode<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>BINARY_INTEGER &ndash;- How to dequeue the messages. Either leave it on the queue, or remove it. Either dbms_aq.browse and dbms_aq.remove (default).<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">navigation<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>BINARY_INTEGER &ndash;- Indicate where to start dequeuing. Dbms_aq.next_message (default), to continue from the previous dequeue. Dbms_aq.first_message to start at the top of the queue. Dbms_aq.next_transaction to skip the rest of this message group.<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">visibility<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>BINARY_INTEGER &ndash;- same as dbms_aq.enqueue_options_t.visibility.<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">wait<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>BINARY_INTEGER &ndash;- The time (in seconds) the package should wait if no message is available. Default is dbms_aq.forever.<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">msgid<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>RAW(16) <span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>&#8211; When specified, only the message with this msgid will be dequeued.<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; text-indent: -36pt; margin: 0cm 0cm 0pt 36pt; mso-layout-grid-align: none"><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">correlation<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>VARCHAR2(128) <span style="mso-spacerun: yes">&nbsp;</span>&#8211; Only messages with this correlation will be dequeued (may include wildcards).<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Note how message_properties and payload are now out-parameters. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">This is probably the simplest queue possible. We enqueued and dequeued a raw message. We didn&rsquo;t specify the visibility. So your session still needs to commit these actions.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Now let&rsquo;s enqueue our message again, and see how it works behind the curtain.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_enq_options Dbms_aq.Enqueue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload:=Utl_raw.Cast_to_raw(&#39;Hello world!&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aq.Enqueue(Queue_name=&gt;&#39;xxx_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Enqueue_options=&gt;V_enq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_output.Put_line(&#39;Msg_id: &#39;||rawtohex(V_msgid));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">end;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Msg_id: 499CE4809F2641E1BFBC8AFBC8DB5AFA<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">The queue table is an ordinary heap-table, so we can query it.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">select q_name, rawtohex(msgid) msg_id, priority, state, enq_time, enq_uid<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">from <span style="mso-spacerun: yes">&nbsp;&nbsp;</span>xxx_test;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 6pt; mso-ansi-language: en-us"><font color="#000000">q_name<span style="mso-tab-count: 1">&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp; </span>msg_id<span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span>priority state enq_time<span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>enq_uid<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 6pt; mso-ansi-language: en-us"><font color="#000000">XXX_TEST_Q<span style="mso-spacerun: yes">&nbsp; </span>499CE4809F2641E1BFBC8AFBC8DB5AFA<span style="mso-tab-count: 1">&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp; </span>1<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>0 21-03-10 17:24:01,876000000<span style="mso-tab-count: 1"> </span>SYSTEM<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 6pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">We see our msgid again. A priority flag. A state flag, the time of enqueueing the message, and the user that enqueued the message. The message is also in the table, but since it is a blob, we won&rsquo;t bother selecting from it yet. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">There are more columns in the table, that control the order and by who the messages are dequeued. Most of them are still null, so we will see them when needed. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">A useful alternative to the table is to query the queue-view aq$&lt;table_name&gt;. This will show the translated values of the state. (0 = READY). And especially when using multi-consumer queues, it will use a join to select a more complete picture of the queue.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">When we dequeue the message, it will disappear from the queue. (And be deleted from the queue table). However, this can be controlled by the retention parameter of the queue.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Let&rsquo;s set this parameter, so we can check the data after the dequeue.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">We set the retention time to 240 (seconds): <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">DBMS_AQADM.ALTER_QUEUE(queue_name =&gt;&#39;xxx_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 72pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,retention_time =&gt; 240);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">end;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Now when we dequeue the message, it will remain in the queue:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_deq_options Dbms_aq.dequeue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aq.dequeue(Queue_name=&gt;&#39;xxx_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>,dequeue_options=&gt;V_deq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_output.Put_line(utl_raw.cast_to_varchar2(V_payload));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">select <span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>queue<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>rawtohex(msg_id)msg_id<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>msg_priority<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>msg_state<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>enq_timestamp<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>enq_user_id<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>deq_timestamp<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>deq_user_id<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">from <span style="mso-tab-count: 1">&nbsp; </span>aq$xxx_test<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 6pt; mso-ansi-language: en-us"><font color="#000000">QUEU<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>MSG_ID<span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>MSG_PRIO MSG_STATE ENQ_TIMESTAMP<span style="mso-tab-count: 1">&nbsp; </span>ENQ_USER DEQ_TIMESTAMP<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>DEQ_USER_ID<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 6pt; mso-ansi-language: en-us"><font color="#000000">XXX_TEST_Q AEC2CD2E34514363B6739969E8E8D353<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>1 PROCESSED 19-03-10 18:31:40 SYSTEM<span style="mso-tab-count: 1"> </span>19-03-10 21:26:45 SYSTEM<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Now the message has been set to state &lsquo;PROCESSED&rsquo;, and some dequeue information has been added. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">It&rsquo;s time to start navigating queues when there are multiple messages in the queue. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Messages are by default dequeued in the order in which they are enqueued. On creation of the queue table, you can set other dequeue orders. But it is also possible to dequeue messages in a different order by navigating the queues, or using filter-criteria. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">To show the dequeueing order we enqueue 10 different messages. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_enq_options Dbms_aq.Enqueue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_enq_options.visibility := dbms_aq.immediate;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">for i in 1..10 loop<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>V_payload:=Utl_raw.Cast_to_raw(&#39;This is the &#39;||to_char(to_date(i,&#39;J&#39;),&#39;jspth&#39;)||&#39; message&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>Dbms_aq.Enqueue(Queue_name=&gt;&#39;xxx_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 72pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>,Enqueue_options=&gt;V_enq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>Dbms_output.Put_line(rawtohex(V_msgid));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">end loop;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">end;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">This enqueues the text &lsquo;This is the first message&rsquo; till &lsquo;This is the tenth message&rsquo;. On dequeuing, the messages come out in the same order: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_deq_options Dbms_aq.dequeue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">for i in 1..10 loop<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>Dbms_aq.dequeue(Queue_name=&gt;&#39;xxx_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span>,dequeue_options=&gt;V_deq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>Dbms_output.Put_line(utl_raw.cast_to_varchar2(V_payload));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">end loop;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">This is the first message<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">This is the second message<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">&hellip;&hellip;&hellip;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">This is the tenth message<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">When we created the queue table, we choose the default sort order. This is by enqueue_time. We can also build a queue that uses priority dequeuing. First we create a queue:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">dbms_aqadm.create_queue_table(queue_table=&gt;&#39;xxx_test_prio&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>,<b style="mso-bidi-font-weight: normal">sort_list =&gt; &#39;PRIORITY,ENQ_TIME&#39;<o:p></o:p></b></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span>,queue_payload_type=&gt;&#39;RAW&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">dbms_aqadm.create_queue(queue_name=&gt;&#39;xxx_test_prio_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>,queue_table=&gt;&#39;xxx_test_prio&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">dbms_aqadm.start_queue(queue_name=&gt;&#39;xxx_test_prio_q&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">end;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">We indicated a sort_list now. The options are &lsquo;ENQ_TIME&rsquo; (default), &lsquo;ENQ_TIME,PRIORITY&rsquo;,&lsquo;PRIORITY&rsquo;,&rsquo;PRIORITY,ENQ_TIME&lsquo;. Now we enqueue some messages with reversed priorities:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_enq_options Dbms_aq.Enqueue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_enq_options.visibility := dbms_aq.immediate;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">for i in 1..10 loop<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>V_payload:=Utl_raw.Cast_to_raw(&#39;This is the &#39;||to_char(to_date(i,&#39;J&#39;),&#39;jspth&#39;)||&#39; message&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>v_msg_properties.priority:=11-i;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>Dbms_aq.Enqueue(Queue_name=&gt;&#39;xxx_test_prio_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 72pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>,Enqueue_options=&gt;V_enq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>Dbms_output.Put_line(rawtohex(V_msgid));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">end loop;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">end;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">And we dequeue them again:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; color: #0000f0; font-size: 10pt; mso-ansi-language: en-us"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_deq_options Dbms_aq.dequeue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">for i in 1..10 loop<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>Dbms_aq.dequeue(Queue_name=&gt;&#39;xxx_test_prio_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span><span style="mso-spacerun: yes">&nbsp;</span>,dequeue_options=&gt;V_deq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span>,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>Dbms_output.Put_line(utl_raw.cast_to_varchar2(V_payload));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">end loop;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">This is the tenth message<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">This is the ninth message<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">&hellip;&hellip;&hellip;&hellip;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">This is the second message<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">This is the first message<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang="EN-US" style="font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><font color="#000000">Now it&rsquo;s time to look at queueing navigation. It is possible to dequeue specific messages from the queue. You can select messages with a specific msg_id, correlation or recipient_list (for mc-queueus).<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang="EN-US" style="font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><font color="#000000">We&rsquo;ll first search for a specific correlation and then a message_id. We enqueue ten messages, with different correlations:<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_enq_options Dbms_aq.Enqueue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_enq_options.visibility := dbms_aq.immediate;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">for i in 1..10 loop<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>V_payload:=Utl_raw.Cast_to_raw(&#39;This is the &#39;||to_char(to_date(i,&#39;J&#39;),&#39;jspth&#39;)||&#39; message&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>v_msg_properties.correlation:=to_char(&#39;Corr&#39;||i);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>Dbms_aq.Enqueue(Queue_name=&gt;&#39;xxx_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>,Enqueue_options=&gt;V_enq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;</span>,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>dbms_output.Put_line(&#39;Msg_id: &#39;||rawtohex(V_msgid)||&#39; Correlation: Corr&#39;||i);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">end loop;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">end;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Msg_id: E8BE83A2A2A04F1EA74863B4A7C78DAF Correlation: Corr1<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Msg_id: 7159B80BC3194C7AAA6910AB10E753C5 Correlation: Corr2<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Msg_id: 4AF3693CF7EE4994B0F78830371437B9 Correlation: Corr3<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Msg_id: 44DBC0CB09C94BB98DF2D7E48971849C Correlation: Corr4<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Msg_id: 98F3E119041E47F5BF46604E014120BF Correlation: Corr5<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Msg_id: B71B7F097A9E4EDBA696958326BF6300 Correlation: Corr6<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Msg_id: C4F5050B02904EEEAD2842405A0BDE2A Correlation: Corr7<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Msg_id: E4D923A4CB4B4DF2B64B8421A88FFC42 Correlation: Corr8<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Msg_id: BE199053188648AE8FA238A01A5C9CD1 Correlation: Corr9<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Msg_id: 8991E793D2DB41F5B3F9D00D283B6F6D Correlation: Corr10<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><font color="#000000">Now we can dequeue the 5th (correlation) and 8th (msg_id) message: <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_deq_options Dbms_aq.dequeue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_deq_options.correlation:=&#39;Corr5&#39;;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aq.dequeue(Queue_name=&gt;&#39;xxx_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,dequeue_options=&gt;V_deq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_output.Put_line(utl_raw.cast_to_varchar2(V_payload));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_deq_options.correlation:=NULL;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_deq_options.msgid:=&#39;E4D923A4CB4B4DF2B64B8421A88FFC42&#39;;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aq.dequeue(Queue_name=&gt;&#39;xxx_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,dequeue_options=&gt;V_deq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_output.Put_line(utl_raw.cast_to_varchar2(V_payload));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">This is the fifth message<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">This is the eighth message<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><font color="#000000">Note how we have to set the correlation back to NULL for the second dequeue. Otherwise we would be trying to dequeue a message with correlation &lsquo;Corr5&rsquo; and the specified msg_id. Since that message does not exist, our procedure will just wait for the message to appear. <o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><font color="#000000">By default when you dequeue from an empty queue, or try to dequeue a non-available message, the dequeue will wait indefinitely for a message to appear. You can control this behavior with the dequeue options. <o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_deq_options.wait := 10; &#8212; to wait 10 seconds</font><a name="74727"></a><font color="#000000">. Any number of 0 or higher is allowed. <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_deq_options.wait := dbms_aq.no_wait; &#8212; not waiting for the message.<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_deq_options.wait := dbms_aq.forever; &#8212; wait indefinitely<span style="mso-spacerun: yes">&nbsp; </span><o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><a name="74729"></a><font color="#000000"><span lang="EN-US" style="font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl">Do note that when the time-out is reached an </span><span lang="EN-US" style="font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us">&rsquo;ORA-25228: timeout in dequeue from &lt;queue&gt; while waiting for a message&rsquo;</span><span lang="EN-US" style="font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"> raised. So you will need to handle the exception.<o:p></o:p></span></font></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><span lang="EN-US" style="font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><font color="#000000">One more feature to consider is the browsing mode. So far we have seen the messages that we dequeued were removed from the queue (or at least got status &lsquo;Processed&rsquo;). By setting the dequeue options, we can first inspect messages before dequeuing them. Consider the following. We have 8 messages left in our queue: <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_deq_options Dbms_aq.dequeue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_deq_options_rm dbms_aq.dequeue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_deq_options.wait:=dbms_aq.no_wait;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_deq_options.dequeue_mode:=DBMS_AQ.BROWSE;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">for i in 1..10 loop<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>Dbms_aq.dequeue(Queue_name=&gt;&#39;xxx_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>,dequeue_options=&gt;V_deq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>Dbms_output.Put_line(utl_raw.cast_to_varchar2(V_payload));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>dbms_output.put_line(v_msg_properties.correlation);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>if v_msg_properties.correlation=&#39;Corr6&#39; then<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>v_deq_options.dequeue_mode:=DBMS_AQ.REMOVE;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>v_deq_options.msgid:=v_msgid;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Dbms_aq.dequeue(Queue_name=&gt;&#39;xxx_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>,dequeue_options=&gt;V_deq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Dbms_output.Put_line(utl_raw.cast_to_varchar2(V_payload));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>v_deq_options.dequeue_mode:=DBMS_AQ.BROWSE;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>v_deq_options.msgid:=NULL;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>end if;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>exception<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>when others then <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>null;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>end;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">end loop;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><font color="#000000">This removed only the 6<sup>th</sup> message from the queue, and left the others intact. <o:p></o:p></font></span></p>
<p class="MsoNormal" style="line-height: normal; margin: 0cm 0cm 0pt"><span lang="EN-US" style="font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><font color="#000000">There are more options to the queuing / dequeuing like retrying failed attempts (rollback after a dequeue is considered a failed attempt) and queuing with a delay or an expiration time. But I think the information so far will allow you to test these options on a need-by basis. <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><font size="4"><font color="#4f81bd"><font face="Cambria">Multi-consumer or publish-subscribe queues<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Both &lsquo;publish-subscribe&rsquo; and &lsquo;multi-consumer&rsquo; are used for these queues. I think &lsquo;multi-consumer&rsquo; is most often used informally. That will also be the one I will use in this article (even though &lsquo;publish-subscribe&rsquo; is more accurate).<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">We build multi-consumer queues with dbms_aqadm again. But on creating the queue-table, we say that it has to be a multi-consumer queue-table: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">dbms_aqadm.create_queue_table (queue_table=&gt;&rsquo;xxx_mc_test&rsquo; <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>,multiple_consumers=&gt;TRUE<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>,queue_payload_type=&gt;&rsquo;RAW&rsquo;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Now we see more objects being created. The most important ones are: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font color="#000000"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us">Xxx_mc_test</span><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"> <span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span>The queue table itself. <o:p></o:p></font></font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font color="#000000"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri" size="3">Table </font></span><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us">aq$_xxx_mc_test_s</span><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"> with information about the subscribers to the queue<o:p></o:p></font></font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font color="#000000"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri" size="3">Table </font></span><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us">aq$_xxx_mc_test_r</span><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"> with information about the rules for the subscriptions<o:p></o:p></font></font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font color="#000000"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri" size="3">IOT </font></span><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us">aq$_xxx_mc_test_h</span><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"> with historic information about dequeuing<o:p></o:p></font></font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font color="#000000"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri" size="3">IOT </font></span><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us">aq$_xxx_mc_test_i</span><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"> with dequeuing information<o:p></o:p></font></font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">As you can see, a lot more information is stored for multi-consumer queues. In part this information has to do with the subscription and subscriber mechanism. But there is also the need to keep a history of the dequeuing, to know when a message has been dequeued by all subscribers.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">We will be seeing the use of all the objects in a few minutes, when we start queuing and dequeuing messages. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font color="#000000"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri" size="3">When we try to enqueue messages on this queue now, we receive an </font></span><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us">ORA-24033:</span><span class="apple-converted-space"><span lang="EN-CA" style="font-family: 'arial', 'sans-serif'; color: black"><font size="3">&nbsp;</font></span></span><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us">no recipients for message</span><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri">. This means we need to set up subscribers first. If we enqueue without a recipient list, the message will be made available for all subscribers. <o:p></o:p></font></font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font color="#000000"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri" size="3">To add a subscriber, we use the dbms_aqadm package and a new object_type: </font></span><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us">sys.aq$_agent</span><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri">. <o:p></o:p></font></font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">This type is defined as an object of name , address and protocol. The last 2 are used in inter-system communication only.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">We can just call the following procedure:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'times new roman', 'serif'; font-size: 12pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;</span><o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">DECLARE<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_agent sys.aq$_agent;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">BEGIN<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>V_agent:= sys.aq$_agent(&#39;Agent1&#39;,NULL,NULL);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>DBMS_AQADM.ADD_SUBSCRIBER(queue_name=&gt;&#39;xxx_mc_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 108pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>,subscriber=&gt;v_agent);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">END;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font color="#000000"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri" size="3">We can see the subscribers from the view </font></span><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us">aq$xxx_mc_test_s</span><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri" size="3"> (or the underlying table: </font></span><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us">aq$_xxx_mc_test_s</span><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri">):<o:p></o:p></font></font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">select * from aq$xxx_mc_test_s;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">QUEUE<span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>NAME<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>ADDRESS<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>PROTOCOL TRANSFORMATION<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212; &#8212;&#8212;-<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8211;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">XXX_MC_TEST_Q<span style="mso-tab-count: 1"> </span>AGENT1<span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Now let&rsquo;s enqueue a message: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_enq_options Dbms_aq.enqueue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_payload := utl_raw.cast_to_raw(&#39;Hello world, again!&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aq.enqueue(Queue_name=&gt;&#39;xxx_mc_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp; </span>,enqueue_options=&gt;V_enq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_output.Put_line(utl_raw.cast_to_varchar2(V_msgid));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Now when we look at the queue-view, we can see that a subscriber has been selected: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">select queue,rawtohex(msg_id) msg_id,msg_state,consumer_name from aq$xxx_mc_test;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">QUEUE<span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MSG_ID<span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>MSG_STATE CONSUMER_NAME<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;-<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">XXX_MC_TEST_Q<span style="mso-tab-count: 1"> </span>BC4C48AC659946428F38F8BC3AB02184 READY<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>AGENT1<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Now to dequeue the message, we also need to set the consumer_name in the dequeue_options. When enqueuing a message without a subscriber_name, it can be dequeued by all subscribers. But on dequeueing, the subscriber needs to identify itself.<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_deq_options Dbms_aq.dequeue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><b style="mso-bidi-font-weight: normal"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_deq_options.consumer_name:=&#39;Agent1&#39;;<o:p></o:p></font></span></b></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aq.dequeue(Queue_name=&gt;&#39;xxx_mc_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,dequeue_options=&gt;V_deq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_output.Put_line(utl_raw.cast_to_varchar2(V_payload));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Hello world, again!<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Now when we check the queue contents, we see that the message is still there. Even after a commit, the message has been retained. Maybe you won&rsquo;t see it on your system immediately. But then run: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aqadm.stop_time_manager;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">And enqueue/dequeue a message again. Now when you look in xxx_mc_test or aq$xxx_mc_test, you will see the message being retained (with status &lsquo;PROCESSED&rsquo;). When you start the time_manager again, the message will disappear after some time. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">The reason for this, is that Oracle enhances concurrency by using a separate table (IOT) for the dequeuing. When we enqueue a message again: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_enq_options Dbms_aq.enqueue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_payload := utl_raw.cast_to_raw(&#39;Hello world&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aq.enqueue(Queue_name=&gt;&#39;xxx_mc_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,enqueue_options=&gt;V_enq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_output.Put_line(utl_raw.cast_to_varchar2(V_msgid));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">We can see the data in the dequeue-IOT: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">select subscriber#, queue#, msg_enq_time, msgid from Aq$_xxx_mc_test_i;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">SUBSCRIBER# QUEUE# MSG_ENQ_TIME<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MSG_ID<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">&#8212;&#8212;&#8212;&#8211; &#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font color="#000000"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>1<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0 21-03-10 14:16:00,252000000 75E41875D957455B84D80B55AE06F81C<span style="mso-tab-count: 1">&nbsp; </span></span><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Here the basic information about our message is recorded. After a subscriber dequeues the message it&rsquo;s version of the record is deleted only from this table (Please try this yourself, to confirm). The queue-monitors are responsible for cleaning up the queue-table after all subscribers have dequeued the message. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Now let&rsquo;s see what happens when we add a second subscriber for our queue: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">DECLARE<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_agent sys.aq$_agent;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">BEGIN<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>V_agent:= sys.aq$_agent(&#39;Agent2&#39;,NULL,NULL);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>DBMS_AQADM.ADD_SUBSCRIBER(queue_name=&gt;&#39;xxx_mc_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 108pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>,subscriber=&gt;v_agent);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">END;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Any messages that were enqueued already, won&rsquo;t be available for this new subscriber. It can only dequeue messages enqueued after the subscriber was added. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><font color="#000000"><span lang="EN-US" style="mso-ansi-language: en-us"><font face="Calibri" size="3">Also you can&rsquo;t just change subscribers in an existing session. If you try, you will get an </font></span><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us">ORA-25242: Cannot change subscriber name from string to string without FIRST_MESSAGE option. <o:p></o:p></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">As the message describes further, you need to change the navigation of the dequeue. The default navigation is next_message, which means that Oracle will read the queue in a read-consistent and ordered way. It will take a snapshot of the queue when the first message is dequeued, and will dequeue the messages in that order. Messages that were enqueued after the first dequeue, will be read after reading all the messages in the queue. Even if priority ordering means they are enqueued earlier. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">An alternative navigation is &lsquo;first_message&rsquo;. When the navigation is set to &lsquo;first_message&rsquo;, Oracle will take a new snapshot before every dequeue, and start with the first message eligible for dequeuing. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Because we change subscribers, we need to set navigation to &lsquo;First_message&rsquo;, to force Oracle to take a new snapshot. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">(Btw. If you would try &lsquo;first_message&rsquo; with dequeue_mode &lsquo;Browse&rsquo;, you would never get beyond the first message. Try it!)<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">(Btw2. The same goes for changing the filter options like correlation.)<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Let&rsquo;s start a new session, and enqueue a new message: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_enq_options Dbms_aq.enqueue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_payload := utl_raw.cast_to_raw(&#39;Hello agents!&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aq.enqueue(Queue_name=&gt;&#39;xxx_mc_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,enqueue_options=&gt;V_enq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_output.Put_line(utl_raw.cast_to_varchar2(V_msgid));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">The message is still the same in xxx_mc_test:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">select q_name, rawtohex(msgid) msg_id,state,enq_time,enq_uid from xxx_mc_test<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Q_NAME<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MSG_ID<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>STATE ENQ_TIME<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ENQ_UID<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">&#8212;&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;-<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">XXX_MC_TEST_Q 45F11423444747B99600BCD8E9B3141E<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>0 21-03-10 14:33:23,783000000 SYSTEM<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">But in the queue view, we now see 2 records: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">select queue,msg_id,msg_state,enq_time,enq_user_id,consumer_name from aq$xxx_mc_test;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">QUEUE<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MSG_ID<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>STATE ENQ_TIME<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ENQ_USER_ID CONSUMER_NAME<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;-<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">XXX_MC_TEST_Q<span style="mso-tab-count: 1"> </span>45F11423444747B99600BCD8E9B3141E READY 21-03-10 14:33:24 SYSTEM<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>AGENT1<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">XXX_MC_TEST_Q<span style="mso-tab-count: 1"> </span>45F11423444747B99600BCD8E9B3141E READY 21-03-10 14:33:24 SYSTEM<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>AGENT2<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">One record for each subscriber. We can see the same in the dequeue_iot and in the history table: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">select subscriber#,queue#,msg_enq_time,msgid from aq$_xxx_mc_test_i;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">SUBSCRIBER# QUEUE# MSG_ENQ_TIME<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MSGID<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">&#8212;&#8212;&#8212;&#8211; &#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0 21-03-10 14:33:23,783000000 45F11423444747B99600BCD8E9B3141E<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>21<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0 21-03-10 14:33:23,783000000 45F11423444747B99600BCD8E9B3141E<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Select Msgid,Subscriber#,Name,Dequeue_time,Dequeue_user From Aq$_xxx_mc_test_h;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">MSGID<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>SUBSCRIBER# NAME DEQUEUE_TIME DEQUEUE_USER<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8211; &#8212;- &#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">45F11423444747B99600BCD8E9B3141E<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>0<span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">45F11423444747B99600BCD8E9B3141E<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>21<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>0<span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">Now when we dequeue the message, the queue table is not updated:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Select Rawtohex(Msgid) Msg_id,State,Enq_time,Enq_uid,deq_time,deq_uid From Xxx_mc_test;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">MSG_ID <span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>STATE ENQ_TIME<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ENQ_UID DEQ_TIME DEQ_UID<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;- &#8212;&#8212;&#8211; &#8212;&#8212;-<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">45F11423444747B99600BCD8E9B3141E<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>0 21-03-10 14:33:23,783000000 SYSTEM<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">However, the queue view reflects that the message has been dequeued by one subscriber. <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Select Queue,Msg_id,Msg_state,Enq_time,Enq_user_id,Consumer_name From Aq$xxx_mc_test;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">QUEUE<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MSG_ID<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MSG_STATE ENQ_TIME<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>ENQ_USER CONSUMER_NAME<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">&#8212;&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;-<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">XXX_MC_TEST_Q 45F11423444747B99600BCD8E9B3141E PROCESSED 21-03-10 14:33:24 SYSTEM<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>AGENT1<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">XXX_MC_TEST_Q 45F11423444747B99600BCD8E9B3141E READY<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>21-03-10 14:33:24 SYSTEM<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>AGENT2<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">The record for Agent1 has been deleted from the dequeue-IOT:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">select subscriber#,queue#,msg_enq_time,msgid from aq$_xxx_mc_test_i;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">SUBSCRIBER# QUEUE# MSG_ENQ_TIME<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MSGID<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">&#8212;&#8212;&#8212;&#8211; &#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>21<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>0 21-03-10 14:33:23,783000000 45F11423444747B99600BCD8E9B3141E<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">And the history table also shows the dequeue: <o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Select msgid, subscriber#, Dequeue_time,Dequeue_user From Aq$_xxx_mc_test_h;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">MSGID<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>SUBSCRIBER# DEQUEUE_TIME<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>DEQUEUE_USER <o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">45F11423444747B99600BCD8E9B3141E <span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>21<span style="mso-tab-count: 1">&nbsp;&nbsp; </span>21-03-10 14:33:23,783000000 SYSTEM<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">45F11423444747B99600BCD8E9B3141E<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;</span><o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font face="Calibri"><font color="#000000">To dequeue the message for &lsquo;Agent2&rsquo;. We of course need to set the navigation to &lsquo;First_message&rsquo;:<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_deq_options Dbms_aq.dequeue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_deq_options.Wait := Dbms_aq.No_wait;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_deq_options.Navigation:=Dbms_aq.First_message;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_deq_options.consumer_name:=&#39;Agent2&#39;;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aq.dequeue(Queue_name=&gt;&#39;xxx_mc_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,dequeue_options=&gt;V_deq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_output.Put_line(utl_raw.cast_to_varchar2(V_payload));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000"><font face="Calibri">Now after the QMON has processed the queue, the records will be deleted from all queues. (When a retention time has been set, the records will of course be retained for that time).<o:p></o:p></font></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" face="Calibri" size="3">&nbsp;</font></o:p></span></p>
<h2 style="margin: 10pt 0cm 0pt"><font size="4"><font color="#4f81bd"><font face="Cambria"><span lang="EN-US" style="mso-ansi-language: en-us">Rules for multi-consumer queues</span><span lang="EN-US" style="line-height: 115%; font-family: 'calibri', 'sans-serif'; font-size: 11pt; mso-ansi-language: en-us; mso-fareast-font-family: calibri; mso-ascii-theme-font: minor-latin; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'times new roman'; mso-bidi-theme-font: minor-bidi"><o:p></o:p></span></font></font></font></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000">So far we have seen different kinds of filtering for dequeuing messages. A new option comes with multi-consumer queues, where different subscribers can put a filter on their subscriptions. These filters (rules) can take the form of (complex) predicates that return a Boolean value. The rule can reference both message_properties as payload. To reference the payload, use a qualifier of &lsquo;tab.user_data&rsquo;. <o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000">Let&rsquo;s build a new queue. To make optimal use of the &lsquo;rule&rsquo;-functionality we&rsquo;ll use a custom type that can be referred to in the &lsquo;rules&rsquo;. The type that we&rsquo;ll use is loosely based on the emp table. <o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">create type t_emp as object<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">(empno<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>number<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,ename<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>varchar2(10)<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,job<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>varchar2(9)<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">BEGIN<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">DBMS_AQADM.CREATE_QUEUE_TABLE (queue_table =&gt; &#39;xxx_rule_test&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 108pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,queue_payload_type =&gt; &#39;t_emp&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">DBMS_AQADM.CREATE_QUEUE(queue_name =&gt; &#39;xxx_rule_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 72pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;</span>,queue_table =&gt; &#39;xxx_rule_test&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">DBMS_AQADM.START_QUEUE (queue_name =&gt; &#39;xxx_rule_test_q&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">END;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000">We add 2 subscribers to this queue.<o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">DECLARE<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_agent sys.aq$_agent;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">BEGIN<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_agent:= sys.aq$_agent(&#39;HR_President&#39;,NULL,NULL);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">DBMS_AQADM.ADD_SUBSCRIBER(queue_name=&gt;&#39;xxx_rule_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 72pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>,subscriber=&gt;v_agent<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 72pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>,rule=&gt;&#39;tab.user_data.job=&#39;&#39;President&#39;&#39;&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_agent:= sys.aq$_agent(&#39;HR_Employee&#39;,NULL,NULL);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">DBMS_AQADM.ADD_SUBSCRIBER(queue_name=&gt;&#39;xxx_rule_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 72pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>,subscriber=&gt;v_agent);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">END;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000">Note how the agent &lsquo;HR_President&rsquo; has a rule added to its subscription. Only messages where the job attribute of the payload is &lsquo;President&rsquo; are eligible for dequeuing by this agent. Let&rsquo;s enqueue some messages on this queue.<o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload t_emp;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_enq_options Dbms_aq.enqueue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_payload := t_emp(1,&#39;Jones&#39;,&#39;Manager&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aq.enqueue(Queue_name=&gt;&#39;xxx_rule_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,enqueue_options=&gt;V_enq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_output.Put_line(utl_raw.cast_to_varchar2(V_msgid));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_payload := t_emp(2,&#39;King&#39;,&#39;President&#39;);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aq.enqueue(Queue_name=&gt;&#39;xxx_rule_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,enqueue_options=&gt;V_enq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_output.Put_line(utl_raw.cast_to_varchar2(V_msgid));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000">Now we have 2 messages. Only one of which matches the rule for the &lsquo;HR_President&rsquo; subscriber. The &lsquo;HR_Employee&rsquo; subscriber does not have any rule, and is thus eligible for all messages. We can see this when we query the queue-view:<o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">select queue,rawtohex(msg_id) msg_id,msg_state,consumer_name from aq$xxx_rule_test;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">QUEUE<span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>MSG_ID<span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;</span>MSG_STATE CONSUMER_NAME<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;-<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">XXX_RULE_TEST_Q 4D0FF7A800834559809AD90AFCA81444 READY<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>HR_EMPLOYEE<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">XXX_RULE_TEST_Q E5A2FDFD8EE942349E9BC9DEE88CEB10 READY<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>HR_EMPLOYEE<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">XXX_RULE_TEST_Q E5A2FDFD8EE942349E9BC9DEE88CEB10 READY<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </span>HR_PRESIDENT<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000">We see that both messages are enqueued for the &lsquo;HR_Employee&rsquo;. But only the message with the job &lsquo;President&rsquo; is enqueued for the the &lsquo;HR_President&rsquo;.<o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000">Let&rsquo;s dequeue the messages as &lsquo;HR_President&rsquo; first, then as &lsquo;HR_Employee&rsquo;. <o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload t_emp;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_deq_options Dbms_aq.dequeue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_deq_options.wait := dbms_aq.no_wait;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_deq_options.consumer_name:=&#39;HR_President&#39;;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aq.dequeue(Queue_name=&gt;&#39;xxx_rule_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,dequeue_options=&gt;V_deq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_output.Put_line(v_payload.empno||&#39; &#39;||v_payload.ename);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">end;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">2 King<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000">This time the first message enqueued was ignored for this subscriber. Only the message that met its rule was dequeued. When dequeuing as the &lsquo;HR_Employee&rsquo; both messages will be dequeued. <o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload t_emp;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_deq_options Dbms_aq.dequeue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_deq_options.wait := dbms_aq.no_wait;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_deq_options.navigation := dbms_aq.first_message;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_deq_options.consumer_name:=&#39;HR_Employee&#39;;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aq.dequeue(Queue_name=&gt;&#39;xxx_rule_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,dequeue_options=&gt;V_deq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_output.Put_line(v_payload.empno||&#39; &#39;||v_payload.ename);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_deq_options.navigation := dbms_aq.next_message;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aq.dequeue(Queue_name=&gt;&#39;xxx_rule_test_q&#39;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,dequeue_options=&gt;V_deq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_output.Put_line(v_payload.empno||&#39; &#39;||v_payload.ename);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">end;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">1 Jones<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">2 King<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000">After these dequeues, the queue is empty for these subscribers. The only message eligible for &lsquo;HR_President&rsquo; was the message with &lsquo;2,King,President&rsquo;. &lsquo;HR_Employee&rsquo; was eligible for both messages. <o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000">Remember that the &lsquo;Rule&rsquo; must evaluate to a Boolean value. Valid references are to &lsquo;tab.user_data.&rsquo;, for object_type payloads. Also columns like &lsquo;priority&rsquo; or &lsquo;correlation&rsquo; from the message properties can be referenced in the rule.<o:p></o:p></font></font></span></p>
<h2 style="margin: 10pt 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin"><o:p><font color="#4f81bd" face="Cambria" size="4">&nbsp;</font></o:p></span></h2>
<h2 style="margin: 10pt 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us; mso-fareast-font-family: calibri; mso-fareast-theme-font: minor-latin"><font size="4"><font color="#4f81bd"><font face="Cambria">Common issues with queues and troubleshooting<o:p></o:p></font></font></font></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000">Above we already saw several error messages related to queues. Most of them can be expected, and should be handled in the code.<o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000">The most common issues with queues are from queues not started, or not started for enqueuing or dequeuing. The error messages for this should be quite clear, and you can just start the queue with the &lsquo;dbms_aqadm.start_queue&rsquo; package. Note that when the queue is started for enqueuing or dequeuing only, you need to stop it first, then start again with the correct options enabled. <o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000">Another issue may occur because of the AQ error handling system. A dequeue with dequeue_mode &lsquo;REMOVE&rsquo; that needs to roll back afterwards, is considered a failed attempt. When the number of failed attempts exceed the retry count of the queue, the message will be moved to the Exception queue. The message remains in the queue table, but with status 3: Expired. The exception_queue field will be set to the name of the exception queue. <o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000">These messages are not available for dequeuing anymore. They must be dequeued from the exception queue.<o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><o:p><font color="#000000" size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000">To dequeue from an exception queue, it first needs to be enabled for dequeuing. (It cannot be enabled for enqueuing). Also no subscriber_name is allowed for the dequeue. <o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aqadm.Start_queue(Queue_name=&gt;&#39;aq$_xxx_mc_test_e&#39;,<b style="mso-bidi-font-weight: normal">Enqueue=&gt;False</b>,Dequeue=&gt;True);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">end;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Declare<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_payload Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_msgid Raw(200);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_deq_options Dbms_aq.dequeue_options_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">v_msg_properties dbms_aq.message_properties_t;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Begin<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">V_deq_options.Wait := Dbms_aq.No_wait;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_aq.dequeue(<b style="mso-bidi-font-weight: normal">Queue_name=&gt;&#39;AQ$_XXX_MC_TEST_E&#39;</b><o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Message_properties=&gt;V_msg_properties<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,dequeue_options=&gt;V_deq_options<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000"><span style="mso-spacerun: yes">&nbsp; </span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>,Payload=&gt;V_payload<o:p></o:p></font></span></p>
<p class="MsoNormal" style="text-indent: 36pt; margin: 0cm 0cm 0pt 36pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">,Msgid=&gt;V_msgid);<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">Dbms_output.Put_line(Utl_raw.Cast_to_varchar2(V_payload));<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 8pt; mso-ansi-language: en-us"><font color="#000000">End;<o:p></o:p></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="mso-ansi-language: en-us"><font size="3"><font color="#000000">The last issue to note with queues (especially in eBS systems) is described in Metalink note &nbsp;267137.1. If multi-consumer queues are created in an ASSM tablespace, or when using freelist groups, QMON will not perform space management on the IOT&rsquo;s. This will result in ever growing IOT&rsquo;s and eventually in deteriorating performance. <o:p></o:p></font></font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US" style="line-height: 115%; font-family: 'courier new'; font-size: 10pt; mso-ansi-language: en-us; mso-fareast-font-family: 'times new roman'; mso-fareast-language: nl"><o:p><font color="#000000">&nbsp;</font></o:p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stijf.com/wordpress/2010/03/oracle-advanced-queues-aq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

