В настоящее время у меня проблема, из-за которой я не могу ссылаться на таблицу в связанной базе данных в хранимой процедуре. Я получаю сообщение об ошибке:
ORA-00942: таблица или представление не существует
Вот шаги, которые я предпринял на хост-машине (запущен oracle 10g), чтобы настроить связь базы данных с удаленной базой данных (запущен oracle 11г). Шаги точны, но некоторые имена были изменены, хотя они остались неизменными.
Обновите tnsnames.ora, добавив новую запись:
REMOTE_DB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)
(HOST = 10.10.10) .10)
(QUEUESIZE = 20)
(PORT = 1521)
)
(CONNECT_DATA =
(SERVICE_NAME = remote_service) {{1} })
)
Создать ссылку на базу данных, как пользователь, который позже будет создавать и выполнять хранимую процедуру:
создать ссылку на базу данных remote_link
подключиться к "remote_user" "
идентифицировано" remote_pass "
с помощью 'REMOTE_DB';
Докажите, что ссылка на базу данных работает, выбрав из него:
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
Создать хранимую процедуру, которая зависит от рабочей ссылки на базу данных:
создать или заменить
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;
Взрыв собственной головы после просмотра следующего сообщения об ошибке в течение всего рабочего дня:
Ошибка (10,27): PL / SQL: ORA-00942: таблица или представление не существует
Я пробовал много вещей, чтобы решить эту проблему, в том числе:
При создании ссылки на базу данных не использовать кавычки вокруг имени пользователя и пароля. . Ссылка работает нормально, но выбор из нее дает мне эту ошибку:
ОШИБКА в строке 1:
ORA-01017: неверное имя пользователя / пароль; вход в систему запрещен
ORA-02063: предыдущая строка из TWS_LINK
Пробовали различные комбинации имени пользователя и пароля в верхнем / нижнем регистре. Получена та же ошибка, что и 1.
Пробовали заключать имя пользователя и пароль в одинарные кавычки вместо двойных. Получена эта ошибка:
ОШИБКА в строке 1:
ORA-00987: отсутствующие или недопустимые имена пользователей
Доказано, что у меня есть полный доступ к удаленной базе данных, подключившись к ней с помощью 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.