Referenciando tipos definidos pelo usuário Oracle sobre DBLINK?

Estou trabalhando em dois esquemas diferentes do Oracle em duas instâncias diferentes do Oracle. Eu defini vários tipos e coleções de tipos para transferir dados entre esses esquemas. O problema que encontro é que, embora o tipo tenha exatamente as mesmas definições (os mesmos scripts usados para criar os dois conjuntos nos esquemas), o Oracle os vê como objetos diferentes que não são intercambiáveis.

Pensei em converter o objeto de tipo remoto de entrada como o mesmo tipo local, mas recebo um erro ao referenciar tipos em dblinks.

Basicamente, estou fazendo o seguinte:

DECLARE
  MyType  LocalType; -- note, same definition as the RemoteType (same script)
BEGIN
  REMOTE_SCHEMA.PACKAGE.PROCEDURE@DBLINK( MyType );  -- MyType is an OUT param
  LOCAL_SCHEMA.PACKAGE.PROCEDURE( MyType ); -- IN param
END;

Isso falha porque a chamada de procedimento REMOTE não consegue entender o MyType, pois trata LocalType e RemoteType como tipos de objetos diferentes.

Tentei DECLARAR MyType da seguinte forma:

  MyType REMOTE_SCHEMA.RemoteType@DBLINK;

mas recebo outro erro sobre a referência de tipos entre dblinks. CASTing entre tipos também não funciona porque, para transmitir, preciso fazer referência ao tipo remoto através do dblink - o mesmo problema, o mesmo erro. Eu também tentei usar SYS.ANYDATA como o objeto que cruza entre as duas instâncias, mas ele recebe um erro semelhante.

Alguma ideia?

ATUALIZAR: Tentei declarar o tipo de objeto nos dois lados do DBLINK usando o mesmo OID (recuperado manualmente usandoSYS_OP_GUID()), mas a Oracle ainda "vê" os dois objetos como diferentes e gera um erro "número errado ou tipos de argumentos".

questionAnswers(2)

yourAnswerToTheQuestion