Skip to main content

Инитлоад через промежуточный сервер:

Возможна ситуация, когда по каким то причинам, выгрузить и перебросить дамп - файл с источника на приеёмник, не представляется возможным. Тогда, мы можем сделать первоначальную загрузку, средствами самого голденгейта:GoldenGate:

На источнике, создадим экстракт:

GGSCI>> DBLOGIN USERIDALIAS source_alias
GGSCI>> ADD EXTRACT E_LOAD, SOURCEISTABLE
GGSCI>> EDIT PARAMS E_LOAD
EXTRACT E_LOAD
USERIDALIAS source_alias
RMTHOST intermediate.local.net, MGRPORT 7809
RMTTASK extract, GROUP p_load
RMTTRAIL ./dirdat/ip
TABLE ACCOUNTS.PROT_ID;
TABLE ACCOUNTS.COMPANY;
TABLE ACCOUNTS.ACCOUNTS;
TABLE ACCOUNTS.ACCOUNT_HISTORY;

Экстракт прочитает таблицы напрямую (SOURCEISTABLE) и отправит данные в удалённый трейл на промежуточном сервере.

На промежуточном сервере, создадим обычный памп (extract в роли дата-пампа), который будет читать только что записанный трейл и пересылать его дальше, на конечный приёмник:

GGSCI>> ADD EXTRACT p_loadp_load, EXTTRAILSOURCE ./dirdat/ip
GGSCI> EDIT PARAMS p_load
EXTRACT p_load,p_load
rmthostRMTHOST dest.local.netnet, mgrportMGRPORT 7809, tcpbufsize 1000000, tcpflushbytes 1000000, compress
RMTTASK extract, GROUP p_load7809
RMTTRAIL ./dirdat/ip
TCPBUFSIZE 1000000
TCPFLUSHBYTES 1000000
COMPRESS
TABLE ACCOUNTS.PROT_ID;
TABLE ACCOUNTS.COMPANY;
TABLE ACCOUNTS.ACCOUNTS;
TABLE ACCOUNTS.ACCOUNT_HISTORY;

На приеёмнике, создадим репликат, который будет выполнять загрузку (параметр SPECIALRUN – репликат отработает один раз и завершится):

GGSCI>> DBLOGIN USERIDALIAS dest_alias
GGSCI>> ADD REPLICAT R_LOAD, specialrunSPECIALRUN
GGSCI> EDIT PARAMS R_LOAD
REPLICAT R_LOAD,R_LOAD
EXTTRAIL ./dirdat/ip
USERIDALIAS dest_alias
DEFAULT
eofdelayEOFDELAY 30
SETENV ( NLS_LANG="AMERICAN_AMERICA.CL8MSWIN1251" )
ASSUMETARGETDEFS
MAP ACCOUNTS.PROT_ID         TARGET ACCOUNTS.PROT_ID;
MAP ACCOUNTS.COMPANY         TARGET ACCOUNTS.COMPANY;
MAP ACCOUNTS.ACCOUNTS        TARGET ACCOUNTS.ACCOUNTS;
MAP ACCOUNTS.ACCOUNT_HISTORY TARGET ACCOUNTS.ACCOUNT_HISTORY;

После настройки запускаем процессы в правильном порядке: сначала репликат на приёмнике (он будет ждать данные), затем экстракт на источнике. Репликат завершится сам после применения всех записей, а экстракт закончит работу, когда вычитает все строки из таблиц. Готово – первоначальная загрузка выполнена без создания физического дампа.

Следить за состоянием проуесса, обычными командами SEND <Имя процесса> STATUS, или можо посомтреть статистику, командой STATS <Имя процесса>