Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.misc -> dbms_pipe
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
![]() |
![]() |