Должны ли базы данных базы данных в oracle быть сброшены / закрыты после того, как вы их используете? - PullRequest
1 голос
/ 06 ноября 2010

У меня есть сценарий SQL, который подключается к другой базе данных с помощью «создать ссылку на базу данных» и копирует некоторые данные.

Должна ли эта базовая ссылка базы данных быть удалена или закрыта после того, как я ее использую?(Скажите, предположив, что мне, вероятно, это больше не понадобится).

Какая лучшая практика?

Я слышу некоторые противоречивые ответы в моей команде.

ЕслиЯ должен закрыть его, как я могу убедиться, что ссылка закрывается, когда я звоню:

drop database link somelink;

(Я получаю сообщение об ошибке, что у меня открыты соединения, что странно, потому что я не выполняю асинхронный вызов)операции / работы).

1 Ответ

6 голосов
/ 06 ноября 2010

С точки зрения передового опыта, я бы очень осторожно относился к динамическому созданию ссылок на базы данных в скрипте. Ссылки на базы данных должны быть такими же, как и любой другой объект - они должны быть созданы один раз и на них ссылаются несколько раз. Если это действительно одноразовое событие, когда вы извлекаете данные из другой базы данных, прежде чем она будет выведена из эксплуатации, создание и удаление ссылки будет иметь смысл. Для чего-то еще, я бы создал ссылку и оставил ее для следующего человека, который может в ней нуждаться, если нет острой необходимости удалить ее (т.е. вы получаете исключение из группы безопасности для создания ссылки на короткий период времени).

Вы можете закрыть ссылку на базу данных с помощью команды

ALTER SESSION CLOSE DATABASE LINK <<dblink name>>

, что, вероятно, приятно сделать, когда вы закончите с этим и перед тем, как его бросить. Это должно устранить ошибки, которые вы получаете при удалении ссылки.

...