Передача через ссылку база данных в Oracle 10G сжата?Является ли это возможным?
-
08-09-2020 - |
Вопрос
Я передаю данные из одной базы в другую через ссылки базы данных (используя INSERT INTO SELECT ...
).
Я хочу знать, передаются ли данные через ссылку, сжаты или могут быть сжаты, чтобы избежать слишком большого количества использования сети.У меня очень мало пропускной способности, и я думаю, что это поможет, если она еще не сделана.
Решение
Есть некоторые de-deplication но нет серьезного сжатия.
Есть функция UTL_COMPRESS, но было бы сложно получить это, чтобы расслабиться на пункт назначения (возможно, спусковой крючок или вместо того, чтобы просмотреть - но он неуклюжем).
expdp может использовать ссылку базы данных ( news_link ) и, в 11G, компрессия Требуется ли требует%%20DATA_ONLY%20Option%20Requires%20That%20There%20Orachence%20Advanced%20Compression%20Option%20be%20Enabled."> Расширенная опция сжатия будет лицензирована . < / P >.
Наконец, есть обычный экстракт, ZIP, передача, расстегление, нагрузка
в 11ггр2 Вы можете использовать внешние таблицы с помощью Препроцессор для распаковки , чтобы вы могли получить полуавтоматическую опцию.
Другие советы
Как говорит @gary, не втаконно, но можно получить сжатие, используя SSH-туннель, предполагая, что у вас все равно имеет доступ к командной строке. Страница SSH MAN отмечает, что сжатие может замедлить вещи на быструю сеть, но это компромисс может стоить того, если вы серьезно ограничены пропускной способностью; И вам, возможно, понадобится экспериментировать с CompressionLevel
в ssh_config
, чтобы получить наилучшие результаты для вашей ситуации.
Например, если ваша существующая ссылка определяется для подключения к remote_server
Port GeneracodicCode:
create database link direct connect to usr identified by pwd
using 'DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=remote_server)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=remote_service)))'
.
Вы можете создать туннель SSH, используя бесплатный локальный порт, с чем-то вроде:
ssh -C -N -L1522:localhost:1521 remote_server
.
, а затем вы можете иметь ссылку DB, которая указывает на локальную сторону туннеля:
create database link direct connect to usr identified by pwd
using 'DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1522))
(CONNECT_DATA=(SERVICE_NAME=remote_service)))'
.
Так что вы просто поменяете хост и порт. Если ваша существующая ссылка использует запись GenSodicEtagCode, вы можете просто изменять что вместо этого, чтобы указать на 1521
вместо tnsnames
.
Конечно, вы должны убедиться, что ссылка SSH придерживается всякий раз, когда вы используете ссылку БД. Если он снизится, вы получите сообщение об ошибке localhost:1522
, поскольку на вашем локальном порте ничего не будет слушать.