Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.misc -> dbms_pipe

dbms_pipe

From: DaLoverhino <DaLoveRhino_at_hotmail.com>
Date: 6 Apr 2005 13:03:29 -0700
Message-ID: <1112817809.422822.100280@g14g2000cwa.googlegroups.com>


Hello. I have a dbms_pipe that sends data to an outside process. It's a pipe created before hand called 'data_out'. The mechanism that transmits the data is a policy function which gets called everytime a select is issued against a table. (Think of them as triggers, if you are unfamiliar with policy functions.)

Now, if my process dies, the reader side of the pipe, seems to go on as if nothing happened. This is a good thing. I don't want my process dying to halt the Oracle server.

Now, when the process restarts, I want to 're-attach' it back onto the pipe. The process calls dbms_pipe.receive_message(). At this point the program apparently hangs. I can give it a timeout variable, but I still get no data back.

The only way to get data to the receiver at this point is to call dbms_pipe.reset_buffer, before my process calls dbms_pipe.receive_message(). Unfortunately, according to Oracle documentation, dbms_pipe.reset_buffer seems to affect all pipes, which is not what I want to do.

How do I get around this problem of 're-attaching' the reader to the pipe, without affecting other pipes? dbms_pipe.purge doesn't seem to do anything.

thanks. Received on Wed Apr 06 2005 - 15:03:29 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US