RE: Advanced queuing : dequeing from remote database

  • From: "Powell, Mark D" <mark.powell@xxxxxxx>
  • To: Oracle-L@xxxxxxxxxxxxx
  • Date: Thu, 17 Feb 2005 09:12:40 -0500

From the 9.2 DBA Admin Guide >> To understand how a database link works, you
must first understand what a global database name is. Each database in a
distributed database is uniquely identified by its global database name.
Oracle forms a database's global database name by prefixing the database's
network domain, specified by the DB_DOMAIN initialization parameter at
database creation, with the individual database name, specified by the
DB_NAME initialization parameter <<

If you do not specify the domain name in the link then Oracle attempts to
provide it.  Redefine the link as database_name.domain to avoid problems
like this.  Remember that in the old days Oracle defaulted the domain name
to world.  Now that is not true any longer so you should always specify it.

HTH -- Mark D Powell --

-----Original Message-----
From: oracle-l-bounce@xxxxxxxxxxxxx
[mailto:oracle-l-bounce@xxxxxxxxxxxxx]On Behalf Of John Dunn
Sent: Thursday, February 17, 2005 8:33 AM
To: Oracle-L@xxxxxxxxxxxxx
Cc: rjamya@xxxxxxxxx; ntilbury@xxxxxxxxxxxx
Subject: RE: Advanced queuing : dequeing from remote database


I have identified the error as :

connection description for remote database not found

The address being used in add_subscriber is
OPD4678.NEW_JOB_MESSAGE_QUEUE@VAN9

where VAN9 is my database link

but the entry on the queue seems to trying to use

OPD4678.NEW_JOB_MESSAGE_QUEUE@xxxxxxxxxxxxxxxxxx

Is this the problem?

Why is it trying to use VAN9.US.ORACLE.COM ???


The entry in tnsnames.ora is simply named VAN9.




From:   John Dunn [mailto:jdunn@xxxxxxxxx]
Sent:   17 February 2005 10:46
To:     'Oracle-L@xxxxxxxxxxxxx'
Subject:        Advanced queuing : dequeing from remote database

I am experimenting with advanced queueing in Oracle 9i and am able to
enqueue and dequeue messages within the same database.

However I would like to dequeue messages on a remote database via a database
link.

I am confused as to what I need to set up on the remote server in order to
dequeue the message.

I have set up the database link that points back to the enqueueing database,
The database link works OK.

I am then trying to dequeue the message on the remote database using the
following code(which is the same I use when doing this all on the same
database except for the references to the database link). I get the error :

    message              opd4678.new_job_message@DEMO;
                                 *
ERROR at line 6:
ORA-06550: line 6, column 34:
PLS-00331: illegal reference to OPD4678.NEW_JOB_MESSAGE@DEMO

Any ideas what I have done wrong?

John


----------------------------------------------------------------------------
----------


    set serveroutput on

declare

    dequeue_options      dbms_aq.dequeue_options_t;
    message_properties   dbms_aq.message_properties_t;
    message_handle       RAW(16);
    message              opd4678.new_job_message@DEMO;
    --message              opd4678.new_job_message;

BEGIN

    dequeue_options.CONSUMER_NAME           := NULL;
    dequeue_options.DEQUEUE_MODE            := DBMS_AQ.REMOVE;
    dequeue_options.NAVIGATION              := DBMS_AQ.NEXT_MESSAGE;
    dequeue_options.VISIBILITY              := DBMS_AQ.IMMEDIATE;
    dequeue_options.WAIT                    := DBMS_AQ.FOREVER;
    dequeue_options.MSGID                   := null;
    dequeue_options.CORRELATION             := 'TEST MESSAGE';

    DBMS_AQ.DEQUEUE (
       queue_name         => 'opd4678.new_job_message_queue@DEMO',
       dequeue_options    => dequeue_options,
       message_properties => message_properties,
       payload            => message,
       msgid              => message_handle
    );



    dbms_output.put_line('+-----------------+');
    dbms_output.put_line('| New Job |');
    dbms_output.put_line('+-----------------+');
    dbms_output.put_line('- Message ID   := ' || message.message_id);
    dbms_output.put_line('- Filename       := ' || message.host_file_name);


    COMMIT;

    -- -------------------------------------------------------

END;
/



--
//www.freelists.org/webpage/oracle-l
--
//www.freelists.org/webpage/oracle-l

Other related posts: