4. Использование Dblink#
Dblink - это настроенное соединение между двумя базами. Имя объекта и Dblink могут составлять имя объекта в удаленной базе данных.
4.1. Настройка Dblink (пример DBVM-DBVM).#
В данном примере показывается создание линка между двумя базами DBVM - DBVM.
4.1.1. Создаем контейнеры для Dblink#
Создаем и запускаем два контейнера с именами dbvm-redos-pr (primary) и dbvm-redos-by (standby):
docker run --name dbvm-redos-pr -it --rm -e MODE=shell -u altibase registry.dbvm.com/dbvm-redos-7.3
docker run --name dbvm-redos-by -it --rm -e MODE=shell -u altibase registry.dbvm.com/dbvm-redos-7.3
4.1.2. ИП-адреса запущенных контейнеров#
Определяем ИП-адреса этих контейнеров:
docker inspect dbvm-redos-pr | grep IPAddress
"IPAddress": "10.88.0.68",
docker inspect dbvm-redos-by | grep IPAddress
"IPAddress": "10.88.0.69",
Для данного запуска ИП-адреса контейнеров такие:
dbvm-redos-pr 10.88.0.68
dbvm-redos-by 10.88.0.69
4.1.3. Настраиваем файлы конфигурации в контейнерах#
Эта настройка необходима для создания линка в dbvm-redos-pr для ресурса dbvm-redos-by. В контейнере dbvm-redos-pr выполняем команды в оболочке:
altibase@0fe38c7c37f3:~$ pwd
/home/altibase
altibase@0fe38c7c37f3:~$ sed -i -e "s/127.0.0.1:4111/10.88.0.69:20300/g" altibase_home/conf/dblink.conf
Здесь:
altibase_home/conf/dblink.conf - конфигурационный файл
127.0.0.1:4111 - ИП-адрес и порт, заданные в шаблоне
10.88.0.69:20300 - ИП-адрес и порт удаленной базы в контейнере dbvm-redos-by
Эта настройка необходима для создания линка в dbvm-redos-by для ресурса dbvm-redos-pr. В контейнере dbvm-redos-by выполняем команды в оболочке:
altibase@cff3ca7209a4:~$ pwd
/home/altibase
altibase@cff3ca7209a4:~$ sed -i -e "s/127.0.0.1:4111/10.88.0.68:20300/g" altibase_home/conf/dblink.conf
Здесь:
altibase_home/conf/dblink.conf - конфигурационный файл
127.0.0.1:4111 - ИП-адрес и порт, заданные в шаблоне
10.88.0.68:20300 - ИП-адрес и порт удаленной базы в контейнере dbvm-redos-pr
4.1.4. Перезапускаем процесс Линкер в БД#
Подключаемся к базе в каждом контейнере (dbvm-redos-pr и dbvm-redos-by), выполнив команду:
В запущенном клиенте базы в каждом контейнере (dbvm-redos-pr и dbvm-redos-by) выполняем следующие команды:
-- dbvm-redos-pr (10.88.0.68)
-- dbvm-redos-by (10.88.0.69)
-- Перезапускаем процесс Линкер
iSQL(sysdba)> alter database linker stop;
iSQL(sysdba)> alter database linker start;
4.1.5. Создаем Dblink#
В клиенте, подключенном к базе, в контейнере dbvm-redos-pr выполняем команду:
-- dbvm-redos-pr (10.88.0.68)
-- Создаем Dblink
CONNECT sys/manager as sysdba;
CREATE PRIVATE DATABASE LINK link1 CONNECT TO sys IDENTIFIED BY manager USING target1;
Create success.
В клиенте, подключенном к базе, в контейнере dbvm-redos-by выполняем команду:
-- dbvm-redos-by (10.88.0.69)
-- Создаем Dblink
CONNECT sys/manager as sysdba;
CREATE PRIVATE DATABASE LINK link1 CONNECT TO sys IDENTIFIED BY manager USING target1;
Create success.
4.1.6. Работаем с Dblink#
В клиенте, подключенном к базе, в контейнере dbvm-redos-pr выполняем команды:
-- dbvm-redos-pr (10.88.0.68)
-- Работаем с Dblink
iSQL(sysdba)> set vertical on;
iSQL(sysdba)> select 'local', DB_SIGNATURE from v$database;
'LOCAL' : local
DB_SIGNATURE : FE6E8C43631F-692DC29B:000022F4-4F08E667
1 row selected.
iSQL(sysdba)> select 'remote', DB_SIGNATURE from v$database@link1;
'REMOTE' : remote
DB_SIGNATURE : 9A1BEF22185E-692DBEAA:0001FF26-414C3D27
1 row selected.
В клиенте, подключенном к базе, в контейнере dbvm-redos-by выполняем команды:
-- dbvm-redos-by (10.88.0.69)
-- Работаем с Dblink
iSQL(sysdba)> set vertical on;
iSQL(sysdba)> select 'local', DB_SIGNATURE from v$database;
'LOCAL' : local
DB_SIGNATURE : 9A1BEF22185E-692DBEAA:0001FF26-414C3D27
1 row selected.
iSQL(sysdba)> select 'remote', DB_SIGNATURE from v$database@link1;
'REMOTE' : remote
DB_SIGNATURE : FE6E8C43631F-692DC29B:000022F4-4F08E667
1 row selected.
4.1.7. Удаляем Dblink#
В клиенте, подключенном к базе, в контейнере dbvm-redos-pr выполняем команду:
В клиенте, подключенном к базе, в контейнере dbvm-redos-by выполняем команду:
4.2. Настройка Dblink (пример Oracle-DBVM).#
В данном примере показывается создание линка между двумя базами Oracle - DBVM.
4.2.1. Создаем контейнеры для Dblink#
Подготавливаем контейнер с СУБД Oracle. Для этого выполняем следующие команды. Создаем Dockerfile следующего содержимого:
Этот файл необходим для сборки контейнера с СУБД Oracle из готового образа http://hub.docker.com/r/gvenzl/oracle-xe, но с открытым портом 1521.
Далее собираем локальный образ контейнера:
Проверяем наличие образа контейнера в локальном реестре:
Создаем и запускаем контейнер с именем oracle-xe-pr (primary):
Подключаемся к контейнеру oracle-xe-pr:
Подключаемся к базе XE:
Создаем в базе пользователя:
-- oracle-xe-pr (10.88.0.68)
-- Создаем пользователя
create user HH identified by HH;
grant create session to HH;
grant select any dictionary to HH;
Создаем и запускаем контейнер с именем dbvm-redos-by (standby):
4.2.2. ИП-адреса запущенных контейнеров#
Определяем ИП-адреса этих контейнеров:
docker inspect oracle-xe-pr | grep IPAddress
"IPAddress": "10.88.0.68",
docker inspect dbvm-redos-by | grep IPAddress
"IPAddress": "10.88.0.69",
Для данного запуска ИП-адреса контейнеров такие:
oracle-xe-pr 10.88.0.68
dbvm-redos-by 10.88.0.69
4.2.3. Настраиваем файлы конфигурации в контейнерах#
Эта настройка необходима для создания линка в dbvm-redos-by для ресурса oracle-xe-pr. В контейнере dbvm-redos-by выполняем команды в оболочке:
altibase@0fe38c7c37f3:~$ pwd
/home/altibase
altibase@0fe38c7c37f3:~$ sed -i -e "s/127.0.0.1:4113:ORCL/10.88.0.68:1521:XE/g" altibase_home/conf/dblink.conf
altibase@0fe38c7c37f3:~$ sed -i -e "s/user2/HH/g" altibase_home/conf/dblink.conf
altibase@0fe38c7c37f3:~$ sed -i -e "s/pwd2/HH/g" altibase_home/conf/dblink.conf
Здесь:
altibase_home/conf/dblink.conf - конфигурационный файл
127.0.0.1:4111 - ИП-адрес и порт, заданные в шаблоне
10.88.0.68:1521 - ИП-адрес и порт удаленной базы в контейнере oracle-xe-pr
4.2.4. Перезапускаем процесс Линкер в БД#
Подключаемся к базе в контейнере dbvm-redos-by, выполнив команду:
В запущенном клиенте базы в контейнере dbvm-redos-by выполняем следующие команды:
-- dbvm-redos-by (10.88.0.69)
-- Перезапускаем процесс Линкер
iSQL(sysdba)> alter database linker stop;
iSQL(sysdba)> alter database linker start;
4.1.5. Создаем Dblink#
В клиенте, подключенном к базе, в контейнере dbvm-redos-by выполняем команду:
-- dbvm-redos-by (10.88.0.69)
-- Создаем Dblink
CONNECT sys/manager as sysdba;
CREATE PRIVATE DATABASE LINK link1 CONNECT TO HH IDENTIFIED BY HH USING ora1;
Create success.
4.2.6. Работаем с Dblink#
В клиенте, подключенном к базе, в контейнере dbvm-redos-by выполняем команды:
-- dbvm-redos-by (10.88.0.69)
-- Проверяем Dblink
iSQL(sysdba)> set vertical on;
iSQL(sysdba)> select 'local', DB_SIGNATURE from v$database;
'LOCAL' : local
DB_SIGNATURE : 9A1BEF22185E-692DBEAA:0001FF26-414C3D27
1 row selected.
iSQL(sysdba)> select 'remote', DBID from v$database@link1;
'REMOTE' : remote
DBID : 3062126794
1 row selected.
4.2.7. Удаляем Dblink#
В клиенте, подключенном к базе, в контейнере dbvm-redos-by выполняем команду: