Oracle: Использование ссылки на базу данных в хранимой процедуре: таблица или представление не существует

В настоящее время у меня проблема, из-за которой я не могу ссылаться на таблицу в связанной базе данных в хранимой процедуре. Я получаю сообщение об ошибке:

ORA-00942: таблица или представление не существует

Вот шаги, которые я предпринял на хост-машине (запущен oracle 10g), чтобы настроить связь базы данных с удаленной базой данных (запущен oracle 11г). Шаги точны, но некоторые имена были изменены, хотя они остались неизменными.

  1. Обновите tnsnames.ora, добавив новую запись:

     REMOTE_DB = 
     (DESCRIPTION = 
     (ADDRESS = (PROTOCOL = TCP) 
     (HOST = 10.10.10) .10) 
     (QUEUESIZE = 20) 
     (PORT = 1521) 
    ) 
     (CONNECT_DATA = 
     (SERVICE_NAME = remote_service) {{1} }) 
    ) 
     
  2. Создать ссылку на базу данных, как пользователь, который позже будет создавать и выполнять хранимую процедуру:

     создать ссылку на базу данных remote_link 
    подключиться к "remote_user" "
    идентифицировано" remote_pass "
    с помощью 'REMOTE_DB'; 
     
  3. Докажите, что ссылка на базу данных работает, выбрав из него:

     select id from remote_table @ remote_link; { {1}} 
    идентификатор 
     ----------------------------------- --------------------------------------------- 
    8ac6eb9b-fcc1-4574-8604-c9fd4412b917 
    c9e7ee51-2314-4002-a684-7817b181267b 
    cc395a81-56dd-4d68-9bba-fa926dad4fc7 {{1 }-450ea-baf14-356-36b4-64-64-afc7 {{1 }-450a-baf14-36b6b2) 2acc18b9c008 
     
  4. Создать хранимую процедуру, которая зависит от рабочей ссылки на базу данных:

     создать или заменить 
    PROCEDURE test_remote_db_link 
    AS 
    v_id varchar (50); { {1}} НАЧАТЬ 
    выбрать идентификатор в v_id из remote_table @ remote_link, где id = 'c9e7ee51-2314-4002-a684-7817b181267b'; 
    dbms_output.put_line ('v_id:' || v_id); 
    END test_remote_db_link; 
     
  5. Взрыв собственной головы после просмотра следующего сообщения об ошибке в течение всего рабочего дня:

     Ошибка (10,27): PL / SQL: ORA-00942: таблица или представление не существует 
     

Я пробовал много вещей, чтобы решить эту проблему, в том числе:

  1. При создании ссылки на базу данных не использовать кавычки вокруг имени пользователя и пароля. . Ссылка работает нормально, но выбор из нее дает мне эту ошибку:

     ОШИБКА в строке 1: 
    ORA-01017: неверное имя пользователя / пароль; вход в систему запрещен 
    ORA-02063: предыдущая строка из TWS_LINK 
     
  2. Пробовали различные комбинации имени пользователя и пароля в верхнем / нижнем регистре. Получена та же ошибка, что и 1.

  3. Пробовали заключать имя пользователя и пароль в одинарные кавычки вместо двойных. Получена эта ошибка:

     ОШИБКА в строке 1: 
    ORA-00987: отсутствующие или недопустимые имена пользователей 
     
  4. Доказано, что у меня есть полный доступ к удаленной базе данных, подключившись к ней с помощью sqlplus:

      [oracle] $ sqlplus remote_user / remote_pass @ REMOTE_DB 
     
    SQL * Plus: выпуск 10.2.0.1. 0 - Производство в четверг, 20 октября, 22:23:12 2011 г. 
     
    Авторское право (c) 1982, 2005, Oracle. Все права защищены. 
     
     
    Подключено к: 
    Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64-битная производственная версия 
    Параметры OLAP, интеллектуального анализа данных и тестирования реальных приложений 
     
    SQL> 
     

Я не знаю, что делать дальше. Следующий возможный шаг - начать искать проблемы в удаленной базе данных и, возможно, посмотреть, могут ли другие базы данных подключиться к ней. Другой - посмотреть на несовместимость, идущую от хоста 10g к удаленному 11g.

11
задан Cœur 5 March 2017 в 14:46
поделиться