Although there were already several posts on querying AQ, like “in the queue” and “enqueue“, the next one is great when monitoring queues. We are using this to monitor AQ, especially for Oracle ESB (hence the commented addition):
1
2
3
4
5
6
7
8
9
SELECT aq.name
, aq.queue_table
, aq.queue_type
, v$aq.*FROM v$aq
, all_queues aq
WHERE aq.qid = v$aq.qid
-- use if looking for ESB AQ: and aq.queue_table = 'ESB_JAVA_DEFERRED';
;
The query will result in something like:
It contains the following metrics:
Waiting – Number of waiting message;
Ready – Number of messages with status ready;
Expired – Number of expired messages;
Total Wait – Total waiting time per queue;
Average Wait – Average waiting time per queue.
A describtion of the AQ and Streams views can be found here.
If you are using AQ within Oracle ESB there might be a point in time you want to tune AQ performance. In this post you’ll find the results of Metalink research, and our experience on a production system.
Queue compatibility
When creating the ORAESB schema (in version 10.1.3.3) using the script $ORACLE_HOME/integration/esb/sql/oracle/create_esb_topics.sql, the queues are created with 8.1 compatibility. This is solved in 10.1.3.4. To alter this find the statement
look for the streams pool. There are several Metalink notes on this setting (including 316889.1, 102926.1 and 335516.1). The latter has a general recommandetion per RDBMS version:
11g: set STREAMS_POOL_SIZE to be greater or equal to 100 MB;
10gR2: set SGA_TARGET > 0 and STREAMS_POOL_SIZE=0 to enable autotuning of the Streams pool;
10gR1: use the STREAMS_POOL_SIZE init.ora parameter to configure the Streams memory allocation;
And of course you could use V$STREAMS_POOL_ADVICE to get advice for your specific situation.
Upgrade the JDK
A described here upgrading the JDK can also give a performance boost.
This post describes how to change the JDK for an Oracle Application Server 10.1.3.x installation. To check which JDK versions are supported with Application Server releases, check Metalink note 258833.1.
Stop all running Application Server processess.
Rename the current JDK directory:
1
2
cd $ORACLE_HOME
mv jdk jdk.old
Install or copy the JDK version you need into $ORACLE_HOME/jdk
Start the Application Server processess.
You can check the JDK version:
1
$ /jdk/bin>./java -version
AIX 5L specials
If your systems are running AIX 5L there is some patching to be done. Assuming you’re using JDK 1.5 you have to apply patch 5261515.
After upgrading to a IBM JDK it is very well possible to run into the JAVAX.NET.SSL.SSLKEYEXCEPTION:RSA PREMASTER SECRET ERROR. In that case you have to modify the $ORACLE_HOM/jdk/jre/lib/security/java.security to
and create a symbolic link (or copy the jar) from the directory $ORACLE_HOME/jre/lib/ext/ibmjsseprovider2.jar to $ORACLE_HOME/jdk/jre/lib/ibmjsseprovider2.jar as described in Metalink note 746423.1.
Pranav Mistry did a great TED talk on tools that help the fysical world to interact with the digital world. Pranav works on a project called Sixth Sense and most of his examples are based on this project and the research that led to it.
And the busines – IT gap
Inspiring talks like these make me wonder if there is any groundbreaking research that could bridge the business IT gap that is mentioned so often. One thing that makes this even more complicated is that both “IT” and “business” are concepts, unlike the real fysical world. Besides that the concept do not follow laws of nature like the fysical world does.
To build a bridge between business and IT bith need a level of understanding of how the other works. In most case this will require a lot of communication.