Table of Contents
- List of Examples
- List of Figures
- List of Tables
- Title and Copyright Information
- Preface
- Changes in This Release for Oracle Database Advanced Queuing User's Guide
-
1
Introduction to Oracle Database Advanced Queuing
- 1.1 What Is Queuing?
- 1.2 Oracle Database Advanced Queuing Leverages Oracle Database
- 1.3 Oracle Database Advanced Queuing in Integrated Application Environments
- 1.4 Buffered Messaging
- 1.5 Asynchronous Notifications
- 1.6 Enqueue Features
- 1.7 Dequeue Features
- 1.8 Propagation Features
- 1.9 Message Format Transformation
- 1.10 Other Oracle Database Advanced Queuing Features
- 1.11 Interfaces to Oracle Database Advanced Queuing
-
2
Basic Components of Oracle Database Advanced Queuing
- 2.1 Object Name
- 2.2 Type Name
- 2.3 AQ Agent Type
- 2.4 AQ Recipient List Type
- 2.5 AQ Agent List Type
- 2.6 AQ Subscriber List Type
- 2.7 AQ Registration Information List Type
- 2.8 AQ Post Information List Type
- 2.9 AQ Registration Information Type
- 2.10 AQ Notification Descriptor Type
- 2.11 AQ Message Properties Type
- 2.12 AQ Post Information Type
- 2.13 AQ$_NTFN_MSGID_ARRAY Type
- 2.14 Enumerated Constants for AQ Administrative Interface
- 2.15 Enumerated Constants for AQ Operational Interface
- 2.16 AQ Background Processes
-
3
Oracle Database Advanced Queuing: Programmatic Interfaces
- 3.1 Programmatic Interfaces for Accessing Oracle Database Advanced Queuing
- 3.2 Using PL/SQL to Access Oracle Database Advanced Queuing
- 3.3 Using OCI and the Thin JDBC Driver to Access Oracle Database Advanced Queuing
- 3.4 Using OCCI to Access Oracle Database Advanced Queuing
- 3.5 Using Oracle Java Message Service (Oracle JMS) to Access Oracle Database Advanced Queuing
- 3.6 Using Oracle Database Advanced Queuing XML Servlet to Access Oracle Database Advanced Queuing
-
4
Managing Oracle Database Advanced Queuing
- 4.1 Oracle Database Advanced Queuing Compatibility Parameters
- 4.2 Queue Security and Access Control
- 4.3 Queue Table Export/Import
- 4.4 Oracle Enterprise Manager Support for Non-Sharded Queues
- 4.5 Using Oracle Database Advanced Queuing with XA
-
4.6
Restrictions on Queue Management
- 4.6.1 Subscribers
- 4.6.2 DML Not Supported on Queue Tables or Associated IOTs
- 4.6.3 Propagation from Object Queues with REF Payload Attributes
- 4.6.4 Collection Types in Message Payloads
- 4.6.5 Synonyms on Queue Tables and Queues
- 4.6.6 Synonyms on Object Types
- 4.6.7 Tablespace Point-in-Time Recovery
- 4.6.8 Virtual Private Database
- 4.7 Managing Propagation
-
5
Oracle Database Advanced Queuing Performance and Scalability
-
5.1
Sharded Queues
- 5.1.1 Sharded Queues and the Message Cache
- 5.1.2 Sharded Queues and Enqueuing / Dequeuing Messages
- 5.1.3 Sharded Queues and Native JMS Support
- 5.1.4 Sharded Queues and Partitioning
- 5.1.5 Sharded Queues and Oracle Real Application Clusters (Oracle RAC)
- 5.1.6 Sharded Queue Restrictions
- 5.1.7 Sharded Queues Tuning
- 5.1.8 User Sharding
-
5.2
Non-Sharded Queues
-
5.2.1
Persistent Messaging Basic Tuning Tips
- 5.2.1.1 Memory Requirements
- 5.2.1.2 Using Storage Parameters
- 5.2.1.3 I/O Configuration
- 5.2.1.4 Running Enqueue and Dequeue Processes Concurrently in a Single Non-Sharded Queue Table
- 5.2.1.5 Running Enqueue and Dequeue Processes Serially in a Single Non-Sharded Queue Table
- 5.2.1.6 Creating Indexes on a Queue Table
- 5.2.1.7 Other Tips for Non-Sharded Queues
- 5.2.2 Propagation Tuning Tips
- 5.2.3 Buffered Messaging Tuning
-
5.2.1
Persistent Messaging Basic Tuning Tips
- 5.3 Performance Views
-
5.1
Sharded Queues
-
6
Internet Access to Oracle Database Advanced Queuing
-
6.1
Overview of Oracle Database Advanced Queuing Operations Over the Internet
- 6.1.1 Oracle Database Advanced Queuing Internet Operations Architecture
- 6.1.2 Internet Message Payloads
- 6.1.3 Configuring the Web Server to Authenticate Users Sending POST Requests
- 6.1.4 Client Requests Using HTTP
- 6.1.5 Oracle Database Advanced Queuing Servlet Responses Using HTTP
- 6.1.6 Oracle Database Advanced Queuing Propagation Using HTTP and HTTPS
- 6.2 Deploying the Oracle Database Advanced Queuing XML Servlet
- 6.3 Internet Data Access Presentation (IDAP)
-
6.4
Request and Response IDAP Documents
- 6.4.1 IDAP Client Requests for Enqueue
- 6.4.2 IDAP Client Requests for Dequeue
- 6.4.3 IDAP Client Requests for Registration
- 6.4.4 IDAP Client Requests to Commit a Transaction
- 6.4.5 IDAP Client Requests to Roll Back a Transaction
- 6.4.6 IDAP Server Response to an Enqueue Request
- 6.4.7 IDAP Server Response to a Dequeue Request
- 6.4.8 IDAP Server Response to a Register Request
- 6.4.9 IDAP Commit Response
- 6.4.10 IDAP Rollback Response
- 6.4.11 IDAP Notification
- 6.4.12 IDAP Response in Case of Error
- 6.5 Notification of Messages by E-Mail
-
6.1
Overview of Oracle Database Advanced Queuing Operations Over the Internet
- 7 Troubleshooting Oracle Database Advanced Queuing
-
8
Oracle Database Advanced Queuing Administrative Interface
- 8.1 Managing Non-Sharded Queue Tables
- 8.2 Managing Non-Sharded Queues
- 8.3 Managing Sharded Queues
- 8.4 Managing Transformations
- 8.5 Granting and Revoking Privileges
- 8.6 Managing Subscribers
- 8.7 Managing Propagations
- 8.8 Managing Oracle Database Advanced Queuing Agents
- 8.9 Adding an Alias to the LDAP Server
- 8.10 Deleting an Alias from the LDAP Server
-
9
Oracle Database Advanced Queuing and Messaging Gateway Views
- 9.1 DBA_QUEUE_TABLES: All Queue Tables in Database
- 9.2 USER_QUEUE_TABLES: Queue Tables in User Schema
- 9.3 ALL_QUEUE_TABLES: Queue Tables Accessible to the Current User
- 9.4 DBA_QUEUES: All Queues in Database
- 9.5 USER_QUEUES: Queues In User Schema
- 9.6 ALL_QUEUES: Queues for Which User Has Any Privilege
- 9.7 DBA_QUEUE_SCHEDULES: All Propagation Schedules
- 9.8 USER_QUEUE_SCHEDULES: Propagation Schedules in User Schema
- 9.9 QUEUE_PRIVILEGES: Queues for Which User Has Queue Privilege
- 9.10 AQ$<Queue_Table_Name>: Messages in Queue Table
- 9.11 AQ$<Queue_Table_Name_S>: Queue Subscribers
- 9.12 AQ$<Queue_Table_Name_R>: Queue Subscribers and Their Rules
- 9.13 AQ$Queue_Name_R: Queue Subscribers and Their Rules for Multi-consumer Queue
- 9.14 AQ$Queue_Name_S: Queue Subscribers and Their Rules for Multi-consumer Queue
- 9.15 DBA_QUEUE_SUBSCRIBERS: All Queue Subscribers in Database
- 9.16 USER_QUEUE_SUBSCRIBERS: Queue Subscribers in User Schema
- 9.17 ALL_QUEUE_SUBSCRIBERS: Subscribers for Queues Where User Has Queue Privileges
- 9.18 DBA_TRANSFORMATIONS: All Transformations
- 9.19 DBA_ATTRIBUTE_TRANSFORMATIONS: All Transformation Functions
- 9.20 USER_TRANSFORMATIONS: User Transformations
- 9.21 USER_ATTRIBUTE_TRANSFORMATIONS: User Transformation Functions
- 9.22 DBA_SUBSCR_REGISTRATIONS: All Subscription Registrations
- 9.23 USER_SUBSCR_REGISTRATIONS: User Subscription Registrations
- 9.24 AQ$INTERNET_USERS: Oracle Database Advanced Queuing Agents Registered for Internet Access
- 9.25 V$AQ: Number of Messages in Different States in Database
- 9.26 V$BUFFERED_QUEUES: All Buffered Queues in the Instance
- 9.27 V$BUFFERED_SUBSCRIBERS: Subscribers for All Buffered Queues in the Instance
- 9.28 V$BUFFERED_PUBLISHERS: All Buffered Publishers in the Instance
- 9.29 V$PERSISTENT_QUEUES: All Active Persistent Queues in the Instance
- 9.30 V$PERSISTENT_QMN_CACHE: Performance Statistics on Background Tasks for Persistent Queues
- 9.31 V$PERSISTENT_SUBSCRIBERS: All Active Subscribers of the Persistent Queues in the Instance
- 9.32 V$PERSISTENT_PUBLISHERS: All Active Publishers of the Persistent Queues in the Instance
- 9.33 V$PROPAGATION_SENDER: Buffer Queue Propagation Schedules on the Sending (Source) Side
- 9.34 V$PROPAGATION_RECEIVER: Buffer Queue Propagation Schedules on the Receiving (Destination) Side
- 9.35 V$SUBSCR_REGISTRATION_STATS: Diagnosability of Notifications
- 9.36 V$METRICGROUP: Information About the Metric Group
- 9.37 V$AQ_MESSAGE_CACHE_STAT: Memory Management for Sharded Queues
- 9.38 V$AQ_SHARDED_SUBSCRIBER_STAT: Sharded Queue Subscriber Statistics
- 9.39 V$AQ_MESSAGE_CACHE_ADVICE: Simulated Metrics
- 9.40 V$AQ_REMOTE_DEQUEUE_AFFINITY: Dequeue Affinity Instance List
- 9.41 V$AQ_BACKGROUND_COORDINATOR: Performance Statistics for AQ's Master Background Coordinator Process (AQPC)
- 9.42 V$AQ_JOB_COORDINATOR: Performance Statistics per Coordinator
- 9.43 V$AQ_SERVER_POOL: Performance Statistics for all Servers
- 9.44 V$AQ_CROSS_INSTANCE_JOBS: Cross Process Jobs Description
- 9.45 V$AQ_IPC_ACTIVE_MSGS
- 9.46 V$AQ_IPC_MSG_STATS
- 9.47 V$AQ_IPC_PENDING_MSGS
- 9.48 V$AQ_NONDUR_REGISTRATIONS: Non-Durable Registrations
- 9.49 V$AQ_NOTIFICATION_CLIENTS: Secure OCI Client Connections
- 9.50 V$AQ_SUBSCRIBER_LOAD: Durable Subscribers
- 9.51 V$AQ_NONDUR_SUBSCRIBER: Non-Durable Subscribers
- 9.52 V$AQ_NONDUR_SUBSCRIBER_LWM: LWM of Non Durable Subscriber
- 9.53 V$AQ_MESSAGE_CACHE: Performance Statistics
- 9.54 MGW_GATEWAY: Configuration and Status Information
- 9.55 MGW_AGENT_OPTIONS: Supplemental Options and Properties
- 9.56 MGW_LINKS: Names and Types of Messaging System Links
- 9.57 MGW_MQSERIES_LINKS: WebSphere MQ Messaging System Links
- 9.58 MGW_TIBRV_LINKS: TIB/Rendezvous Messaging System Links
- 9.59 MGW_FOREIGN_QUEUES: Foreign Queues
- 9.60 MGW_JOBS: Messaging Gateway Propagation Jobs
- 9.61 MGW_SUBSCRIBERS: Information for Subscribers
- 9.62 MGW_SCHEDULES: Information About Schedules
-
10
Oracle Database Advanced Queuing Operations Using PL/SQL
- 10.1 Using Secure Queues
- 10.2 Enqueuing Messages
- 10.3 Enqueuing an Array of Messages
- 10.4 Listening to One or More Queues
- 10.5 Dequeuing Messages
- 10.6 Dequeuing an Array of Messages
- 10.7 Registering for Notification
- 10.8 Unregistering for Notification
- 10.9 Posting for Subscriber Notification
- 10.10 Adding an Agent to the LDAP Server
- 10.11 Removing an Agent from the LDAP Server
-
11
Introduction to Oracle Java Message Service
- 11.1 General Features of JMS and Oracle JMS
- 11.2 Structured Payload/Message Types in JMS
- 11.3 Buffered Messaging in JMS
- 11.4 JMS Point-to-Point Model Features
- 11.5 JMS Publish/Subscribe Model Features
- 11.6 JMS Message Producer Features
- 11.7 JMS Message Consumer Features
- 11.8 JMS Propagation
- 11.9 Message Transformation with JMS AQ
- 11.10 JMS Streaming
- 11.11 Java EE Compliance
-
12
Oracle Java Message Service Basic Operations
- 12.1 EXECUTE Privilege on DBMS_AQIN
- 12.2 Registering a ConnectionFactory
- 12.3 Unregistering a Queue/Topic ConnectionFactory
-
12.4
Getting a QueueConnectionFactory or TopicConnectionFactory
- 12.4.1 Getting a QueueConnectionFactory with JDBC URL
- 12.4.2 Getting a QueueConnectionFactory with JDBC Connection Parameters
- 12.4.3 Getting a TopicConnectionFactory with JDBC URL
- 12.4.4 Getting a TopicConnectionFactory with JDBC Connection Parameters
- 12.4.5 Getting a QueueConnectionFactory or TopicConnectionFactory in LDAP
- 12.5 Getting a Queue or Topic in LDAP
- 12.6 Creating a Non-Sharded Queue Table
- 12.7 Creating a Queue
- 12.8 Getting a Non-Sharded Queue Table
-
12.9
Granting and Revoking Privileges
- 12.9.1 Granting Oracle Database Advanced Queuing System Privileges
- 12.9.2 Revoking Oracle Database Advanced Queuing System Privileges
- 12.9.3 Granting Publish/Subscribe Topic Privileges
- 12.9.4 Revoking Publish/Subscribe Topic Privileges
- 12.9.5 Granting Point-to-Point Queue Privileges
- 12.9.6 Revoking Point-to-Point Queue Privileges
- 12.10 Managing Destinations
- 12.11 Propagation Schedules
-
13
Oracle Java Message Service Point-to-Point
- 13.1 Creating a Connection with User Name/Password
- 13.2 Creating a Connection with Default ConnectionFactory Parameters
- 13.3 Creating a QueueConnection with User Name/Password
- 13.4 Creating a QueueConnection with an Open JDBC Connection
- 13.5 Creating a QueueConnection with Default ConnectionFactory Parameters
- 13.6 Creating a QueueConnection with an Open OracleOCIConnectionPool
- 13.7 Creating a Session
- 13.8 Creating a QueueSession
- 13.9 Creating a QueueSender
- 13.10 Sending Messages Using a QueueSender with Default Send Options
- 13.11 Sending Messages Using a QueueSender by Specifying Send Options
- 13.12 Creating a QueueBrowser for Standard JMS Type Messages
- 13.13 Creating a QueueBrowser for Standard JMS Type Messages, Locking Messages
- 13.14 Creating a QueueBrowser for Oracle Object Type Messages
- 13.15 Creating a QueueBrowser for Oracle Object Type Messages, Locking Messages
- 13.16 Creating a QueueReceiver for Standard JMS Type Messages
- 13.17 Creating a QueueReceiver for Oracle Object Type Messages
-
14
Oracle Java Message Service Publish/Subscribe
- 14.1 Creating a Connection with User Name/Password
- 14.2 Creating a Connection with Default ConnectionFactory Parameters
- 14.3 Creating a TopicConnection with User Name/Password
- 14.4 Creating a TopicConnection with Open JDBC Connection
- 14.5 Creating a TopicConnection with an Open OracleOCIConnectionPool
- 14.6 Creating a Session
- 14.7 Creating a TopicSession
- 14.8 Creating a TopicPublisher
- 14.9 Publishing Messages with Minimal Specification
- 14.10 Publishing Messages Specifying Topic
- 14.11 Publishing Messages Specifying Delivery Mode, Priority, and TimeToLive
- 14.12 Publishing Messages Specifying a Recipient List
- 14.13 Creating a DurableSubscriber for a JMS Topic Without Selector
- 14.14 Creating a DurableSubscriber for a JMS Topic with Selector
- 14.15 Creating a DurableSubscriber for an Oracle Object Type Topic Without Selector
- 14.16 Creating a DurableSubscriber for an Oracle Object Type Topic with Selector
- 14.17 Specifying Transformations for Topic Subscribers
- 14.18 Creating a Remote Subscriber for JMS Messages
- 14.19 Creating a Remote Subscriber for Oracle Object Type Messages
- 14.20 Specifying Transformations for Remote Subscribers
- 14.21 Unsubscribing a Durable Subscription for a Local Subscriber
- 14.22 Unsubscribing a Durable Subscription for a Remote Subscriber
- 14.23 Creating a TopicReceiver for a Topic of Standard JMS Type Messages
- 14.24 Creating a TopicReceiver for a Topic of Oracle Object Type Messages
- 14.25 Creating a TopicBrowser for Standard JMS Messages
- 14.26 Creating a TopicBrowser for Standard JMS Messages, Locking Messages
- 14.27 Creating a TopicBrowser for Oracle Object Type Messages
- 14.28 Creating a TopicBrowser for Oracle Object Type Messages, Locking Messages
- 14.29 Browsing Messages Using a TopicBrowser
-
15
Oracle Java Message Service Shared Interfaces
-
15.1
Oracle Database Advanced Queuing JMS Operational Interface: Shared Interfaces
- 15.1.1 Starting a JMS Connection
- 15.1.2 Getting a JMS Connection
- 15.1.3 Committing All Operations in a Session
- 15.1.4 Rolling Back All Operations in a Session
- 15.1.5 Getting the JDBC Connection from a Session
- 15.1.6 Getting the OracleOCIConnectionPool from a JMS Connection
- 15.1.7 Creating a BytesMessage
- 15.1.8 Creating a MapMessage
- 15.1.9 Creating a StreamMessage
- 15.1.10 Creating an ObjectMessage
- 15.1.11 Creating a TextMessage
- 15.1.12 Creating a JMS Message
- 15.1.13 Creating an AdtMessage
- 15.1.14 Setting a JMS Correlation Identifier
-
15.2
Specifying JMS Message Properties
- 15.2.1 Setting a Boolean Message Property
- 15.2.2 Setting a String Message Property
- 15.2.3 Setting an Integer Message Property
- 15.2.4 Setting a Double Message Property
- 15.2.5 Setting a Float Message Property
- 15.2.6 Setting a Byte Message Property
- 15.2.7 Setting a Long Message Property
- 15.2.8 Setting a Short Message Property
- 15.2.9 Setting an Object Message Property
- 15.3 Setting Default TimeToLive for All Messages Sent by a MessageProducer
- 15.4 Setting Default Priority for All Messages Sent by a MessageProducer
- 15.5 Creating an AQjms Agent
- 15.6 Receiving a Message Synchronously
- 15.7 Specifying the Navigation Mode for Receiving Messages
- 15.8 Receiving a Message Asynchronously
- 15.9 Getting Message ID
-
15.10
Getting JMS Message Properties
- 15.10.1 Getting a Boolean Message Property
- 15.10.2 Getting a String Message Property
- 15.10.3 Getting an Integer Message Property
- 15.10.4 Getting a Double Message Property
- 15.10.5 Getting a Float Message Property
- 15.10.6 Getting a Byte Message Property
- 15.10.7 Getting a Long Message Property
- 15.10.8 Getting a Short Message Property
- 15.10.9 Getting an Object Message Property
- 15.11 Closing and Shutting Down
- 15.12 Troubleshooting
-
15.1
Oracle Database Advanced Queuing JMS Operational Interface: Shared Interfaces
- 16 Oracle Java Message Service Types Examples
- 17 Introduction to Oracle Messaging Gateway
-
18
Getting Started with Oracle Messaging Gateway
- 18.1 Oracle Messaging Gateway Prerequisites
-
18.2
Loading and Setting Up Oracle Messaging Gateway
- 18.2.1 Loading Database Objects into the Database
- 18.2.2 Modifying listener.ora for the External Procedure
- 18.2.3 Modifying tnsnames.ora for the External Procedure
- 18.2.4 Setting Up an mgw.ora Initialization File
- 18.2.5 Creating an Oracle Messaging Gateway Administrator User
- 18.2.6 Creating an Oracle Messaging Gateway Agent User
- 18.2.7 Configuring Oracle Messaging Gateway Connection Information
- 18.2.8 Configuring Oracle Messaging Gateway in an Oracle RAC Environment
- 18.3 Setting Up Non-Oracle Messaging Systems
- 18.4 Verifying the Oracle Messaging Gateway Setup
- 18.5 Unloading Oracle Messaging Gateway
- 18.6 Understanding the mgw.ora Initialization File
-
19
Working with Oracle Messaging Gateway
- 19.1 Configuring the Oracle Messaging Gateway Agent
- 19.2 Starting and Shutting Down the Oracle Messaging Gateway Agent
- 19.3 Configuring Messaging System Links
- 19.4 Configuring Non-Oracle Messaging System Queues
- 19.5 Configuring Oracle Messaging Gateway Propagation Jobs
- 19.6 Propagation Jobs, Subscribers, and Schedules
- 19.7 Configuration Properties
- 20 Oracle Messaging Gateway Message Conversion
- 21 Monitoring Oracle Messaging Gateway
- A Nonpersistent Queues
- B Oracle JMS and Oracle AQ XML Servlet Error Messages
- Glossary
- Index