Как говорит @Gary, не изначально, но можно получить сжатие, используя SSH-туннель, при условии, что у вас все равно есть доступ к командной строке. Справочная страница по SSH отмечает, что сжатие может замедлить работу быстрой сети, но этот компромисс может стоить того, если вы сильно ограничены в пропускной способности; и вам, возможно, придется поэкспериментировать с CompressionLevel
в ssh_config
, чтобы получить наилучшие результаты для вашей ситуации.
Например, если ваша существующая ссылка определена для подключения к remote_server
порту 1521
:
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
И тогда у вас может быть ссылка на БД, указывающая на локальную сторону туннеля:
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)))'
То есть вы просто меняете хост и порт. Если ваша существующая ссылка использует запись tnsnames
, вы можете просто изменить ее, указав localhost:1522
вместо remote_server:1521
.
Конечно, вы должны убедиться, что SSH-соединение работает, когда вы используете БД. Если он не работает, вы получите ошибку ORA-12541: TNS:no listener
, так как на вашем локальном порту 1522 ничего не будет прослушиваться.