Advanced Queuing provides database-integrated message queuing functionality that allows asynchronous communication between applications. It allows producers to ENQUEUE messages into queues and consumers to DEQUEUE messages. Key features include persistence of messages, propagation between queues, priority ordering of messages, transformation of message formats, and access control. The document provides an overview of these features and how to configure and use Advanced Queuing through PL/SQL interfaces and APIs.
Oracle REST Data Services Best Practices/ OverviewKris Rice
This slide deck goes over the basic architecture of Oracle REST Data Services. It also points out various features to enable to make the best use of the product to safely enable an Oracle Database for RESTful access.
Over the years there have been countless technical and social presentations doting on 5, 10, 12 ways to improve this, that and the other.
I will go through various performance tweaks (not tweets) for Oracle Application Express without limiting myself to a golden number.
These improvements will vary from simple PL/SQL refactoring; to monitoring for bottlenecks in your application; to cutting down maintenance time - which relates to the performance of you as an Oracle developer with only 24 hours in a day.
We may even visit a little APEX instrumentation on the way.
Oracle REST Data Services Best Practices/ OverviewKris Rice
This slide deck goes over the basic architecture of Oracle REST Data Services. It also points out various features to enable to make the best use of the product to safely enable an Oracle Database for RESTful access.
Over the years there have been countless technical and social presentations doting on 5, 10, 12 ways to improve this, that and the other.
I will go through various performance tweaks (not tweets) for Oracle Application Express without limiting myself to a golden number.
These improvements will vary from simple PL/SQL refactoring; to monitoring for bottlenecks in your application; to cutting down maintenance time - which relates to the performance of you as an Oracle developer with only 24 hours in a day.
We may even visit a little APEX instrumentation on the way.
PL/SQL developers (as well as DBAs and many others involved) typically are uncertain what SOA means to them. They feel overwhelmed by a avalanche of acronyms. Yet they see it coming and instead of being surprised or bypassed, this session allows them to start participating and benefiting themselves. This session introduces SOA and the Oracle SOA Suite 11g to the realm of the PL/SQL developer - from which it sometimes seems so far removed. What are the key SOA concepts and objectives - what's the buzz about? What is at the heart of SOA Suite 11g: Composite Applications, BPEL PM and the Mediator.
The presentation demonstrates how SOA Services can be leveraged from the database – from Triggers and PL/SQL applications and how the database can publish events to the Event Delivery Network. It demonstrates how the SOA infrastructure can access the database, primarily using the Database Adapter – and how database developers can be instrumental in efficiently doing so. It concludes with some hints for applying SOA concepts for 'normal' database development.
This is one of the 15 minute "TED" style talk presented as part of the Database Symposium at the ODTUG Kscope18 conference. In this presentation @SQLMaria coveres topics like what data type you should use to store JSON documents (varchar2, clob or blob) the pro's and con's of using an IS JSON check constraint, and how to load, index, and query JSON documents.
This is a recording of my Advanced Oracle Troubleshooting seminar preparation session - where I showed how I set up my command line environment and some of the main performance scripts I use!
Any DBA from beginner to advanced level, who wants to fill in some gaps in his/her knowledge about Performance Tuning on an Oracle Database, will benefit from this workshop.
Oracle REST Data Services: Options for your Web ServicesJeff Smith
ORDS has many options when it comes to delivering web services for your Oracle Database. We have an Automatic feature for your database objects where we handle everything for you. Or, you can write your own services with your SQL & PL/SQL. This slide deck shows exactly what you have to choose from for your applications.
Oracle Database Vault has been on the market for a few years now. The product has been constantly improved over the years. But where is it worthwhile to use it? Which security measures can be implemented with it? And from whom does DB Vault protect me at all? In this presentation, the technical possibilities of Database Vault 19c / 21c will be explained in addition to the experiences from two customer projects. We will try to show where the use of Database Vault is worthwhile under certain circumstances and under which conditions it is not. This also includes whether protection against snakes and thieves is ensured. PS: I asked my children what kind of presentation I should submit.The answers were snakes, thieves and cheetahs…
Agenda:
Architectural Overview
Presentation to the Client
Presentation to the Server/DB
High Availability and Disaster Recovery
Extended Architecture
Setup / Installation
Tests
Use cases
Perspective 12c
Oracle REST data service is a powerful utility to publish an Oracle database into a REST based webservice. This presentation will focus on basic installation of ORDS in a Tomcat server, PLSQL apis for publishing a REST service and securing the REST endpoints
SQLcl overview - A new Command Line Interface for Oracle DatabaseJeff Smith
From the makers of Oracle SQL Developer, we present you a new take on SQL*Plus. A command line interface with a SQL history, table name completion, new commands like CTAS, DDL, Info, and simple things like editing your statement buffers using your keyboard up and down arrow keys!
PL/SQL developers (as well as DBAs and many others involved) typically are uncertain what SOA means to them. They feel overwhelmed by a avalanche of acronyms. Yet they see it coming and instead of being surprised or bypassed, this session allows them to start participating and benefiting themselves. This session introduces SOA and the Oracle SOA Suite 11g to the realm of the PL/SQL developer - from which it sometimes seems so far removed. What are the key SOA concepts and objectives - what's the buzz about? What is at the heart of SOA Suite 11g: Composite Applications, BPEL PM and the Mediator.
The presentation demonstrates how SOA Services can be leveraged from the database – from Triggers and PL/SQL applications and how the database can publish events to the Event Delivery Network. It demonstrates how the SOA infrastructure can access the database, primarily using the Database Adapter – and how database developers can be instrumental in efficiently doing so. It concludes with some hints for applying SOA concepts for 'normal' database development.
This is one of the 15 minute "TED" style talk presented as part of the Database Symposium at the ODTUG Kscope18 conference. In this presentation @SQLMaria coveres topics like what data type you should use to store JSON documents (varchar2, clob or blob) the pro's and con's of using an IS JSON check constraint, and how to load, index, and query JSON documents.
This is a recording of my Advanced Oracle Troubleshooting seminar preparation session - where I showed how I set up my command line environment and some of the main performance scripts I use!
Any DBA from beginner to advanced level, who wants to fill in some gaps in his/her knowledge about Performance Tuning on an Oracle Database, will benefit from this workshop.
Oracle REST Data Services: Options for your Web ServicesJeff Smith
ORDS has many options when it comes to delivering web services for your Oracle Database. We have an Automatic feature for your database objects where we handle everything for you. Or, you can write your own services with your SQL & PL/SQL. This slide deck shows exactly what you have to choose from for your applications.
Oracle Database Vault has been on the market for a few years now. The product has been constantly improved over the years. But where is it worthwhile to use it? Which security measures can be implemented with it? And from whom does DB Vault protect me at all? In this presentation, the technical possibilities of Database Vault 19c / 21c will be explained in addition to the experiences from two customer projects. We will try to show where the use of Database Vault is worthwhile under certain circumstances and under which conditions it is not. This also includes whether protection against snakes and thieves is ensured. PS: I asked my children what kind of presentation I should submit.The answers were snakes, thieves and cheetahs…
Agenda:
Architectural Overview
Presentation to the Client
Presentation to the Server/DB
High Availability and Disaster Recovery
Extended Architecture
Setup / Installation
Tests
Use cases
Perspective 12c
Oracle REST data service is a powerful utility to publish an Oracle database into a REST based webservice. This presentation will focus on basic installation of ORDS in a Tomcat server, PLSQL apis for publishing a REST service and securing the REST endpoints
SQLcl overview - A new Command Line Interface for Oracle DatabaseJeff Smith
From the makers of Oracle SQL Developer, we present you a new take on SQL*Plus. A command line interface with a SQL history, table name completion, new commands like CTAS, DDL, Info, and simple things like editing your statement buffers using your keyboard up and down arrow keys!
Spring Integration is a EIP Pattern implementation framework. You can easily do some messaging operations declaratively.
EIP + dependency injection + method invocation
event driven architecture
low coupling and high cohesion
pipes-and-filters architectural design
Big data conference europe real-time streaming in any and all clouds, hybri...Timothy Spann
Biography
Tim Spann is a Principal DataFlow Field Engineer at Cloudera where he works with Apache NiFi, MiniFi, Pulsar, Apache Flink, Apache MXNet, TensorFlow, Apache Spark, big data, the IoT, machine learning, and deep learning. Tim has over a decade of experience with the IoT, big data, distributed computing, streaming technologies, and Java programming. Previously, he was a senior solutions architect at AirisData and a senior field engineer at Pivotal. He blogs for DZone, where he is the Big Data Zone leader, and runs a popular meetup in Princeton on big data, the IoT, deep learning, streaming, NiFi, the blockchain, and Spark. Tim is a frequent speaker at conferences such as IoT Fusion, Strata, ApacheCon, Data Works Summit Berlin, DataWorks Summit Sydney, and Oracle Code NYC. He holds a BS and MS in computer science.
Talk
Real-Time Streaming in Any and All Clouds, Hybrid and Beyond
Today, data is being generated from devices and containers living at the edge of networks, clouds and data centers. We need to run business logic, analytics and deep learning at the scale and as events arrive.
Tools:
Apache Flink, Apache Pulsar, Apache NiFi, MiNiFi, DJL.ai Apache MXNet.
References:
https://www.datainmotion.dev/2019/11/introducing-mm-flank-apache-flink-stack.html
https://www.datainmotion.dev/2019/08/rapid-iot-development-with-cloudera.html
https://www.datainmotion.dev/2019/09/powering-edge-ai-for-sensor-reading.html
https://www.datainmotion.dev/2019/05/dataworks-summit-dc-2019-report.html
https://www.datainmotion.dev/2019/03/using-raspberry-pi-3b-with-apache-nifi.html
Source Code: https://github.com/tspannhw/MmFLaNK
FLiP Stack
StreamNative
Complete Architecture and Development Guide To Windows Communication Foundati...Abdul Khan
This is Complete Architecture and Development Guide To Windows Communication Foundation (WCF) for building service-oriented applications. It enables architect to quickly in understand WCF and developers to build secure, reliable, transacted solutions that integrate across platforms and interoperate with existing investments.
A distributed system is a collection of computational and storage devices connected through a communications network. In this type of system, data, software, and users are distributed.
IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...Peter Broadhurst
An introduction to one possible MQ architecture - an active/active multiple queue manager client<->server environment.
Summary of detailed topology articles available here:
http://ow.ly/vrUUV
And MQDev blog+discussion on client attachment here:
http://ibm.co/MM8rMl
WSO2Con USA 2015: WSO2 Integration Platform Deep DiveWSO2
The world has become a system of connected components. Whether you are going to have breakfast at your favourite restaurant, watch a movie or book a sports event, everything is connected to provide you the best service. Connecting or integrating different systems has been a challenge for the IT industry for the last decade and it will be the same for coming decades. WSO2 provides the world’s fastest open source integration solution – the WSO2 ESB – to connect heterogeneous systems with each other.
This tutorial focuses on
- An in-depth knowledge of the high performance integration platform
- Its upcoming features
- Customer use cases to give you real life insights into the capabilities of the product
- It’s effect on your business
A peek into the middle of the enterprise software architecture stack.
A curtain raiser into the middleware of the software technology stack. Showcases Types of middleware, configuration possibilities, high level components, features, messaging models, deployment,
Creating ESS Jobs for Oracle Fusion BIP ReportsGurpreet singh
Topics:
1. Introduction to ESS Jobs
2. Creating ESS Jobs for Fusion BIP Reports
3. Running the ESS Job
In Oracle Fusion Cloud, an Enterprise Scheduler Service (ESS) job is a scheduled process that automates the execution of various business processes and tasks. ESS jobs enable users to manage, schedule, and monitor the execution of these processes without manual intervention, ensuring that tasks are performed consistently and on time.
Types of ESS Jobs: Predefined & Custom ESS Jobs
This will show all the steps to create Data Model and ESS Job for the BIP Report in Oracle Fusion Cloud
It covers:
Why Messaging System? – Problems without Messaging system
What is a Messaging System?
Types of Messaging Systems
Examples of Messaging Systems
Understanding Flex Fields with Accounting Flexfields(Chart of Accounts) in O...Gurpreet singh
A flexfield is a flexible data field that your organization can customize to your business needs without programming.
A flexfield is a field which is made up of subfields or segments.
A flexfield appears on your form as a popup window that contains a prompt for each segment. Each segment has a name and a set of valid values.
Also covers how to create custom Key Flexfield
***First Half***
Introduction to Oracle Fusion Middleware and Oracle ADF
Getting started with JDeveloper
Building a Business Model with ADF Business Components
Querying and persisting data
Exposing Data
Declaratively Customizing Data Services
Programmatically Customizing Data Services
Validating User Inputs
***Second Half***
Understanding UI Technology
Binding UI Components to Data
Planning the User Interface
Passing values between UI Elements
Responding to Application Events
Implementing Transactional Capabilities
An SQL JOIN clause combines columns from one or more tables in a relational database. It creates a set that can be saved as a table or used as it is. A JOIN is a means for combining columns from one (self-table) or more tables by using values common to each.
Constraints are the rules enforced on the data columns of a table. These are used to limit the type of data that can go into a table. This ensures the accuracy and reliability of the data in the database.
Constraints can be divided into following two types:
Column level constraints : limits only column data
Table level constraints : limits whole table data
Aggregate Functions
Generic programming is a style of computer programming in which algorithms are written in terms of types to-be-specified-later that are then instantiated when needed for specific types provided as parameters.
Generics are a facility of generic programming that were added to the Java programming language in 2004 within version J2SE 5.0. They were designed to extend Java's type system to allow “a type or method to operate on objects of various types while providing compile-time type safety”
The Java collections framework supports generics to specify the type of objects stored in a collection instance.
In computer science, a stream is a sequence of data elements made available over time. A stream can be thought of as items on a conveyor belt being processed one at a time rather than in large batches.
Streams are processed differently from batch data :
*Normal functions cannot operate on streams as a whole, as they have potentially unlimited data, and formally
*Streams are codata (potentially unlimited), not data (which is finite).
This contains:
*Getting started with New Dynamic Web Project
*Starting the tomcat server
*Running your project
*Changing the context root
*Changing welcome pages of your website
A business group is the highest level of organization and the largest grouping of employees across which you may report. A Business Group holds a complete, self-contained set of information on work structures, remuneration policies and employees. Each Business Group can have just one particular set of segments defined for its Job, Position, Grade, Employee Group and Cost Allocation key flex fields.
A business group is a basically Human Resources organization to which you assign employees. You assign each operating unit to a business group in the financial options setup. You can assign the same business group to different operating units including to operating units in different financial sets of books. You can setup a separate business group for each operating unit if you want to segregate and maintain each group of employees separately. Oracle provides one setup business group you can use.
Locations are shared across Business Groups in HRMS and with two other Oracle applications: Inventory and Purchasing. HRMS does not use some of the fields in the Location window. These fields are disabled for HRMS users. For example, the Legal Address check box is read-only and supports future functionality in Oracle Financials.
By default, the “Approvals Management Administrator” and “Approvals Management Business Analyst” responsibilities do not have any functions associated with them, because their access is restricted by Role Based Access Control (RBAC).
So we need to assign role AME_BUS_ANALYST to user
An operator is a symbol that tells the compiler to perform specific mathematical or logical manipulation. PL/SQL language is rich in built-in operators
What is PL/SQL?
PL/SQL (Procedural Language/Structured Query Language) is Oracle Corporation's procedural extension for SQL and the Oracle relational database. PL/SQL is available in Oracle Database (since version 7).
PL/SQL (Procedural Language extensions to SQL) is designed specifically for the seamless processing of SQL commands. PL/SQL stored and compiled in the database, runs within the Oracle executable and inherits the robustness, security, and portability of the Oracle Database.
Features of PL/SQL
Syntax of PL/SQL
Using comments
Variable Declaration
Printing messages
Sample Program
A data flow diagram (DFD) is a graphical representation of the "flow" of data through an information system, modeling its process aspects.
Why DFD technique is so Popular?
Symbols used in DFD
Constructing DFD Models
Data Dictionary
Developing the DFD model of System
Level O DFD or Context Diagram
Level 1 DFD
Strengths of DFD Model
Weaknesses of DFD Model
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
2. OVERVIEW
2 Oracle Advanced Queuing
• What Is Advanced Queuing?
• General Features of Advanced Queuing
• Enqueue Features
• Dequeue Features
• Propagation Features
• Elements of Advanced Queuing
• Using PL/SQL to Access AQ
• DBMS_AQ
• Data Structures for DBMS_AQ
• Summary of DBMS_AQ Subprograms
• DBMS_AQADM
• Summary of DBMS_AQADM Subprograms
• Setting up data structure
• Creating a Queue Table and Queue of Object Type
• Creating a Queue Table and Queue of Raw Type
• Creating a Prioritized Message Queue Table and Queue
• Creating a Multiconsumer Queue Table and Queue
• Creating a Queue to Demonstrate Propagation
• Enqueuing of Object Type Messages Using PL/SQL
3. OVERVIEW
3 Oracle Advanced Queuing
• DEqueuing of Object Type Messages Using PL/SQL
• Enqueuing of RAW Type Messages Using PL/SQL
• DEqueuing of RAW Type Messages Using PL/SQL
• Enqueuing of Messages by Priority Using PL/SQL
• DEqueuing of Messages by Priority Using PL/SQL
• Enqueuing of Messages with Time Delay and Expiration Using PL/SQL
• Enqueuing and Dequeuing of Messages to/from a Multiconsumer Queue Using PL/SQL
• Managing Propagation From One Queue To Other Queues In The Same Database Using PL/SQL
• Manage Propagation From One Queue To Other Queues In Another Database Using PL/SQL
• Unscheduling Propagation Using PL/SQL
• Dropping AQ Objects
• Revoking Roles and Privileges
4. MESSAGING & QUEUING
4 Oracle Advanced Queuing
An essential part of Distributed Application Development (DAD)
A key piece of a middle-ware known as Message-Oriented
Middleware (MOM)
Motto: Every DAD needs a MOM
5. WHAT DOES MOM PROVIDE?
5 Oracle Advanced Queuing
Time-independent responses in a client/server environment
Help in passing information between servers and clients
A facility that allows general-purpose messages to be
exchanged in a client/server system using message queues
6. WHAT IS ADVANCED QUEUING?
6 Oracle Advanced Queuing
Oracle Advance Queuing is Oracle’s message queuing facility
Available as of Oracle 8.0.3
First database-integrated messaging system in the industry
7. WHAT IS ADVANCED QUEUING?
7 Oracle Advanced Queuing
When Web-based business applications communicate with each other, producer
applications ENQUEUE messages and consumer applications DEQUEUE messages.
Advanced Queuing provides database-integrated message queuing functionality.
Advanced Queuing leverages the functions of the Oracle database so that messages
can be stored persistently, propagated between queues on different machines and
databases, and transmitted using Oracle Net Services, HTTP(S), and SMTP.
9. WHAT IS ADVANCED QUEUING?
9 Oracle Advanced Queuing
Advanced Queuing provides the message management functionality and
asynchronous communication needed for application integration. In an integrated
environment, messages travel between the Oracle database server and the
applications and users, as shown in Figure. Using Oracle Net Services, messages are
exchanged between a client and the Oracle database server or between two Oracle
databases. Oracle Net Services also propagates messages from one Oracle queue to
another.
10. WHAT IS ADVANCED QUEUING?
10 Oracle Advanced Queuing
You can access Advanced Queuing functionality through the following interfaces:
PL/SQL using DBMS_AQ, DBMS_AQADM, and DBMS_AQELM.
Visual Basic using Oracle Objects for OLE.
Java using the oracle.AQ Java package.
Java Message Service (JMS) using the oracle.jms Java package.
Internet access using HTTP, HTTPS, and SMTP
Advanced Queuing exhibits high performance characteristics as measured by the
following metrics:
Number of messages enqueued/dequeued per second
Time to evaluate a complex query on a message warehouse
Time to recover/restart the messaging process after a failure
Queuing systems must be scalable. Advanced Queuing exhibits high performance as
the number of programs using the application increases, as the number of messages
increases, and as the size of the message warehouse increases.
11. GENERAL FEATURES OF ADVANCED QUEUING
11 Oracle Advanced Queuing
Nonrepudiation and the AQ$<QueueTableName> View
Point-to-Point and Publish-Subscribe Messaging
Oracle Internet Directory
Oracle Enterprise Manager Integration
Message Format Transformation
SQL Access
Support for Statistics Views
Structured Payloads
Retention and Message History
Tracking and Event Journals
Queue-Level Access Control
Nonpersistent Queues
Support for Oracle9i Real Application Clusters
XMLType Payloads
12. NONREPUDIATION AND THE AQ$<QUEUETABLENAME>
VIEW
12 Oracle Advanced Queuing
Advanced Queuing maintains the entire history of information about a message along with the message
itself. You can look up history information by using the AQ$<QueueTableName> view. This information
serves as the proof of sending and receiving of messages and can be used for nonrepudiation of the
sender and nonrepudiation of the receiver.
The following information is kept at enqueue for nonrepudiation of the enqueuer:
AQ agent doing the enqueue
Enqueue time
Transaction ID of the transaction doing the enqueue
The following information is kept at dequeue for nonrepudiation of the dequeuer:
AQ agent doing dequeue
Dequeue time
Transaction ID of the transaction doing dequeue
After propagation, the Original_Msgid field in the destination queue of propagation corresponds to the
message ID of the source message. This field can be used to correlate the propagated messages. This is
useful for nonrepudiation of the dequeuer of propagated messages.
Stronger nonrepudiation can be achieved by enqueuing the digital signature of the sender at the time of
enqueue with the message and by storing the digital signature of the dequeuer at the time of dequeue.
13. POINT-TO-POINT AND PUBLISH-SUBSCRIBE
MESSAGING
13 Oracle Advanced Queuing
A combination of features allows publish-subscribe messaging between applications. These features
include rule-based subscribers, message propagation, the listen feature, and notification capabilities.
Advanced Queuing sends and receives messages in the following ways:
Point-to-Point
Publish-Subscribe
Point-to-Point
A point-to-point message is aimed at a specific target. Senders and receivers decide on a common queue
in which to exchange messages. Each message is consumed by only one receiver. Each application has its
own message queue, known as a single-consumer queue.
Publish-Subscribe
A publish-subscribe message can be consumed by multiple receivers. Publish-subscribe messaging has a
wide dissemination mode--broadcast--and a more narrowly aimed mode--multicast, also called point-to-
multipoint.
Broadcasting is the equivalent of a radio station not knowing exactly who the audience is for a given
program. The dequeuers are subscribers to multiconsumer queues In contrast, multicast is the same as a
magazine publisher who knows who the subscribers are. Multicast is also referred to as point-to-
multipoint because a single publisher sends messages to multiple receivers, called recipients, who may or
may not be subscribers to the queues that serve as exchange mechanisms.
14. ORACLE INTERNET DIRECTORY
14 Oracle Advanced Queuing
Oracle Internet Directory is a native LDAPv3 directory service built on the Oracle database that centralizes
a wide variety of information, including e-mail addresses, telephone numbers, passwords, security
certificates, and configuration data for many types of networked devices. You can look up enterprise-wide
queuing information--queues, subscriptions, and events--from one location, the Oracle Internet Directory.
15. ORACLE ENTERPRISE MANAGER INTEGRATION
15 Oracle Advanced Queuing
You can use Enterprise Manager to do the following:
Create and manage queues, queue tables, propagation schedules, and transformations
Monitor your AQ environment using the AQ topology at the databse and queue levels, and by viewing
queue errors and queue and session statistics.
16. MESSAGE FORMAT TRANSFORMATION
16 Oracle Advanced Queuing
The message format transformation feature supports applications that use data in different formats. A
transformation defines a mapping from one Oracle data type to another. The transformation is
represented by a SQL function that takes the source data type as input and returns an object of the target
data type.
A transformation can be specified as follows:
• During enqueue, to transform the message to the correct type before inserting it into the queue.
You can convert a message to the payload type of the queue at enqueue time. Thus, the type of
the message to be enqueued need not match the payload type of the queue.
• During dequeue, to receive the message in the desired format
A message can be transformed to the desired format before returning it to the dequeuer.
• By a remote subscriber, who can choose to receive a message in a format different from the format of
the source queue
Before propagating the message to the remote subscriber, the message is transformed
according to the transformation that the remote subscriber specified when subscribing to the
queue.
Following figure shows, queuing, routing, and transformation are essential building blocks to an integrated
application architecture. The figure shows how data from the Out queue of a CRM application is routed
and transformed in the integration hub and then propagated to the In queue of the Web application. The
transformation engine maps the message from the format of the Out queue to the format of the In queue.
17. SQL ACCESS
17 Oracle Advanced Queuing
Messages are placed in normal rows in a database table, and so can be queried using standard SQL. This
means that you can use SQL to access the message properties, the message history, and the payload. With
SQL access you can also do auditing and tracking. All available SQL technology, such as indexes, can be
used to optimize access to messages.
select * from aq.aq$objmsgs80_qtab
18. SUPPORT FOR STATISTICS VIEWS
18 Oracle Advanced Queuing
Basic statistics about queues are available using the GV$AQ view.
select * from GV$AQ
19. STRUCTURED PAYLOADS
19 Oracle Advanced Queuing
You can use object types to structure and manage message payloads. RDBMSs in general have a richer
typing system than messaging systems. Since Oracle is an object-relational DBMS, it supports both
traditional relational types as well as user-defined types. Many powerful features are enabled as a result
of having strongly typed content, such as content whose format is defined by an external type system.
These include:
Content-based routing: Advanced Queuing can examine the content and automatically route the
message to another queue based on the content.
Content-based subscription: a publish and subscribe system is built on top of a messaging system so
that you can create subscriptions based on content.
Querying: the ability to execute queries on the content of the message enables message warehousing.
CREATE type aq.Message_typ as
object (
subject VARCHAR2(30),
text VARCHAR2(80));
20. RETENTION AND MESSAGE HISTORY
20 Oracle Advanced Queuing
The systems administrator specifies the retention duration to retain messages after consumption.
Advanced Queuing stores information about the history of each message, preserving the queue and
message properties of delay, expiration, and retention for messages destined for local or remote receivers.
The information contains the enqueue and dequeue times and the identification of the transaction that
executed each request. This allows users to keep a history of relevant messages. The history can be used
for tracking, data warehouse, and data mining operations, as well as specific auditing functions.
select * from dba_queues where qid=14140
21. TRACKING AND EVENT JOURNALS
21 Oracle Advanced Queuing
If messages are retained, they can be related to each other. For example, if a message m2 is produced as a
result of the consumption of message m1, m1 is related to m2. This allows users to track sequences of
related messages. These sequences represent event journals, which are often constructed by applications.
Advanced Queuing is designed to let applications create event journals automatically.
When an online order is placed, multiple messages are generated by the various applications involved in
processing the order. Advanced Queuing offers features to track interrelated messages independent of the
applications that generated them. You can determine who enqueued and dequeued messages, who the
users are, and who did what operations.
With Advanced Queuing tracking features, you can use SQL SELECT and JOIN statements to get order
information from AQ$QUETABLENAME and the views ENQ_TRAN_ID, DEQ_TRAN_ID, USER_DATA (the
payload), CORR_ID, and MSG_ID. These views contain the following data used for tracking:
Transaction IDs--from ENQ_TRAN_ID and DEQ_TRAN_ID, captured during enqueuing and dequeuing.
Correlation IDs--from CORR_ID, part of the message properties
Message content that can be used for tracking--USER_DATA
22. QUEUE-LEVEL ACCESS CONTROL
22 Oracle Advanced Queuing
The owner of an queue can grant or revoke queue-level privileges on the queue. Database administrators
can grant or revoke new AQ system-level privileges to any database user. Database administrators can also
make any database user an AQ administrator.
23. NONPERSISTENT QUEUES
23 Oracle Advanced Queuing
Advanced Queuing can deliver nonpersistent messages asynchronously to subscribers. These messages
can be event-driven and do not persist beyond the failure of the system (or instance). Advanced Queuing
supports persistent and nonpersistent messages with a common API.
A message in a nonpersistent queue is not stored in a database table. You create a nonpersistent queue,
which can be either a single-consumer or multiconsumer type. These queues are created in a system-
created queue table (AQ$_MEM_SC for single-consumer queues and AQ$_MEM_MC for multiconsumer
queues) in the schema specified by the create_np_queue command. Subscribers can be added to the
multiconsumer queues. Nonpersistent queues can be destinations for propagation.
You use the enqueue interface to enqueue messages into a nonpersistent queue in the normal way. You
can enqueue RAW and Object Type (ADT) messages into a nonpersistent queue. You retrieve messages
from a nonpersistent queue through the asynchronous notification mechanism, registering for the
notification (using LNOCISubcriptionRegister or DBMS_AQADM.REGISTER) for the queues you are
interested in.
When a message is enqueued into a queue, it is delivered to clients with active registrations for the queue.
The messages are published to the interested clients without incurring the overhead of storing them in the
database.
24. XMLTYPE PAYLOADS
24 Oracle Advanced Queuing
You can create queues that use the new opaque type, XMLType. These queues can be used to transmit and
store messages that are XML documents. Using XMLType, you can do the following:
Store any type of message in a queue
Store documents internally as CLOBs
Store more than one type of payload in a queue
Query XMLType columns using the operators ExistsNode() and SchemaMatch()
Specify the operators in subscriber rules or dequeue conditions
25. ENQUEUE FEATURES
25 Oracle Advanced Queuing
Correlation Identifiers
Subscription and recipient lists
Priority and ordering of messages in Enqueuing
Message grouping
Propagation
Sender Identification
Time specification and scheduling
Asynchronous notification
26. CORRELATION IDENTIFIERS
26 Oracle Advanced Queuing
Users can assign an identifier to each message, thus providing a means to retrieve specific messages at a
later time.
27. SUBSCRIPTION AND RECIPIENT LISTS
27 Oracle Advanced Queuing
A single message can be designed to be consumed by multiple consumers. A queue administrator can
specify the list of subscribers who can retrieve messages from a queue. Different queues can have
different subscribers, and a consumer program can be a subscriber to more than one queue. Further,
specific messages in a queue can be directed toward specific recipients who may or may not be
subscribers to the queue, thereby overriding the subscriber list.
You can design a single message for consumption by multiple consumers in a number of different ways.
The consumers who are allowed to retrieve the message are specified as explicit recipients of the message
by the user or application that enqueues the message. Every explicit recipient is an agent identified by
name, address, and protocol.
A queue administrator may also specify a default list of recipients who can retrieve all the messages from a
specific queue. These implicit recipients become subscribers to the queue by being specified in the default
list. If a message is enqueued without specifying any explicit recipients, the message is delivered to all the
designated subscribers.
A rule-based subscriber is one that has a rule associated with it in the default recipient list. A rule-based
subscriber will be sent a message with no explicit recipients specified only if the associated rule evaluated
to TRUE for the message. Different queues can have different subscribers, and the same recipient can be a
subscriber to more than one queue. Further, specific messages in a queue can be directed toward specific
recipients who may or may not be subscribers to the queue, thereby overriding the subscriber list.
28. PRIORITY AND ORDERING OF MESSAGES IN
ENQUEUING
28 Oracle Advanced Queuing
It is possible to specify the priority of the enqueued message. An enqueued message can also have its
exact position in the queue specified. This means that users have three options to specify the order in
which messages are consumed:
(a) a sort order specifies which properties are used to order all message in a queue;
(b) a priority can be assigned to each message;
(c) a sequence deviation allows you to position a message in relation to other messages.
Further, if several consumers act on the same queue, a consumer will get the first message that is available
for immediate consumption. A message that is in the process of being consumed by another consumer will
be skipped.
29. MESSAGE GROUPING
29 Oracle Advanced Queuing
Messages belonging to one queue can be grouped to form a set that can only be consumed by one user at
a time. This requires that the queue be created in a queue table that is enabled for message grouping. All
messages belonging to a group have to be created in the same transaction and all messages created in one
transaction belong to the same group. This feature allows users to segment complex messages into simple
messages; for example, messages directed to a queue containing invoices can be constructed as a group of
messages starting with the header message, followed by messages representing details, followed by the
trailer message.
30. PROPAGATION
30 Oracle Advanced Queuing
This feature enables applications to communicate with each other without having to be connected to the
same database or the same queue. Messages can be propagated from one Oracle AQ to another,
irrespective of whether the queues are local or remote. Propagation is done using database links and
Oracle Net Services.
31. SENDER IDENTIFICATION
31 Oracle Advanced Queuing
Applications can mark the messages they send with a custom identification. Oracle also automatically
identifies the queue from which a message was dequeued. This allows applications to track the pathway of
a propagated message or a string messages within the same database.
32. TIME SPECIFICATION AND SCHEDULING
32 Oracle Advanced Queuing
Delay interval or expiration intervals can be specified for an enqueued message, thereby providing
windows of execution. A message can be marked as available for processing only after a specified time
elapses (a delay time) and has to be consumed before a specified time limit expires.
33. ASYNCHRONOUS NOTIFICATION
33 Oracle Advanced Queuing
The asynchronous notification feature allows clients to receive notification of a message of interest. The
client can use it to monitor multiple subscriptions. The client does not have to be connected to the
database to receive notifications regarding its subscriptions.
Clients can use the OCI function, LNOCISubcriptionRegister, or the PL/SQL procedure DBMS_AQ.REGISTER
to register interest in messages in a queue.
34. DEQUEUE FEATURES
34 Oracle Advanced Queuing
Recipients
Navigation of Messages in Dequeuing
Modes of Dequeuing
Optimization of Waiting for the Arrival of Messages
Retries with Delays
Optional Transaction Protection
Exception Handling
Listen Capability (Wait on Multiple Queues)
Dequeue Message Header with No Payload
35. RECIPIENTS
35 Oracle Advanced Queuing
A message can be retrieved by multiple recipients without the need for multiple copies of the same
message.
Designated recipients can be located locally or at remote sites.
36. NAVIGATION OF MESSAGES IN DEQUEUING
36 Oracle Advanced Queuing
Users have several options to select a message from a queue. They can select the first message or once
they have selected a message and established a position, they can retrieve the next. The selection is
influenced by the ordering or can be limited by specifying a correlation identifier. Users can also retrieve a
specific message using the message identifier.
37. MODES OF DEQUEUING
37 Oracle Advanced Queuing
A DEQUEUE request can either browse or remove a message. If a message is browsed, it remains available
for further processing. If a message is removed, it is not available more for DEQUEUE requests. Depending
on the queue properties, a removed message may be retained in the queue table. Specified as
DEQUEUE_OPTIONS_T Attributes
38. OPTIMIZATION OF WAITING FOR THE ARRIVAL OF
MESSAGES
38 Oracle Advanced Queuing
A DEQUEUE can be issued against an empty queue. To avoid polling for the arrival of a new message, a
user can specify if and for how long the request is allowed to wait for the arrival of a message.
39. RETRIES WITH DELAYS
39 Oracle Advanced Queuing
A message must be consumed exactly once. If an attempt to dequeue a message fails and the transaction
is rolled back, the message will be made available for reprocessing after some user-specified delay elapses.
Reprocessing will be attempted up to the user-specified limit.
40. OPTIONAL TRANSACTION PROTECTION
40 Oracle Advanced Queuing
ENQUEUE and DEQUEUE requests are normally part of a transaction that contains the requests, thereby
providing the desired transactional behavior. You can, however, specify that a specific request is a
transaction by itself, making the result of that request immediately visible to other transactions. This
means that messages can be made visible to the external world as soon as the ENQUEUE or DEQUEUE
statement is issued or after the transaction is committed.
41. EXCEPTION HANDLING
41 Oracle Advanced Queuing
A message may not be consumed within given constraints, such as within the window of execution or
within the limits of the retries. If such a condition arises, the message will be moved to a user-specified
exception queue.
SELECT * FROM SYS.ALL_QUEUES
42. DEQUEUE MESSAGE HEADER WITH NO PAYLOAD
42 Oracle Advanced Queuing
The dequeue mode REMOVE_NODATA can be used to remove a message from a queue without retrieving
the payload. Use this mode to delete a message with a large payload whose content is irrelevant.
43. PROPAGATION FEATURES
43 Oracle Advanced Queuing
Automated Coordination of Enqueuing and Dequeuing
Propagation of Messages with LOBs
Propagation Scheduling
Enhanced Propagation Scheduling Capabilities
Third-Party Support
44. AUTOMATED COORDINATION OF ENQUEUING AND
DEQUEUING
44 Oracle Advanced Queuing
Recipients can be local or remote. Because Oracle does not support distributed object types, remote
enqueuing or dequeuing using a standard database link does not work. However, you can use AQ message
propagation to enqueue to a remote queue. For example, you can connect to database X and enqueue the
message in a queue, DROPBOX, located in database X. You can configure AQ so that all messages
enqueued in DROPBOX will be automatically propagated to another queue in database Y, regardless of
whether database Y is local or remote. AQ will automatically check if the type of the remote queue in
database Y is structurally equivalent to the type of the local queue in database X and propagate the
message.
Recipients of propagated messages can be applications or queues. If the recipient is a queue, the actual
recipients are determined by the subscription list associated with the recipient queue. If the queues are
remote, messages are propagated using the specified database link. Only AQ-to-AQ message propagation
is supported.
45. PROPAGATION OF MESSAGES WITH LOBS
45 Oracle Advanced Queuing
Propagation handles payloads with LOB attributes.
46. PROPAGATION SCHEDULING
46 Oracle Advanced Queuing
Messages can be scheduled to propagate from a queue to local or remote destinations. Administrators can
specify the start time, the propagation window, and a function to determine the next propagation window
(for periodic schedules).
47. ENHANCED PROPAGATION SCHEDULING
CAPABILITIES
47 Oracle Advanced Queuing
Detailed run-time information about propagation is gathered and stored in the DBA_QUEUE_SCHEDULES
view for each propagation schedule. This information can be used by queue designers and administrators
to fix problems or tune performance. For example, available statistics about the total and average number
of message/bytes propagated can be used to tune schedules. Similarly, errors reported by the view can be
used to diagnose and fix problems. The view also describes additional information such as the session ID
of the session handling the propagation, and the process name of the job queue process handling the
propagation.
select * from DBA_QUEUE_SCHEDULES
48. THIRD-PARTY SUPPORT
48 Oracle Advanced Queuing
AQ allows messages to be enqueued in queues that can then be propagated to different messaging
systems by third-party propagators. If the protocol number for a recipient is in the range 128 - 255, the
address of the recipient is not interpreted by AQ and so the message is not propagated by the AQ system.
Instead, a third-party propagator can then dequeue the message by specifying a reserved consumer name
in the dequeue operation. The reserved consumer names are of the form AQ$_P#, where # is the protocol
number in the range 128-255. For example, the consumer name AQ$_P128 can be used to dequeue
messages for recipients with protocol number 128. The list of recipients for a message with the specific
protocol number is returned in the recipient_list message property on dequeue.
Another way for Advanced Queuing to propagate messages to and from third-party messaging systems is
through Messaging Gateway, an Enterprise Edition feature of Advanced Queuing. Messaging Gateway
dequeues messages from an AQ queue and guarantees delivery to a third-party messaging system like
MQSeries. Messaging Gateway can also dequeue messages from third-party messaging systems and
enqueue them to an AQ queue
50. MESSAGE
50 Oracle Advanced Queuing
A message is the smallest unit of information inserted into and retrieved from a queue. A message consists
of the following:
Control information (metadata)
Payload (data)
The control information represents message properties used by AQ to manage messages. The payload
data is the information stored in the queue and is transparent to Oracle AQ. A message can reside in only
one queue. A message is created by the enqueue call and consumed by the dequeue call.
CREATE type aq.Message_typ as
object (
subject VARCHAR2(30),
text VARCHAR2(80));
51. QUEUE
51 Oracle Advanced Queuing
A queue is a repository for messages. There are two types of queues: user queues, also known as normal
queues, and exception queues. The user queue is for normal message processing. Messages are
transferred to an exception queue if they cannot be retrieved and processed for some reason. Queues can
be created, altered, started, stopped, and dropped by using the Oracle AQ administrative interfaces.
User queues can be persistent (the default) or nonpersistent queues. Persistent queues store messages in
database tables. These queues provide all the reliability and availability features of database tables.
Nonpersistent queues store messages in memory. They are generally used to provide an asynchronous
mechanism to send notifications to all users that are currently connected.
BEGIN
DBMS_AQADM.CREATE_QUEUE (
queue_name => 'Name of Queue',
queue_table => 'Name of Queue Table');
END;
52. QUEUE TABLE
52 Oracle Advanced Queuing
Queues are stored in queue tables. Each queue table is a database table and contains one or more queues.
Each queue table contains a default exception queue.
BEGIN
DBMS_AQADM.CREATE_QUEUE_TABLE (
queue_table => 'Name of Queue Table',
queue_payload_type => 'Name of Payload');
END;
53. AGENT
53 Oracle Advanced Queuing
An agent is a queue user. This can be an end user or an application. There are two types of agents:
Producers who place messages in a queue (enqueuing)
Consumers who retrieve messages (dequeuing)
An agent is identified by its name, address and protocol.
The name of the agent may be the name of the application or a name assigned by the application. A
queue may itself be an agent--enqueuing or dequeuing from another queue.
The address field is a character field of up to 1024 bytes that is interpreted in the context of the
protocol. For instance, the default value for the protocol is 0, signifying a database link addressing. In
this case, the address for this protocol is of the form [schema.]queue[@dblink].
where queue_name is of the form [schema.]queue and dblink may either be a fully qualified database link
name or the database link name without the domain name.
TYPE aq$_agent IS OBJECT (
name VARCHAR2(30),
address VARCHAR2(1024),
protocol NUMBER);
54. RECIPIENT
54 Oracle Advanced Queuing
The recipient of a message may be specified by its name only, in which case the recipient must dequeue
the message from the queue in which the message was enqueued. The recipient may be specified by
name and an address with a protocol value of 0. The address should be the name of another queue in the
same database or another Oracle database (identified by the database link) in which case the message is
propagated to the specified queue and can be dequeued by a consumer with the specified name. If the
recipient's name is NULL, the message is propagated to the specified queue in the address and can be
dequeued by the subscribers of the queue specified in the address. If the protocol field is nonzero, the
name and address are not interpreted by the system and the message can be dequeued by a special
consumer
55. RECIPIENT AND SUBSCRIPTION LISTS
55 Oracle Advanced Queuing
Multiple consumers can consume a single message:
The enqueuer can explicitly specify the consumers who may retrieve the message as recipients of the
message. A recipient is an agent identified by a name, address, and protocol.
A queue administrator can specify a default list of recipients who can retrieve messages from a queue.
The recipients specified in the default list are known as subscribers. If a message is enqueued without
specifying the recipients, the message is sent to all the subscribers.
Different queues can have different subscribers, and the same recipient can be a subscriber to more than
one queue. Further, specific messages in a queue can be directed toward specific recipients who may or
may not be subscribers to the queue, thereby overriding the subscriber list.
56. RULE
56 Oracle Advanced Queuing
A rule is used to define one or more subscribers' interest in subscribing to messages that conform to that
rule.
The messages that meet the rule criterion are delivered to the interested subscribers. A rule is specified as
a boolean expression (one that evaluates to true or false) using syntax similar to the WHERE clause of a
SQL query. The boolean expression can include conditions on the following:
Message properties (currently priority and correlation identifier)
User data properties (object payloads only)
Functions (as specified in the WHERE clause of a SQL query)
57. RULE-BASED SUBSCRIBERS
57 Oracle Advanced Queuing
A rule-based subscriber is a subscriber with associated rules in the default recipient list. If an associated
rule evaluates to TRUE for a message, the message is sent to the rule-based subscriber even if the
message has no specified recipients.
58. TRANSFORMATION
58 Oracle Advanced Queuing
A transformation defines a mapping from one Oracle data type to another. The transformation is
represented by a SQL function that takes the source data type as input and returns an object of the target
data type. A transformation can be specified during enqueue, to transform the message to the correct
type before inserting it into the queue. It can be specified during dequeue to receive the message in the
desired format. If specified with a remote subscriber, the message will be transformed before propagating
it to the destination queue.
59. QUEUE MONITOR
59 Oracle Advanced Queuing
The queue monitor (QMNn) is a background process that monitors messages in queues. It provides the
mechanism for message delay, expiration, and retry delay. The QMNn also performs garbage collection for
the queue table and its indexes and index-organized tables (IOTs). For example, the QMNn determines
when all subscribers of multiconsumer queues have received a message and subsequently removes the
message from the queue table and supporting indexes and IOTs.
You can start a maximum of 10 multiple queue monitors at the same time. You start the queue monitors
by setting the dynamic init.ora parameter aq_tm_processes. The queue monitor wakes up every minute,
or whenever there is work to do, for instance, if a message is marked expired or ready to be processed.
60. USING PL/SQL TO ACCESS AQ
60 Oracle Advanced Queuing
• Create: queue, queue table, nonpersistent queue, multiconsumer queue/topic,
RAW message, message with structured data
• Get: queue table, queue, multiconsumer queue/topic
• Alter: queue table, queue/topic
• Drop: queue/topic
• Start or stop: queue/topic
• Grant and revoke privileges
• Add, remove, alter subscriber
• Add, remove, alter AQ Internet agents
• Grant or revoke privileges of database users to AQ Internet agents
• Enable, disable, and alter propagation schedule
• Enqueue messages to single consumer queue (point-to-point model)
• Publish messages to multiconsumer queue/topic (publish-subscribe model)
• Subscribing for messages in multiconsumer queue
• Browse messages in a queue
• Receive messages from queue/topic
• Register to receive messages asynchronously
• Listen for messages on multiple queues/topics
• Post messages to anonymous subscriptions
• Bind or unbind agents in a LDAP server
• Add or remove aliases to AQ objects in a LDAP server
61. DBMS_AQ
61 Oracle Advanced Queuing
The DBMS_AQ package provides an interface to Oracle's Advanced Queuing.
Java interfaces are available for DBMS_AQ and DBMS_AQADM. The Java interfaces are provided in the
$ORACLE_HOME/rdbms/jlib/aqapi.jar. Users are required to have EXECUTE privileges on the DBMS_AQIN
package to use these interfaces.
62. DATA STRUCTURES FOR DBMS_AQ
62 Oracle Advanced Queuing
Object Name
The object_name data structure names database objects. It applies to queues, queue tables, agent names,
and object types.
Syntax
object_name := VARCHAR2;
object_name := [<schema_name>.]<name>;
Usage Notes
Names for objects are specified by an optional schema name and a name. If the schema name is not
specified, the current schema is assumed. The name must follow object name guidelines in the Oracle9i
SQL Reference with regard to reserved characters. Schema names, agent names, and object type names
can be up to 30 bytes long. Queue names and queue table names can be up to 24 bytes long.
63. DATA STRUCTURES FOR DBMS_AQ
63 Oracle Advanced Queuing
Type Name
The type_name data structure defines queue types.
Syntax
type_name := VARCHAR2;
type_name := <object_type> | "RAW";
Attribute Description
<object_types> Maximum number of attributes in the object type is limited to 900.
"RAW" To store payload of type RAW, AQ creates a queue table with a LOB
column as the payload repository. The theoretical maximum size of the
message payload is the maximum amount of data that can be stored in a
LOB column. However, the maximum size of the payload is determined
by which programmatic environment you use to access AQ. For PL/SQL,
Java and precompilers the limit is 32K; for the OCI the limit is 4G. Because
the PL/SQL enqueue and dequeue interfaces accept RAW buffers as the
payload parameters you will be limited to 32K bytes. In OCI, the
maximum size of your RAW data will be limited to the maximum amount
of contiguous memory (as an OCIRaw is simply an array of bytes) that the
OCI Object Cache can allocate. Typically, this will be at least 32K bytes
and much larger in many cases.
Because LOB columns are used for storing RAW payload, the AQ
administrator can choose the LOB tablespace and configure the LOB
storage by constructing a LOB storage string in the storage_clause
parameter during queue table creation time.
64. DATA STRUCTURES FOR DBMS_AQ
64 Oracle Advanced Queuing
AQ PL/SQL Callback
The plsqlcallback data structure specifies the user-defined PL/SQL procedure, defined in the database to
be invoked on message notification.
Syntax
If a notification message is expected for a RAW payload enqueue, then the PL/SQL callback must have the
following signature:
procedure plsqlcallback(
context IN RAW,
reginfo IN SYS.AQ$_REG_INFO,
descr IN SYS.AQ$_DESCRIPTOR,
payload IN RAW,
payloadl IN NUMBER);
65. SUMMARY OF DBMS_AQ SUBPROGRAMS
65 Oracle Advanced Queuing
Subprograms Description
ENQUEUE Procedure Adds a message to the specified queue.
DEQUEUE Procedure Dequeues a message from the specified
queue.
LISTEN Procedure Listen to one or more queues on behalf of
a list of agents.
REGISTER Procedure Registers for message notifications
UNREGISTER Procedure Unregisters a subscription which turns off
notification
POST Procedure Posts to a anonymous subscription which
allows all clients who are registered for the
subscription to get notifications.
BIND_AGENT Procedure Creates an entry for an AQ agent in the
LDAP directory
UNBIND_AGENT Procedure Removes an entry for an AQ agent from
the LDAP directory
66. DBMS_AQADM
66 Oracle Advanced Queuing
The DBMS_AQADM package provides procedures to manage Advanced Queuing configuration and
administration information.
67. SUMMARY OF DBMS_AQADM SUBPROGRAMS
67 Oracle Advanced Queuing
Subprogram Description
CREATE_QUEUE_TABLE Procedure Creates a queue table for messages of a predefined type.
ALTER_QUEUE_TABLE Procedure Alters an existing queue table.
DROP_QUEUE_TABLE Procedure Drops an existing queue table.
CREATE_QUEUE Procedure Creates a queue in the specified queue table.
CREATE_NP_QUEUE Procedure Creates a nonpersistent RAW queue.
ALTER_QUEUE Procedure Alters existing properties of a queue.
DROP_QUEUE Procedure Drops an existing queue.
START_QUEUE Procedure Enables the specified queue for enqueuing or
dequeueing.
STOP_QUEUE Procedure Disables enqueuing or dequeuing on the specified queue.
GRANT_SYSTEM_PRIVILEGE Procedure Grants AQ system privileges to users and roles.
REVOKE_SYSTEM_PRIVILEGE Procedure Revokes AQ system privileges from users and roles.
GRANT_QUEUE_PRIVILEGE Procedure Grants privileges on a queue to users and roles.
REVOKE_QUEUE_PRIVILEGE Procedure Revokes privileges on a queue from users and roles.
ADD_SUBSCRIBER Procedure Adds a default subscriber to a queue.
ALTER_SUBSCRIBER Procedure Alters existing properties of a subscriber to a specified
queue.
68. SUMMARY OF DBMS_AQADM SUBPROGRAMS
68 Oracle Advanced Queuing
Subprogram Description
REMOVE_SUBSCRIBER Procedure Removes a default subscriber from a queue.
SCHEDULE_PROPAGATION Procedure Schedules propagation of messages from a queue to a destination
identified by a specific dblink.
UNSCHEDULE_PROPAGATION Procedure Unschedules previously scheduled propagation of messages from a
queue to a destination identified by a specific dblink.
VERIFY_QUEUE_TYPES Procedure Verifies that the source and destination queues have identical
types.
ALTER_PROPAGATION_SCHEDULE Procedure Alters parameters for a propagation schedule.
ENABLE_PROPAGATION_SCHEDULE Procedure Enables a previously disabled propagation schedule.
DISABLE_PROPAGATION_SCHEDULE Procedure Disables a propagation schedule.
MIGRATE_QUEUE_TABLE Procedure Upgrades an 8.0-compatible queue table to an 8.1-compatible
queue table, or downgrades an 8.1-compatible queue table to an
8.0-compatible queue table.
CREATE_AQ_AGENT Procedure Registers an agent for AQ Internet access
ALTER_AQ_AGENT Procedure Alters an agent registered for AQ Internet access
DROP_AQ_AGENT Procedure Drops an agent registered for AQ Internet access
ENABLE_DB_ACCESS Procedure Grants an AQ Internet agent the privileges of a specific database
user
DISABLE_DB_ACCESS Procedure Revokes the privileges of a database user from an AQ Internet
agent
ADD_ALIAS_TO_LDAP Procedure Creates an alias for a queue, agent, or a JMS ConnectionFactory in
LDAP.
DEL_ALIAS_FROM_LDAP Procedure Drops an alias for a queue, agent, or JMS ConnectionFactory in
LDAP.
69. SETTING UP DATA STRUCTURE
69 Oracle Advanced Queuing
You may need to set up the following data structures for certain examples to work:
CONNECT system/manager;
DROP USER aqadm CASCADE;
CREATE USER aqadm IDENTIFIED BY aqadm;
GRANT CONNECT, RESOURCE TO aqadm;
GRANT EXECUTE ON DBMS_AQADM TO aqadm;
GRANT AQ_ADMINISTRATOR_ROLE TO aqadm;
DROP USER aq CASCADE;
CREATE USER aq IDENTIFIED BY aq;
GRANT CONNECT, RESOURCE TO aq;
GRANT EXECUTE ON DBMS_AQ TO aq;
70. CREATING A QUEUE TABLE AND QUEUE OF OBJECT
TYPE
70 Oracle Advanced Queuing
/* Creating a message type: */
CREATE type aq.Message_typ as object (
subject VARCHAR2(30),
text VARCHAR2(80));
/* Creating a object type queue table and queue: */
BEGIN DBMS_AQADM.CREATE_QUEUE_TABLE (
queue_table => 'aq.objmsgs80_qtab',
queue_payload_type => 'aq.Message_typ');
END;
BEGIN DBMS_AQADM.CREATE_QUEUE (
queue_name => 'msg_queue',
queue_table => 'aq.objmsgs80_qtab');
END;
BEGIN DBMS_AQADM.START_QUEUE (
queue_name => 'msg_queue');
END;
71. CREATING A QUEUE TABLE AND QUEUE OF RAW
TYPE
71 Oracle Advanced Queuing
/* Creating a RAW type queue table and queue: */
EXECUTE DBMS_AQADM.CREATE_QUEUE_TABLE (
queue_table => 'aq.RawMsgs_qtab',
queue_payload_type => 'RAW');
EXECUTE DBMS_AQADM.CREATE_QUEUE (
queue_name => 'raw_msg_queue',
queue_table => 'aq.RawMsgs_qtab');
EXECUTE DBMS_AQADM.START_QUEUE (
queue_name => 'raw_msg_queue');
75. ENQUEUING OF OBJECT TYPE MESSAGES USING
PL/SQL
75 Oracle Advanced Queuing
To enqueue a single message without any other parameters specify the
queue name and the payload.
/* Enqueue to msg_queue: */
DECLARE
enqueue_options dbms_aq.enqueue_options_t;
message_properties dbms_aq.message_properties_t;
message_handle RAW(16);
message aq.message_typ;
BEGIN
message := message_typ('NORMAL MESSAGE',
'enqueued to msg_queue first.');
dbms_aq.enqueue(queue_name => 'msg_queue',
enqueue_options => enqueue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
COMMIT;
END;
77. ENQUEUING OF RAW TYPE MESSAGES USING
PL/SQL
77 Oracle Advanced Queuing
DECLARE
enqueue_options dbms_aq.enqueue_options_t;
message_properties dbms_aq.message_properties_t;
message_handle RAW(16);
message RAW(4096);
BEGIN
message := HEXTORAW(RPAD('FF',4095,'FF'));
DBMS_AQ.ENQUEUE(queue_name => 'raw_msg_queue',
enqueue_options => enqueue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
COMMIT;
END;
78. DEQUEUING OF RAW TYPE MESSAGES USING
PL/SQL
78 Oracle Advanced Queuing
/* Dequeue from raw_msg_queue: */
DECLARE
dequeue_options DBMS_AQ.dequeue_options_t;
message_properties DBMS_AQ.message_properties_t;
message_handle RAW(16);
message RAW(4096);
BEGIN
DBMS_AQ.DEQUEUE(queue_name => 'raw_msg_queue',
dequeue_options => dequeue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
COMMIT;
END;
79. ENQUEUING OF MESSAGES BY PRIORITY USING
PL/SQL
79 Oracle Advanced Queuing
/* Enqueue two messages with priority 30 and 5: */
DECLARE
enqueue_options dbms_aq.enqueue_options_t;
message_properties dbms_aq.message_properties_t;
message_handle RAW(16);
message aq.message_typ;
BEGIN
message := message_typ('PRIORITY MESSAGE',
'enqued at priority 30.');
message_properties.priority := 30;
DBMS_AQ.ENQUEUE(queue_name => 'priority_msg_queue',
enqueue_options => enqueue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
message := message_typ('PRIORITY MESSAGE',
'Enqueued at priority 5.');
message_properties.priority := 5;
DBMS_AQ.ENQUEUE(queue_name => 'priority_msg_queue',
enqueue_options => enqueue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
END;
80. DEQUEUING OF MESSAGES BY PRIORITY USING
PL/SQL
80 Oracle Advanced Queuing
/* Dequeue from priority queue: */
DECLARE
dequeue_options DBMS_AQ.dequeue_options_t;
message_properties DBMS_AQ.message_properties_t;
message_handle RAW(16);
message aq.message_typ;
BEGIN
DBMS_AQ.DEQUEUE(queue_name => 'priority_msg_queue',
dequeue_options => dequeue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
DBMS_OUTPUT.PUT_LINE ('Message: ' || message.subject ||
' ... ' || message.text );
COMMIT;
DBMS_AQ.DEQUEUE(queue_name => 'priority_msg_queue',
dequeue_options => dequeue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
DBMS_OUTPUT.PUT_LINE ('Message: ' || message.subject ||
' ... ' || message.text );
COMMIT;
END;
/* On return, the second message with priority set to 5 will be retrieved before
the message with priority set to 30 since priority takes precedence over enqueue
time. */
81. ENQUEUING OF MESSAGES WITH TIME DELAY AND
EXPIRATION USING PL/SQL
81 Oracle Advanced Queuing
/* Enqueue message for delayed availability: */
DECLARE
enqueue_options dbms_aq.enqueue_options_t;
message_properties dbms_aq.message_properties_t;
message_handle RAW(16);
message aq.Message_typ;
BEGIN
message := Message_typ('DELAYED',
'This message is delayed one week.');
message_properties.delay := 7*24*60*60;
message_properties.expiration := 2*7*24*60*60;
dbms_aq.enqueue(queue_name => 'msg_queue',
enqueue_options => enqueue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
COMMIT;
END;
82. ENQUEUING AND DEQUEUING OF MESSAGES TO/FROM A
MULTICONSUMER QUEUE USING PL/SQL
82 Oracle Advanced Queuing
/* Create subscriber list: */
DECLARE
subscriber aq$_agent;
/* Add subscribers RED and GREEN to the suscriber list: */
BEGIN
subscriber := aq$_agent('RED', NULL, NULL);
DBMS_AQADM.ADD_SUBSCRIBER(queue_name => 'msg_queue_multiple',
subscriber => subscriber);
subscriber := aq$_agent('GREEN', NULL, NULL);
DBMS_AQADM.ADD_SUBSCRIBER(queue_name => 'msg_queue_multiple',
subscriber => subscriber);
END;
83. ENQUEUING AND DEQUEUING OF MESSAGES TO/FROM A
MULTICONSUMER QUEUE USING PL/SQL
83 Oracle Advanced Queuing
DECLARE
enqueue_options DBMS_AQ.enqueue_options_t;
message_properties DBMS_AQ.message_properties_t;
recipients DBMS_AQ.aq$_recipient_list_t;
message_handle RAW(16);
message aq.message_typ;
/* Enqueue MESSAGE 1 for subscribers to the queue
i.e. for RED and GREEN: */
BEGIN
message := message_typ('MESSAGE 1',
'This message is queued for queue subscribers.');
DBMS_AQ.ENQUEUE(queue_name => 'msg_queue_multiple',
enqueue_options => enqueue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
/* Enqueue MESSAGE 2 for specified recipients i.e. for RED and BLUE.*/
message := message_typ('MESSAGE 2',
'This message is queued for two recipients.');
recipients(1) := aq$_agent('RED', NULL, NULL);
recipients(2) := aq$_agent('BLUE', NULL, NULL);
message_properties.recipient_list := recipients;
DBMS_AQ.ENQUEUE(queue_name => 'msg_queue_multiple',
enqueue_options => enqueue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
COMMIT;
END;
Note that RED is both a subscriber to the queue, as well as being a specified recipient of MESSAGE 2.
By contrast, GREEN is only a subscriber to those messages in the queue (in this case, MESSAGE) for
which no recipients have been specified. BLUE, while not a subscriber to the queue, is nevertheless
specified to receive MESSAGE 2.
84. ENQUEUING AND DEQUEUING OF MESSAGES TO/FROM A
MULTICONSUMER QUEUE USING PL/SQL
84 Oracle Advanced Queuing
/* Dequeue messages from msg_queue_multiple: */
DECLARE
dequeue_options DBMS_AQ.dequeue_options_t;
message_properties DBMS_AQ.message_properties_t;
message_handle RAW(16);
message aq.message_typ;
no_messages exception;
pragma exception_init (no_messages, -25228);
BEGIN
dequeue_options.wait := DBMS_AQ.NO_WAIT;
BEGIN
/* Consumer BLUE will get MESSAGE 2: */
dequeue_options.consumer_name := 'BLUE';
dequeue_options.navigation := FIRST_MESSAGE;
LOOP
DBMS_AQ.DEQUEUE(queue_name => 'msg_queue_multiple',
dequeue_options => dequeue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
DBMS_OUTPUT.PUT_LINE ('Message: ' || message.subject ||
' ... ' || message.text );
dequeue_options.navigation := NEXT_MESSAGE;
END LOOP;
EXCEPTION
WHEN no_messages THEN
DBMS_OUTPUT.PUT_LINE ('No more messages for BLUE');
COMMIT;
END;
85. ENQUEUING AND DEQUEUING OF MESSAGES TO/FROM A
MULTICONSUMER QUEUE USING PL/SQL
85 Oracle Advanced Queuing
BEGIN
/* Consumer RED will get MESSAGE 1 and MESSAGE 2: */
dequeue_options.consumer_name := 'RED';
dequeue_options.navigation := DBMS_AQ.FIRST_MESSAGE;
LOOP
DBMS_AQ.DEQUEUE(queue_name => 'msg_queue_multiple',
dequeue_options => dequeue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
DBMS_OUTPUT.PUT_LINE ('Message: ' || message.subject ||
' ... ' || message.text );
dequeue_options.navigation := NEXT_MESSAGE;
END LOOP;
EXCEPTION
WHEN no_messages THEN
DBMS_OUTPUT.PUT_LINE ('No more messages for RED');
COMMIT;
END;
86. ENQUEUING AND DEQUEUING OF MESSAGES TO/FROM A
MULTICONSUMER QUEUE USING PL/SQL
86 Oracle Advanced Queuing
BEGIN
/* Consumer GREEN will get MESSAGE 1: */
dequeue_options.consumer_name := 'GREEN';
dequeue_options.navigation := FIRST_MESSAGE;
LOOP
DBMS_AQ.DEQUEUE(queue_name => 'msg_queue_multiple',
dequeue_options => dequeue_options,
message_properties => message_properties,
payload => message,
msgid => message_handle);
DBMS_OUTPUT.PUT_LINE ('Message: ' || message.subject ||
' ... ' || message.text );
dequeue_options.navigation := NEXT_MESSAGE;
END LOOP;
EXCEPTION
WHEN no_messages THEN
DBMS_OUTPUT.PUT_LINE ('No more messages for GREEN');
COMMIT;
END;
87. MANAGING PROPAGATION FROM ONE QUEUE TO OTHER
QUEUES IN THE SAME DATABASE USING PL/SQL
87 Oracle Advanced Queuing
/* Schedule propagation from queue q1def to other queues in the same database */
EXECUTE DBMS_AQADM.SCHEDULE_PROPAGATION(queue_name => 'q1def');
/* Disable propagation from queue q1def to other queues in the same
database */
EXECUTE DBMS_AQADM.DISABLE_PROPAGATION_SCHEDULE(
queue_name => 'q1def');
/* Alter schedule from queue q1def to other queues in the same database */
EXECUTE DBMS_AQADM.ALTER_PROPAGATION_SCHEDULE(
queue_name => 'q1def',
duration => '2000',
next_time => 'SYSDATE + 3600/86400',
latency => '32');
/* Enable propagation from queue q1def to other queues in the same database */
EXECUTE DBMS_AQADM.ENABLE_PROPAGATION_SCHEDULE(
queue_name => 'q1def');
/* Unschedule propagation from queue q1def to other queues in the same database
*/
EXECUTE DBMS_AQADM.UNSCHEDULE_PROPAGATION(
queue_name => 'q1def');
88. MANAGE PROPAGATION FROM ONE QUEUE TO OTHER
QUEUES IN ANOTHER DATABASE USING PL/SQL
88 Oracle Advanced Queuing
/* Schedule propagation from queue q1def to other queues in another database
reached by the database link another_db.world */
EXECUTE DBMS_AQADM.SCHEDULE_PROPAGATION(
queue_name => 'q1def',
destination => 'another_db.world');
/* Disable propagation from queue q1def to other queues in another database
reached by the database link another_db.world */
EXECUTE DBMS_AQADM.DISABLE_PROPAGATION_SCHEDULE(
queue_name => 'q1def',
destination => 'another_db.world');
/* Alter schedule from queue q1def to other queues in another database reached
by the database link another_db.world */
EXECUTE DBMS_AQADM.ALTER_PROPAGATION_SCHEDULE(
queue_name => 'q1def',
destination => 'another_db.world',
duration => '2000',
next_time => 'SYSDATE + 3600/86400',
latency => '32');
/* Enable propagation from queue q1def to other queues in another database
reached by the database link another_db.world */
EXECUTE DBMS_AQADM.ENABLE_PROPAGATION_SCHEDULE(
queue_name => 'q1def',
destination => 'another_db.world');
/* Unschedule propagation from queue q1def to other queues in another database
reached by the database link another_db.world */
EXECUTE DBMS_AQADM.UNSCHEDULE_PROPAGATION(
queue_name => 'q1def',
destination => 'another_db.world');
89. UNSCHEDULING PROPAGATION USING PL/SQL
89 Oracle Advanced Queuing
/* Unschedule propagation from msg_queue_multiple to the destination another_
db.world */
EXECUTE DBMS_AQADM.UNSCHEDULE_PROPAGATION(
queue_name => 'msg_queue_multiple',
destination => 'another_db.world');
90. DROPPING AQ OBJECTS
90 Oracle Advanced Queuing
/* Cleans up all objects related to the object type: */
CONNECT aq/aq
EXECUTE DBMS_AQADM.STOP_QUEUE (
queue_name => 'msg_queue');
EXECUTE DBMS_AQADM.DROP_QUEUE (
queue_name => 'msg_queue');
EXECUTE DBMS_AQADM.DROP_QUEUE_TABLE (
queue_table => 'aq.objmsgs80_qtab');
/* Cleans up all objects related to the RAW type: */
EXECUTE DBMS_AQADM.STOP_QUEUE (
queue_name => 'raw_msg_queue');
EXECUTE DBMS_AQADM.DROP_QUEUE (
queue_name => 'raw_msg_queue');
EXECUTE DBMS_AQADM.DROP_QUEUE_TABLE (
queue_table => 'aq.RawMsgs_qtab');
91. DROPPING AQ OBJECTS
91 Oracle Advanced Queuing
/* Cleans up all objects related to the priority queue: */
EXECUTE DBMS_AQADM.STOP_QUEUE (
queue_name => 'priority_msg_queue');
EXECUTE DBMS_AQADM.DROP_QUEUE (
queue_name => 'priority_msg_queue');
EXECUTE DBMS_AQADM.DROP_QUEUE_TABLE (
queue_table => 'aq.priority_msg');
/* Cleans up all objects related to the multiple-consumer queue: */
EXECUTE DBMS_AQADM.STOP_QUEUE (
queue_name => 'msg_queue_multiple');
EXECUTE DBMS_AQADM.DROP_QUEUE (
queue_name => 'msg_queue_multiple');
EXECUTE DBMS_AQADM.DROP_QUEUE_TABLE (
queue_table => 'aq.MultiConsumerMsgs_qtab');
DROP TYPE aq.message_typ;
92. REVOKING ROLES AND PRIVILEGES
92 Oracle Advanced Queuing
CONNECT sys/change_on_install
DROP USER aq;
93. CONTACTS
93
Sopra Steria
AMSL
Building No 4, Plot No - 20&21,Sector - 135,
Dist- Gautam Buddha Nagar,Noida (UP)-201304
www.soprasteria.co.uk
Er Gurpreet Singh
Junior Software Engineer
CUG. 2142
M. +91-9803723925
Gurpreet.singh2@soprasteria.com
Oracle Advanced Queuing