SlideShare a Scribd company logo
Submit Search
Upload
Oracle Inter-Session Communication
Report
Share
Oren Nakdimon
Database Expert at Moovit
Follow
•
1 like
•
971 views
1
of
60
Oracle Inter-Session Communication
•
1 like
•
971 views
Report
Share
Download Now
Download to read offline
Software
Inter-session communication in Oracle using DBMS_PIPE and DBMS_ALERT
Read more
Oren Nakdimon
Database Expert at Moovit
Follow
Recommended
Constraint Optimization by
Constraint Optimization
Oren Nakdimon
1.4K views
•
106 slides
Indexes and Indexing in Oracle 12c by
Indexes and Indexing in Oracle 12c
Oren Nakdimon
3.1K views
•
29 slides
Oren nakdimon oh really... i didn't know it is supported in standard edition by
Oren nakdimon oh really... i didn't know it is supported in standard edition
Oren Nakdimon
2.3K views
•
91 slides
Edition Based Redefinition Made Easy - Oren Nakdimon by
Edition Based Redefinition Made Easy - Oren Nakdimon
Oren Nakdimon
1.9K views
•
166 slides
How to upgrade your application with no downtime (using edition-based redefin... by
How to upgrade your application with no downtime (using edition-based redefin...
Oren Nakdimon
2.7K views
•
52 slides
Write Less (code) With More (Oracle Database 12c New Features) by
Write Less (code) With More (Oracle Database 12c New Features)
Oren Nakdimon
2.5K views
•
50 slides
More Related Content
What's hot
New PLSQL in Oracle Database 12c by
New PLSQL in Oracle Database 12c
Connor McDonald
152 views
•
68 slides
DBMS_SQL by
DBMS_SQL
Mahesh Vallampati
1K views
•
6 slides
MODELS'16 - RESTalk by
MODELS'16 - RESTalk
Ana Ivanchikj
496 views
•
42 slides
Firebird 3 Windows Functions by
Firebird 3 Windows Functions
Mind The Firebird
3.7K views
•
34 slides
JAX-RS and CDI Bike the (Reactive) Bridge by
JAX-RS and CDI Bike the (Reactive) Bridge
José Paumard
1.2K views
•
48 slides
PL/SQL Fundamentals I by
PL/SQL Fundamentals I
Nick Buytaert
16.8K views
•
56 slides
What's hot
(14)
New PLSQL in Oracle Database 12c by Connor McDonald
New PLSQL in Oracle Database 12c
Connor McDonald
•
152 views
DBMS_SQL by Mahesh Vallampati
DBMS_SQL
Mahesh Vallampati
•
1K views
MODELS'16 - RESTalk by Ana Ivanchikj
MODELS'16 - RESTalk
Ana Ivanchikj
•
496 views
Firebird 3 Windows Functions by Mind The Firebird
Firebird 3 Windows Functions
Mind The Firebird
•
3.7K views
JAX-RS and CDI Bike the (Reactive) Bridge by José Paumard
JAX-RS and CDI Bike the (Reactive) Bridge
José Paumard
•
1.2K views
PL/SQL Fundamentals I by Nick Buytaert
PL/SQL Fundamentals I
Nick Buytaert
•
16.8K views
Oracle PLSQL Step By Step Guide by Srinimf-Slides
Oracle PLSQL Step By Step Guide
Srinimf-Slides
•
4.2K views
Deep Dive Java 17 Devoxx UK by José Paumard
Deep Dive Java 17 Devoxx UK
José Paumard
•
994 views
06 Using More Package Concepts by rehaniltifat
06 Using More Package Concepts
rehaniltifat
•
1.4K views
DAC training-batch -2020(PLSQL) by RajKumarSingh213
DAC training-batch -2020(PLSQL)
RajKumarSingh213
•
17 views
ORACLE PL SQL FOR BEGINNERS by mohdoracle
ORACLE PL SQL FOR BEGINNERS
mohdoracle
•
18.6K views
Managing Unstructured Data: Lobs in the World of JSON by Michael Rosenblum
Managing Unstructured Data: Lobs in the World of JSON
Michael Rosenblum
•
91 views
PL/SQL by Sabyasachi Moitra
PL/SQL
Sabyasachi Moitra
•
2.2K views
PL/SQL by Vaibhav0
PL/SQL
Vaibhav0
•
819 views
Similar to Oracle Inter-Session Communication
Plsql by
Plsql
fika sweety
5.2K views
•
31 slides
Performance measurement and tuning by
Performance measurement and tuning
AOE
2.3K views
•
99 slides
Penetration Testing for Easy RM to MP3 Converter Application and Post Exploit by
Penetration Testing for Easy RM to MP3 Converter Application and Post Exploit
JongWon Kim
1.6K views
•
21 slides
Write Less (Code) With More (Features) [UKOUG 22] by
Write Less (Code) With More (Features) [UKOUG 22]
Oren Nakdimon
35 views
•
116 slides
Real-Time Query for Data Guard by
Real-Time Query for Data Guard
Uwe Hesse
3.5K views
•
25 slides
Distributed Applications with Perl & Gearman by
Distributed Applications with Perl & Gearman
Issac Goldstand
4.6K views
•
24 slides
Similar to Oracle Inter-Session Communication
(20)
Plsql by fika sweety
Plsql
fika sweety
•
5.2K views
Performance measurement and tuning by AOE
Performance measurement and tuning
AOE
•
2.3K views
Penetration Testing for Easy RM to MP3 Converter Application and Post Exploit by JongWon Kim
Penetration Testing for Easy RM to MP3 Converter Application and Post Exploit
JongWon Kim
•
1.6K views
Write Less (Code) With More (Features) [UKOUG 22] by Oren Nakdimon
Write Less (Code) With More (Features) [UKOUG 22]
Oren Nakdimon
•
35 views
Real-Time Query for Data Guard by Uwe Hesse
Real-Time Query for Data Guard
Uwe Hesse
•
3.5K views
Distributed Applications with Perl & Gearman by Issac Goldstand
Distributed Applications with Perl & Gearman
Issac Goldstand
•
4.6K views
Study2study#4 nginx conf_1_24 by Naoya Nakazawa
Study2study#4 nginx conf_1_24
Naoya Nakazawa
•
823 views
linux-namespaces.pdf by Ignat Korchagin
linux-namespaces.pdf
Ignat Korchagin
•
63 views
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016) by James Titcumb
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
James Titcumb
•
694 views
SQL- Introduction to PL/SQL by Vibrant Technologies & Computers
SQL- Introduction to PL/SQL
Vibrant Technologies & Computers
•
314 views
Dolibarr - information for developers and partners - devcamp Pau 2019 by Laurent Destailleur
Dolibarr - information for developers and partners - devcamp Pau 2019
Laurent Destailleur
•
84 views
Container orchestration from theory to practice by Docker, Inc.
Container orchestration from theory to practice
Docker, Inc.
•
347 views
OpenERP e l'arte della gestione aziendale con Python by PyCon Italia
OpenERP e l'arte della gestione aziendale con Python
PyCon Italia
•
919 views
Capistrano2 by Luca Mearelli
Capistrano2
Luca Mearelli
•
627 views
Fpga 06-data-types-system-tasks-compiler-directives by Malik Tauqir Hasan
Fpga 06-data-types-system-tasks-compiler-directives
Malik Tauqir Hasan
•
1K views
Hello, Is That FreeSWITCH? Then We're Coming to Check You! by PVS-Studio
Hello, Is That FreeSWITCH? Then We're Coming to Check You!
PVS-Studio
•
203 views
PhpBB meets Symfony2 by Fabien Potencier
PhpBB meets Symfony2
Fabien Potencier
•
7.7K views
Benchmarking Perl (Chicago UniForum 2006) by brian d foy
Benchmarking Perl (Chicago UniForum 2006)
brian d foy
•
2.4K views
Set Up & Operate Tungsten Replicator by Continuent
Set Up & Operate Tungsten Replicator
Continuent
•
655 views
Container Orchestration from Theory to Practice by Docker, Inc.
Container Orchestration from Theory to Practice
Docker, Inc.
•
1.6K views
Recently uploaded
Introduction to Gradle by
Introduction to Gradle
John Valentino
6 views
•
7 slides
Electronic AWB - Electronic Air Waybill by
Electronic AWB - Electronic Air Waybill
Freightoscope
5 views
•
1 slide
Agile 101 by
Agile 101
John Valentino
12 views
•
20 slides
Bootstrapping vs Venture Capital.pptx by
Bootstrapping vs Venture Capital.pptx
Zeljko Svedic
15 views
•
17 slides
predicting-m3-devopsconMunich-2023-v2.pptx by
predicting-m3-devopsconMunich-2023-v2.pptx
Tier1 app
12 views
•
33 slides
tecnologia18.docx by
tecnologia18.docx
nosi6702
5 views
•
5 slides
Recently uploaded
(20)
Introduction to Gradle by John Valentino
Introduction to Gradle
John Valentino
•
6 views
Electronic AWB - Electronic Air Waybill by Freightoscope
Electronic AWB - Electronic Air Waybill
Freightoscope
•
5 views
Agile 101 by John Valentino
Agile 101
John Valentino
•
12 views
Bootstrapping vs Venture Capital.pptx by Zeljko Svedic
Bootstrapping vs Venture Capital.pptx
Zeljko Svedic
•
15 views
predicting-m3-devopsconMunich-2023-v2.pptx by Tier1 app
predicting-m3-devopsconMunich-2023-v2.pptx
Tier1 app
•
12 views
tecnologia18.docx by nosi6702
tecnologia18.docx
nosi6702
•
5 views
Automated Testing of Microsoft Power BI Reports by RTTS
Automated Testing of Microsoft Power BI Reports
RTTS
•
10 views
Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium... by Lisi Hocke
Team Transformation Tactics for Holistic Testing and Quality (Japan Symposium...
Lisi Hocke
•
35 views
predicting-m3-devopsconMunich-2023.pptx by Tier1 app
predicting-m3-devopsconMunich-2023.pptx
Tier1 app
•
8 views
Top-5-production-devconMunich-2023-v2.pptx by Tier1 app
Top-5-production-devconMunich-2023-v2.pptx
Tier1 app
•
8 views
The Path to DevOps by John Valentino
The Path to DevOps
John Valentino
•
5 views
How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile... by Stefan Wolpers
How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile...
Stefan Wolpers
•
42 views
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated... by TomHalpin9
Dev-HRE-Ops - Addressing the _Last Mile DevOps Challenge_ in Highly Regulated...
TomHalpin9
•
6 views
Introduction to Git Source Control by John Valentino
Introduction to Git Source Control
John Valentino
•
7 views
Airline Booking Software by SharmiMehta
Airline Booking Software
SharmiMehta
•
9 views
Page Object Model by artembondar5
Page Object Model
artembondar5
•
6 views
How to build dyanmic dashboards and ensure they always work by Wiiisdom
How to build dyanmic dashboards and ensure they always work
Wiiisdom
•
14 views
The Era of Large Language Models.pptx by AbdulVahedShaik
The Era of Large Language Models.pptx
AbdulVahedShaik
•
7 views
Unlocking the Power of AI in Product Management - A Comprehensive Guide for P... by NimaTorabi2
Unlocking the Power of AI in Product Management - A Comprehensive Guide for P...
NimaTorabi2
•
16 views
FOSSLight Community Day 2023-11-30 by Shane Coughlan
FOSSLight Community Day 2023-11-30
Shane Coughlan
•
7 views
Oracle Inter-Session Communication
1.
Oracle Inter-Session Communication Oren Nakdimon www.db-oriented.com
oren@db-oriented.com +972-54-4393763 @DBoriented
2.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon http://db-oriented.com Who Am I?
3.
INTER-SESSION COMMUNICATION
4.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon Session Session Session
5.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon Session Session Session
6.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon Session SGA Session Session
7.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon Session SGA Session Session
8.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon Session Outbox SGA Inbox Session Session Outbox Inbox Outbox Inbox
9.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon Session Outbox SGA Inbox Session Session Outbox Inbox Outbox Inbox
10.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon Session Outbox SGA Inbox Session Session Outbox Inbox Outbox Inbox
11.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon Session Outbox SGA Session Outbox Inbox Session Inbox Outbox Inbox Outbox
12.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon Session Outbox SGA Session Outbox Inbox Session Inbox Outbox Inbox Outbox Inbox
13.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon Session Session Outbox SGA Session Outbox Inbox Inbox Outbox Outbox Outbox Inbox
14.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon Session Session Outbox SGA Session Outbox Inbox Inbox Outbox Outbox Outbox Inbox
15.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon Session Session Outbox SGA Session Outbox Inbox Inbox Outbox Outbox Outbox Inbox
16.
DEMO Logger
17.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon create or replace package pipe_demo as procedure log(i_text in varchar2); procedure get_next ( o_user out varchar2, o_sid out number, o_host out varchar2, o_time out date, o_text out varchar2 ); end pipe_demo;
18.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon create or replace package pipe_demo as procedure log(i_text in varchar2); procedure get_next ( o_user out varchar2, o_sid out number, o_host out varchar2, o_time out date, o_text out varchar2 ); end pipe_demo;
19.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon create or replace package pipe_demo as procedure log(i_text in varchar2); procedure get_next ( o_user out varchar2, o_sid out number, o_host out varchar2, o_time out date, o_text out varchar2 ); end pipe_demo;
20.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon create or replace package body pipe_demo as c_log_pipe constant varchar2(13) := 'DEMO_LOG_PIPE'; procedure log(i_text in varchar2) is l_status number; begin dbms_pipe.pack_message(user); dbms_pipe.pack_message(to_number(sys_context('userenv', 'sid'))); dbms_pipe.pack_message(sys_context('userenv', 'host')); dbms_pipe.pack_message(sysdate); dbms_pipe.pack_message(i_text); l_status := dbms_pipe.send_message(c_log_pipe); if l_status != 0 then raise_application_error(-20000, 'dbms_pipe.send_message failed with status ' || l_status); end if; end log;
21.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon create or replace package body pipe_demo as c_log_pipe constant varchar2(13) := 'DEMO_LOG_PIPE'; procedure log(i_text in varchar2) is l_status number; begin dbms_pipe.pack_message(user); dbms_pipe.pack_message(to_number(sys_context('userenv', 'sid'))); dbms_pipe.pack_message(sys_context('userenv', 'host')); dbms_pipe.pack_message(sysdate); dbms_pipe.pack_message(i_text); l_status := dbms_pipe.send_message(c_log_pipe); if l_status != 0 then raise_application_error(-20000, 'dbms_pipe.send_message failed with status ' || l_status); end if; end log;
22.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon create or replace package body pipe_demo as c_log_pipe constant varchar2(13) := 'DEMO_LOG_PIPE'; procedure log(i_text in varchar2) is l_status number; begin dbms_pipe.pack_message(user); dbms_pipe.pack_message(to_number(sys_context('userenv', 'sid'))); dbms_pipe.pack_message(sys_context('userenv', 'host')); dbms_pipe.pack_message(sysdate); dbms_pipe.pack_message(i_text); l_status := dbms_pipe.send_message(c_log_pipe); if l_status != 0 then raise_application_error(-20000, 'dbms_pipe.send_message failed with status ' || l_status); end if; end log;
23.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon create or replace package body pipe_demo as c_log_pipe constant varchar2(13) := 'DEMO_LOG_PIPE'; procedure log(i_text in varchar2) is l_status number; begin dbms_pipe.pack_message(user); dbms_pipe.pack_message(to_number(sys_context('userenv', 'sid'))); dbms_pipe.pack_message(sys_context('userenv', 'host')); dbms_pipe.pack_message(sysdate); dbms_pipe.pack_message(i_text); l_status := dbms_pipe.send_message(c_log_pipe); if l_status != 0 then raise_application_error(-20000, 'dbms_pipe.send_message failed with status ' || l_status); end if; end log; pack_message (number) pack_message (varchar2) pack_message (date) pack_message_raw pack_message_rowid
24.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon create or replace package body pipe_demo as c_log_pipe constant varchar2(13) := 'DEMO_LOG_PIPE'; procedure log(i_text in varchar2) is l_status number; begin dbms_pipe.pack_message(user); dbms_pipe.pack_message(to_number(sys_context('userenv', 'sid'))); dbms_pipe.pack_message(sys_context('userenv', 'host')); dbms_pipe.pack_message(sysdate); dbms_pipe.pack_message(i_text); l_status := dbms_pipe.send_message(c_log_pipe); if l_status != 0 then raise_application_error(-20000, 'dbms_pipe.send_message failed with status ' || l_status); end if; end log;
25.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon procedure get_next ( o_user out varchar2, o_sid out number, o_host out varchar2, o_time out date, o_text out varchar2 ) is l_status number; begin l_status := dbms_pipe.receive_message(pipename => c_log_pipe); if l_status != 0 then raise_application_error(-20000, 'dbms_pipe.receive_message failed with status ' || l_status); end if; dbms_pipe.unpack_message(o_user); dbms_pipe.unpack_message(o_sid); dbms_pipe.unpack_message(o_host); dbms_pipe.unpack_message(o_time); dbms_pipe.unpack_message(o_text); end get_next; end pipe_demo;
26.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon procedure get_next ( o_user out varchar2, o_sid out number, o_host out varchar2, o_time out date, o_text out varchar2 ) is l_status number; begin l_status := dbms_pipe.receive_message(pipename => c_log_pipe); if l_status != 0 then raise_application_error(-20000, 'dbms_pipe.receive_message failed with status ' || l_status); end if; dbms_pipe.unpack_message(o_user); dbms_pipe.unpack_message(o_sid); dbms_pipe.unpack_message(o_host); dbms_pipe.unpack_message(o_time); dbms_pipe.unpack_message(o_text); end get_next; end pipe_demo;
27.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon procedure get_next ( o_user out varchar2, o_sid out number, o_host out varchar2, o_time out date, o_text out varchar2 ) is l_status number; begin l_status := dbms_pipe.receive_message(pipename => c_log_pipe); if l_status != 0 then raise_application_error(-20000, 'dbms_pipe.receive_message failed with status ' || l_status); end if; dbms_pipe.unpack_message(o_user); dbms_pipe.unpack_message(o_sid); dbms_pipe.unpack_message(o_host); dbms_pipe.unpack_message(o_time); dbms_pipe.unpack_message(o_text); end get_next; end pipe_demo; unpack_message (number) unpack_message (varchar2) unpack_message (date) unpack_message_raw unpack_message_rowid
28.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon public class Logger { public static void main(String args[]) throws SQLException { Properties info = new Properties(); info.put(OracleConnection.CONNECTION_PROPERTY_USER_NAME, DB_USER); info.put(OracleConnection.CONNECTION_PROPERTY_PASSWORD, DB_PASSWORD); OracleDataSource ods = new OracleDataSource(); ods.setURL(DB_URL); ods.setConnectionProperties(info); try (OracleConnection connection = (OracleConnection) ods.getConnection()) { DatabaseMetaData dbmd = connection.getMetaData(); System.out.println("Ready..."); System.out.println(); System.out.println("Time Host User SID Message"); System.out.println("--------------- -------------- ----- --- -------"); processRequests(connection); System.out.println("Bye!"); System.out.println(); } }
29.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon public class Logger { public static void main(String args[]) throws SQLException { Properties info = new Properties(); info.put(OracleConnection.CONNECTION_PROPERTY_USER_NAME, DB_USER); info.put(OracleConnection.CONNECTION_PROPERTY_PASSWORD, DB_PASSWORD); OracleDataSource ods = new OracleDataSource(); ods.setURL(DB_URL); ods.setConnectionProperties(info); try (OracleConnection connection = (OracleConnection) ods.getConnection()) { DatabaseMetaData dbmd = connection.getMetaData(); System.out.println("Ready..."); System.out.println(); System.out.println("Time Host User SID Message"); System.out.println("--------------- -------------- ----- --- -------"); processRequests(connection); System.out.println("Bye!"); System.out.println(); } }
30.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon public class Logger { public static void main(String args[]) throws SQLException { Properties info = new Properties(); info.put(OracleConnection.CONNECTION_PROPERTY_USER_NAME, DB_USER); info.put(OracleConnection.CONNECTION_PROPERTY_PASSWORD, DB_PASSWORD); OracleDataSource ods = new OracleDataSource(); ods.setURL(DB_URL); ods.setConnectionProperties(info); try (OracleConnection connection = (OracleConnection) ods.getConnection()) { DatabaseMetaData dbmd = connection.getMetaData(); System.out.println("Ready..."); System.out.println(); System.out.println("Time Host User SID Message"); System.out.println("--------------- -------------- ----- --- -------"); processRequests(connection); System.out.println("Bye!"); System.out.println(); } }
31.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon public class Logger { public static void main(String args[]) throws SQLException { Properties info = new Properties(); info.put(OracleConnection.CONNECTION_PROPERTY_USER_NAME, DB_USER); info.put(OracleConnection.CONNECTION_PROPERTY_PASSWORD, DB_PASSWORD); OracleDataSource ods = new OracleDataSource(); ods.setURL(DB_URL); ods.setConnectionProperties(info); try (OracleConnection connection = (OracleConnection) ods.getConnection()) { DatabaseMetaData dbmd = connection.getMetaData(); System.out.println("Ready..."); System.out.println(); System.out.println("Time Host User SID Message"); System.out.println("--------------- -------------- ----- --- -------"); processRequests(connection); System.out.println("Bye!"); System.out.println(); } }
32.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon public static void processRequests(Connection connection) throws SQLException { String user; int sid; String host; Timestamp time; String text = " "; CallableStatement callableStatement = connection.prepareCall("{ call PIPE_DEMO.GET_NEXT(?,?,?,?,?) }"); callableStatement.registerOutParameter(1, java.sql.Types.VARCHAR); callableStatement.registerOutParameter(2, java.sql.Types.INTEGER); callableStatement.registerOutParameter(3, java.sql.Types.VARCHAR); callableStatement.registerOutParameter(4, java.sql.Types.DATE); callableStatement.registerOutParameter(5, java.sql.Types.VARCHAR); do { callableStatement.executeUpdate(); user = callableStatement.getString(1); sid = callableStatement.getInt(2); host = callableStatement.getString(3); time = callableStatement.getTimestamp(4); text = callableStatement.getString(5); System.out.println(time + " " + host + " " + user + " " + String.format("%3s",
33.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon public static void processRequests(Connection connection) throws SQLException { String user; int sid; String host; Timestamp time; String text = " "; CallableStatement callableStatement = connection.prepareCall("{ call PIPE_DEMO.GET_NEXT(?,?,?,?,?) }"); callableStatement.registerOutParameter(1, java.sql.Types.VARCHAR); callableStatement.registerOutParameter(2, java.sql.Types.INTEGER); callableStatement.registerOutParameter(3, java.sql.Types.VARCHAR); callableStatement.registerOutParameter(4, java.sql.Types.DATE); callableStatement.registerOutParameter(5, java.sql.Types.VARCHAR); do { callableStatement.executeUpdate(); user = callableStatement.getString(1); sid = callableStatement.getInt(2); host = callableStatement.getString(3); time = callableStatement.getTimestamp(4); text = callableStatement.getString(5); System.out.println(time + " " + host + " " + user + " " + String.format("%3s",
34.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon public static void processRequests(Connection connection) throws SQLException { String user; int sid; String host; Timestamp time; String text = " "; CallableStatement callableStatement = connection.prepareCall("{ call PIPE_DEMO.GET_NEXT(?,?,?,?,?) }"); callableStatement.registerOutParameter(1, java.sql.Types.VARCHAR); callableStatement.registerOutParameter(2, java.sql.Types.INTEGER); callableStatement.registerOutParameter(3, java.sql.Types.VARCHAR); callableStatement.registerOutParameter(4, java.sql.Types.DATE); callableStatement.registerOutParameter(5, java.sql.Types.VARCHAR); do { callableStatement.executeUpdate(); user = callableStatement.getString(1); sid = callableStatement.getInt(2); host = callableStatement.getString(3); time = callableStatement.getTimestamp(4); text = callableStatement.getString(5); System.out.println(time + " " + host + " " + user + " " + String.format("%3s",
35.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon CallableStatement callableStatement = connection.prepareCall("{ call PIPE_DEMO.GET_NEXT(?,?,?,?,?) }"); callableStatement.registerOutParameter(1, java.sql.Types.VARCHAR); callableStatement.registerOutParameter(2, java.sql.Types.INTEGER); callableStatement.registerOutParameter(3, java.sql.Types.VARCHAR); callableStatement.registerOutParameter(4, java.sql.Types.DATE); callableStatement.registerOutParameter(5, java.sql.Types.VARCHAR); do { callableStatement.executeUpdate(); user = callableStatement.getString(1); sid = callableStatement.getInt(2); host = callableStatement.getString(3); time = callableStatement.getTimestamp(4); text = callableStatement.getString(5); System.out.println(time + " " + host + " " + user + " " + String.format("%3s", sid) + " " + text); } while (!text.equals("ABORT")); callableStatement.close(); } }
36.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon CallableStatement callableStatement = connection.prepareCall("{ call PIPE_DEMO.GET_NEXT(?,?,?,?,?) }"); callableStatement.registerOutParameter(1, java.sql.Types.VARCHAR); callableStatement.registerOutParameter(2, java.sql.Types.INTEGER); callableStatement.registerOutParameter(3, java.sql.Types.VARCHAR); callableStatement.registerOutParameter(4, java.sql.Types.DATE); callableStatement.registerOutParameter(5, java.sql.Types.VARCHAR); do { callableStatement.executeUpdate(); user = callableStatement.getString(1); sid = callableStatement.getInt(2); host = callableStatement.getString(3); time = callableStatement.getTimestamp(4); text = callableStatement.getString(5); System.out.println(time + " " + host + " " + user + " " + String.format("%3s", sid) + " " + text); } while (!text.equals("ABORT")); callableStatement.close(); } }
37.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon CallableStatement callableStatement = connection.prepareCall("{ call PIPE_DEMO.GET_NEXT(?,?,?,?,?) }"); callableStatement.registerOutParameter(1, java.sql.Types.VARCHAR); callableStatement.registerOutParameter(2, java.sql.Types.INTEGER); callableStatement.registerOutParameter(3, java.sql.Types.VARCHAR); callableStatement.registerOutParameter(4, java.sql.Types.DATE); callableStatement.registerOutParameter(5, java.sql.Types.VARCHAR); do { callableStatement.executeUpdate(); user = callableStatement.getString(1); sid = callableStatement.getInt(2); host = callableStatement.getString(3); time = callableStatement.getTimestamp(4); text = callableStatement.getString(5); System.out.println(time + " " + host + " " + user + " " + String.format("%3s", sid) + " " + text); } while (!text.equals("ABORT")); callableStatement.close(); } }
38.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon CallableStatement callableStatement = connection.prepareCall("{ call PIPE_DEMO.GET_NEXT(?,?,?,?,?) }"); callableStatement.registerOutParameter(1, java.sql.Types.VARCHAR); callableStatement.registerOutParameter(2, java.sql.Types.INTEGER); callableStatement.registerOutParameter(3, java.sql.Types.VARCHAR); callableStatement.registerOutParameter(4, java.sql.Types.DATE); callableStatement.registerOutParameter(5, java.sql.Types.VARCHAR); do { callableStatement.executeUpdate(); user = callableStatement.getString(1); sid = callableStatement.getInt(2); host = callableStatement.getString(3); time = callableStatement.getTimestamp(4); text = callableStatement.getString(5); System.out.println(time + " " + host + " " + user + " " + String.format("%3s", sid) + " " + text); } while (!text.equals("ABORT")); callableStatement.close(); } }
39.
PIPES A Single Consumer
40.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon SGA Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox
41.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon SGA Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox
42.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon SGA Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox
43.
PIPES Multiple Consumers
44.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon SGA Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox
45.
DEMO Multiple Consumers
46.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon
47.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon create or replace package pipe_demo as procedure log(i_text in varchar2); procedure get_next ( o_user out varchar2, o_sid out number, o_host out varchar2, o_time out date, o_text out varchar2 ); procedure send_many_logs ( i_text in varchar2, i_how_many in binary_integer ); end pipe_demo;
48.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon create or replace package body pipe_demo as ... procedure send_many_logs ( i_text in varchar2, i_how_many in binary_integer ) is c_alert_name constant varchar2(10) := 'DEMO_ALERT'; l_message varchar2(100); l_status number; begin dbms_alert.register(c_alert_name); dbms_alert.waitone(c_alert_name, l_message, l_status); for i in 1 .. i_how_many loop pipe_demo.log(i_text || '# ' || to_char(i)); end loop; dbms_alert.remove(c_alert_name); end send_many_logs; end pipe_demo;
49.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon create or replace package body pipe_demo as ... procedure send_many_logs ( i_text in varchar2, i_how_many in binary_integer ) is c_alert_name constant varchar2(10) := 'DEMO_ALERT'; l_message varchar2(100); l_status number; begin dbms_alert.register(c_alert_name); dbms_alert.waitone(c_alert_name, l_message, l_status); for i in 1 .. i_how_many loop pipe_demo.log(i_text || '# ' || to_char(i)); end loop; dbms_alert.remove(c_alert_name); end send_many_logs; end pipe_demo;
50.
ALERTS (SIGNALS)
51.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon Session Session Session Session Session Session
52.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon create or replace package body pipe_demo as ... procedure send_many_logs ( i_text in varchar2, i_how_many in binary_integer ) is c_alert_name constant varchar2(10) := 'DEMO_ALERT'; l_message varchar2(100); l_status number; begin dbms_alert.register(c_alert_name); dbms_alert.waitone(c_alert_name, l_message, l_status); for i in 1 .. i_how_many loop pipe_demo.log(i_text || '# ' || to_char(i)); end loop; dbms_alert.remove(c_alert_name); end send_many_logs; end pipe_demo;
53.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon create or replace package body pipe_demo as ... procedure send_many_logs ( i_text in varchar2, i_how_many in binary_integer ) is c_alert_name constant varchar2(10) := 'DEMO_ALERT'; l_message varchar2(100); l_status number; begin dbms_alert.register(c_alert_name); dbms_alert.waitone(c_alert_name, l_message, l_status); for i in 1 .. i_how_many loop pipe_demo.log(i_text || '# ' || to_char(i)); end loop; dbms_alert.remove(c_alert_name); end send_many_logs; end pipe_demo;
54.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon create or replace package body pipe_demo as ... procedure send_many_logs ( i_text in varchar2, i_how_many in binary_integer ) is c_alert_name constant varchar2(10) := 'DEMO_ALERT'; l_message varchar2(100); l_status number; begin dbms_alert.register(c_alert_name); dbms_alert.waitone(c_alert_name, l_message, l_status); for i in 1 .. i_how_many loop pipe_demo.log(i_text || '# ' || to_char(i)); end loop; dbms_alert.remove(c_alert_name); end send_many_logs; end pipe_demo; There is also dbms_alert.waitany
55.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon create or replace package body pipe_demo as ... procedure send_many_logs ( i_text in varchar2, i_how_many in binary_integer ) is c_alert_name constant varchar2(10) := 'DEMO_ALERT'; l_message varchar2(100); l_status number; begin dbms_alert.register(c_alert_name); dbms_alert.waitone(c_alert_name, l_message, l_status); for i in 1 .. i_how_many loop pipe_demo.log(i_text || '# ' || to_char(i)); end loop; dbms_alert.remove(c_alert_name); end send_many_logs; end pipe_demo; There is also dbms_alert.removeall
56.
PIPES Request and Response
57.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon SGA Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox
58.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon SGA Session Inbox Outbox Session Inbox Outbox Session Inbox Outbox dbms_pipe.unique_session_name
59.
This presentation is
available in http://db-oriented.com/presentations © Oren Nakdimon © Oren Nakdimon DBMS_PIPE DBMS_ALERT Type Named Pipes / Queue Signals / Broadcast Implementation SGA structure Table Transactional? Non-Transactional Transactional Consumers of a specific message Single Consumer Zero-to-Multiple Consumers Blocked Publisher? When pipe is full (“pipe put” wait event) When other session signaled to the same alert and hasn’t committed yet (TX lock), but only if there are registered consumers Possible Loss of Messages? Instance crash/shutdown Multiple signals to the same alert before read by the consumer
60.
THANK YOU Oren Nakdimon www.db-oriented.com
oren@db-oriented.com +972-54-4393763 @DBoriented