Archive

Archive for December, 2009

Monitoring AQ

December 23rd, 2009 PeterPaul No comments

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:

Monitoring AQ query results

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.

Tuning AQ for Oracle ESB

December 16th, 2009 PeterPaul No comments

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

1
2
3
4
5
6
dbms_aqadm.create_queue_table
    ( Queue_table => qtablename
    , Queue_payload_type => 'SYS.AQ$_JMS_TEXT_MESSAGE'
    , multiple_consumers => true
    , compatible => '8.1'
    );

and change this to:

1
2
3
4
5
6
dbms_aqadm.create_queue_table
    ( Queue_table => qtablename
    , Queue_payload_type => 'SYS.AQ$_JMS_TEXT_MESSAGE'
    , multiple_consumers => true
    , compatible => '10.2'
    );

if you already created the queues, use this statement:

1
2
3
4
dbms_aqadm.migrate_queue_table
    ( queue_table => 'ESB_JAVA_DEFERRED'
    , compatible => '10.2'
    );

If you’re not sure check the compatibility with this query:

1
2
3
4
5
6
SELECT queue_table
,      compatible
,      recipients
FROM   dba_QUEUE_tables
WHERE  owner = 'ORAESB'
;

Streams pool size

Verify the current stream_pool_size using the following query:

1
2
3
4
5
6
7
SELECT component
,      current_size/1024/1024 "CURRENT_SIZE"
,      min_size/1024/1024 "MIN_SIZE"
,      user_specified_size/1024/1024 "USER_SPECIFIED_SIZE"
,      last_oper_type "TYPE" 
FROM   v$sga_dynamic_components
;

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.

Change the JDK for Oracle Application Server 10g EE

December 8th, 2009 PeterPaul No comments

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.

  1. Stop all running Application Server processess.
  2. Rename the current JDK directory:
  3. 1
    2
    
    cd $ORACLE_HOME
    mv jdk jdk.old
  4. Install or copy the JDK version you need into $ORACLE_HOME/jdk
  5. Start the Application Server processess.
    1. 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

      1
      2
      3
      4
      5
      
      security.provider.1=com.ibm.jsse2.IBMJSSEProvider2
      security.provider.2=com.ibm.crypto.provider.IBMJCE
      security.provider.3=com.ibm.security.jgss.IBMJGSSProvider
      security.provider.4=com.ibm.security.cert.IBMCertPath
      security.provider.5=com.ibm.security.sasl.IBMSASL

      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.

Categories: Oracle, SOA Suite Tags: , , , , ,

Gestures as the human – device interface

December 3rd, 2009 PeterPaul No comments

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.