Должны ли базовые ссылки базы данных в Oracle быть отброшены/закрыты после того, как вы закончите их использовать?

StackOverflow https://stackoverflow.com/questions/4110131

Вопрос

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

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

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

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

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

drop database link somelink;

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

Это было полезно?

Решение

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

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

ALTER SESSION CLOSE DATABASE LINK <<dblink name>>

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top