2009-05-16 3 views
0

Я разработчик SQL Server с заданием в Oracle. DBA настроил DBLink в Oracle, который указывает на базу данных SQL Server. Я пишу представление данных SQL Server, а затем представление на стороне Oracle, чтобы присоединиться к нему с дополнительными данными Oracle.Запрос SQL Server от Oracle - обновление метаданных - принудительное обновление

Проблема: если я изменил определение представления на SQL Server, даже «Выберите * Из myview @ dblink» с ошибкой «Недопустимый столбец». Закрытие TOAD и повторное открытие, похоже, исправляют проблему, но реальный вопрос заключается в том, как заставить Oracle перечитать метаданные без перезагрузки соединения?

ответ

0

Это, похоже, проблема с клиентом Oracle 10g. Текущее решение состоит в отключении и повторном подключении. Учитывая, что я не смог найти кого-либо еще с этой проблемой, я буду считать, что это проблема с моей конфигурацией клиента.

0

Может быть, вы можете сделать ?:

alter view <<view_name>> compile; 

Я не проверял это, потому что у меня нет никакой связи дб от Oracle до MSSQL.

+0

Я попробую первым делом на Понедельник. – Bill

1

Это звучит как проблема с TOAD, а не с оракулом. Что произойдет, если вы сделаете это в SQL * Plus?

+0

То же самое происходит в SQL * Plus. Если я выйду и вернусь, все будет хорошо. Должен быть кеширование метаданных объекта подключения. Следующий тест, я запросил представление в TOAD, изменил его, снова спросил его. Это не удалось. Затем я открыл второе соединение. Запрос прошел нормально. Должен быть на объекте соединения. – Bill

+0

Что произойдет, если вы выполните фиксацию/откат в своей сессии? –

+0

Nope. Ничто не убивает соединение, заставляет обновлять метаданные. Должно быть что-то в конфигурации клиента Oracle - это контролируется нашим персоналом Operations. Я поговорю с ними. Спасибо Мэтью и tuinstoel за помощь. – Bill

1

я не знаю, если я вас понимаю, но если вы получили dblink, который указывает на сервер БД SQL в вашей БД Oracle и вам нужны данные в сервере SQL вобще:

SELECT * 
FROM [email protected] 

SELECT "COL", "COL2", "COL3 
from [email protected] 


SELECT T."COL", H."COL" 
FROM [email protected] T, [email protected] H 
WHERE T."ID" = H."ID" 
Смежные вопросы