{"id":456795,"date":"2025-04-21T15:01:00","date_gmt":"2025-04-21T15:01:00","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=456795"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=456795","title":{"rendered":"<span>\u0422\u043e\u043b\u044c\u043a\u043e \u0445\u0430\u0440\u0434\u043a\u043e\u0440, \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u043d\u0443\u0430\u043b: \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!<\/p>\n<p>\u041a\u0430\u0436\u0434\u0430\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u044b\u043b\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043d\u043e \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u044b (\u0441\u043f\u0430\u0441\u0438\u0431\u043e, \u041a\u042d\u041f!). \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0417\u041e\u041a\u0418\u0418 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043f\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0437\u0430\u043c\u0435\u0449\u0435\u043d\u0438\u044e \u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u043e\u0432\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u2014 <strong>\u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/strong>. \u041e\u043d\u0430 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u043c \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0442\u0443\u0449\u0438\u043c\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u043c\u0438, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0449\u0438\u0442\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u043c\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0435 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438, \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430. \u0425\u0432\u0430\u0442\u0438\u0442 \u0441\u043b\u043e\u0432 \u2013 \u0437\u0430 \u0434\u0435\u043b\u043e!\u00a0 \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043f\u043e\u043a\u0430\u0436\u0435\u043c \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439. <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7c7\/2ef\/b3f\/7c72efb3f2e72a50ba6f7ebdd7d8667c.jpg\" width=\"1024\" height=\"1024\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/7c7\/2ef\/b3f\/7c72efb3f2e72a50ba6f7ebdd7d8667c.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7c7\/2ef\/b3f\/7c72efb3f2e72a50ba6f7ebdd7d8667c.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><strong>\u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 Oracle \u0438 PostgreSQL \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Oracle GoldenGate<\/strong><\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043a\u0435\u0439\u0441\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 Oracle -&gt; Postgres. <\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a (Oracle). <em>\u041f\u043e\u043c\u043d\u0438\u043c, \u0431\u0430\u0437\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 Archive Logging \u2014 \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435. <\/em> <\/p>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a Oracle \u0447\u0435\u0440\u0435\u0437 Sqlplus, \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u0411\u0414 \u0432 mount \u0438 \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:<\/p>\n<p>&#8212; \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0430\u0440\u0445\u0438\u0432\u0430\u0446\u0438\u044e \u043b\u043e\u0433\u043e\u0432:<\/p>\n<pre><code>SQL&gt; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;<\/code><\/pre>\n<p>&#8212; \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439:<\/p>\n<pre><code>SQL&gt; ALTER DATABASE FORCE LOGGING;<\/code><\/pre>\n<p>&#8212; \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435:<\/p>\n<pre><code>SQL&gt; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;<\/code><\/pre>\n<p>&#8212; \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c:<\/p>\n<pre><code>SQL&gt; SELECT log_mode, supplemental_log_data_min, force_logging FROM v$database;<\/code><\/pre>\n<p>&#8212; \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0432 \u0411\u0414 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f GoldenGate:<\/p>\n<pre><code>SQL&gt; CREATE USER ggadmin IDENTIFIED BY ggpassword DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;<\/code><\/pre>\n<p>&#8212; \u0432\u044b\u0434\u0430\u0435\u043c \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 GoldenGate<\/p>\n<pre><code>SQL&gt; GRANT CONNECT, RESOURCE TO ggadmin; GRANT CREATE SESSION TO ggadmin; GRANT SELECT ANY DICTIONARY TO ggadmin; GRANT EXECUTE ON DBMS_LOGMNR TO ggadmin; GRANT EXECUTE ON DBMS_LOGMNR_D TO ggadmin; GRANT EXECUTE ON DBMS_FLASHBACK TO ggadmin; GRANT SELECT ON V_$DATABASE TO ggadmin; GRANT SELECT ON ALL_TABLES TO ggadmin; GRANT SELECT ON DBA_REGISTERED_ARCHIVED_LOG TO ggadmin; GRANT SELECT ON DBA_CAPTURE TO ggadmin; GRANT SELECT ON DBA_APPLY TO ggadmin;<\/code><\/pre>\n<p>&#8212; \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e GGADMIN \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e GoldenGate:<\/p>\n<pre><code>SQL&gt; EXEC dbms_goldengate_auth.grant_admin_privilege('GGADMIN'); ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH;<\/code><\/pre>\n<p>&#8212; \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b:<\/p>\n<pre><code>SQL&gt; ALTER TABLE schema_name.table_name ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS.<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 GoldenGate Extract \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 Oracle.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c c\u0430\u043c GG. \u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c \u0430\u0440\u0445\u0438\u0432 \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0445\u043e\u0441\u0442 \u0441 \u043d\u0430\u0448\u0435\u0439 \u0431\u0430\u0437\u043e\u0439-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0438 \u0440\u0430\u0437\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e:<\/p>\n<pre><code>bash&gt; mkdir -p \/u01\/app\/ogg  mv ~\/ggs_*.zip \/u01\/app\/ogg  cd \/u01\/app\/ogg  unzip ggs_*.zip<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c ggsci: <\/p>\n<pre><code>bash&gt; cd \/u01\/app\/ogg .\/ggsci .\/ggsci<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438: <\/p>\n<pre><code>GGSCI&gt; CREATE SUBDIRS<\/code><\/pre>\n<p>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c OGG \u0432 PATH \u2014 \u0442\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<pre><code>bash&gt; echo \"export OGG_HOME=\/u01\/app\/ogg\" &gt;&gt; ~\/.bashrc echo \"export PATH=\\$OGG_HOME:\\$PATH\" &gt;&gt; ~\/.bashrc source ~\/.bashrc<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441-\u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430. \u041e\u043d \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u044e\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u0438\u0445 \u0432 Postgres: <\/p>\n<pre><code>GGSCI&gt; EDIT PARAM MGR<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e:<\/p>\n<pre><code>PORT 7809 DYNAMICPORTLIST 7810-7820 ACCESSRULE, PROG *, IPADDR *, ALLOW<\/code><\/pre>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c: <\/p>\n<pre><code>GGSCI&gt; START MGR<\/code><\/pre>\n<p>\u0417\u0430\u0434\u0430\u0435\u043c \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0411\u0414-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443:<\/p>\n<pre><code>GGSCI&gt; ADD CREDENTIALSTORE ALTER CREDENTIALSTORE ADD USER ggadmin@ORACLE_TNS_ALIAS ALIAS ggadmin<\/code><\/pre>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 Extract:<\/p>\n<pre><code>GGSCI&gt; DBLOGIN USERIDALIAS ggadmin ADD EXTRACT eORACLE TRANLOG, INTEGRATED TRANLOG, BEGIN NOW ADD EXTTRAIL .\/dirdat\/lt, EXTRACT eORACLE REGISTER EXTRACT eORACLE DATABASE<\/code><\/pre>\n<p>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b: <\/p>\n<pre><code>GGSCI&gt; EDIT PARAM eORACLE<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u044d\u043a\u0441\u0442\u0440\u0430\u043a\u0442\u043e\u0440\u0430: <\/p>\n<pre><code>EXTRACT eORACLE USERIDALIAS ggadmin TRANLOGOPTIONS INTEGRATEDPARAMS (DOWNSTREAM_REAL_TIME_MINE Y) EXTTRAIL .\/dirdat\/lt TABLE schema_name.table_name;<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0435\u0433\u043e: <\/p>\n<pre><code>GGSCI&gt; START eORACLE<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e \u0441\u0435\u0442\u0438, \u2014 PUMP: <\/p>\n<pre><code>GGSCI&gt; ADD EXTRACT pORACLE EXTTRAILSOURCE .\/dirdat\/lt ADD RMTTRAIL .\/dirdat\/rt, EXTRACT pORACLE<\/code><\/pre>\n<p>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<pre><code>GGSCI&gt; EDIT PARAM pORACLE<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0430\u043c\u043f\u0430:<\/p>\n<pre><code>EXTRACT pORACLE USERIDALIAS ggadmin RMTHOST target_host, MGRPORT 7810 RMTTRAIL .\/dirdat\/rt PASSTHRU TABLE schema_name.table_name;<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0435\u0433\u043e:<\/p>\n<pre><code>GGSCI&gt; START pORACLE<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443-\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0443 \u2014 PostgreSQL. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0432\u044b\u0434\u0430\u0435\u043c \u0435\u043c\u0443 \u043f\u0440\u0430\u0432\u0430.<\/p>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a PostgreSQL \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <strong>psql -U postgres <\/strong>\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043d\u0443\u0436\u043d\u0443\u044e \u0411\u0414 \\c dbname<\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c:<\/p>\n<pre><code>CREATE USER ggadmin WITH LOGIN PASSWORD 'ggpassword'; GRANT CONNECT ON DATABASE target_db TO ggadmin; GRANT USAGE ON SCHEMA target_schema TO ggadmin; GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA target_schema TO ggadmin;<\/code><\/pre>\n<p>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0434\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b:<\/p>\n<pre><code>ALTER DEFAULT PRIVILEGES IN SCHEMA target_schema GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON TABLES TO ggadmin;<\/code><\/pre>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c GoldenGate \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438, \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u043b\u0438 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c ORACLE, \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c ODBC. \u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c odbc.ini: <\/p>\n<pre><code>[ODBC Data Sources] GG_Postgres=DataDirect 9.6 PostgreSQL Wire Protocol  [GG_Postgres] Driver=\/ogg\/lib\/ggpsql25.so Description=PostgreSQL Wire Protocol Database=target_db HostName=localhost PortNumber=5432 LogonID=ggadmin Password=ggpassword<\/code><\/pre>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 Replicat \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 PostgreSQL.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438:<\/p>\n<pre><code>GGSCI&gt; CREATE SUBDIRS<\/code><\/pre>\n<p>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430:<\/p>\n<pre><code>GGSCI&gt; EDIT PARAM MGR PORT 7810 DYNAMICPORTLIST 7811-7820 ACCESSRULE, PROG REPLICAT, IPADDR *, ALLOW<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440: <\/p>\n<pre><code>GGSCI&gt; START MGR<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 Replicat:<\/p>\n<pre><code>GGSCI&gt; DBLOGIN USERID ggadmin PASSWORD ggpassword ADD REPLICAT rPOSTGRES EXTTRAIL .\/dirdat\/rt, CHECKPOINTTABLE ggadmin.checkpoint<\/code><\/pre>\n<p>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<pre><code>GGSCI&gt; EDIT PARAM rPOSTGRES REPLICAT rPOSTGRES SETENV (PGCLIENTENCODING = \"UTF8\") SETENV (ODBCINI=\"\/ogg\/odbc.ini\") SETENV (NLS_LANG=\"AMERICAN_AMERICA.AL32UTF8\") TARGETDB GG_Postgres, USERID ggadmin, PASSWORD ggpassword MAP schema_name.table_name, TARGET target_schema.table_name;<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0442: <\/p>\n<pre><code>GGSCI&gt; START rPOSTGRES<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435: <\/p>\n<pre><code>GGSCI&gt; INFO ALL<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 Oracle \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443:<\/p>\n<pre><code>SQL&gt; INSERT INTO schema_name.table_name VALUES (...); COMMIT;<\/code><\/pre>\n<p>\u041d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 PostgreSQL \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: <\/p>\n<pre><code>SELECT * FROM target_schema.table_name;<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u2014 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0431\u043e\u0442\u044b \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>GGSCI&gt; VIEW REPORT rPOSTGRES <\/code> <\/p>\n<p>Good job! <\/p>\n<h3>\u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 PostgreSQL\u2192ORACLE \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Oracle GoldenGate<\/h3>\n<p>\u0414\u043b\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u2014 <strong>Oracle GoldenGate. <\/strong><\/p>\n<p><a href=\"https:\/\/www.oracle.com\/middleware\/technologies\/goldengate-downloads.html\">\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c <\/a>\u0438 <a href=\"https:\/\/docs.oracle.com\/en\/middleware\/goldengate\/core\/21.3\/installing\/installing-classic-architecture.html#GUID-D75AE25F-4A60-4123-9274-7D39ACB22F5A\">\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c <\/a>Oracle GoldenGate \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f.<\/p>\n<p>\u0420\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0430\u0440\u0445\u0438\u0432 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 Oracle GoldenGate \u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Oracle GoldenGate. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 Oracle GoldenGate, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f <code>GGSCI (.\/ggsci)<\/code> \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438:<\/p>\n<pre><code>GGSCI&gt; create subdirs<\/code><\/pre>\n<p>\u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 MANAGER \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0440\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0443\u0448\u0430\u0442\u044c:<\/p>\n<pre><code>GGSCI&gt; edit param MGR PORT 7800 GGSCI&gt; start MGR<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b GLOBALS \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0445\u0435\u043c\u0443 ggs, \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 GoldenGate \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b PostgreSQL. \u0424\u0430\u0439\u043b Globals \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432\u0441\u0435\u0439 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438: <\/p>\n<pre><code>GGSCI&gt; edit param .\/GLOBALS GGSCHEMA ggadmn<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c PostgreSQL \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 OGG<strong>. <\/strong>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 WAL \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 PostgreSQL\u00a0postgresql.conf<strong>: <\/strong>wal_level = logical<strong>. <\/strong> <\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430: \u042d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f WAL (Write-Ahead Logging) \u043d\u0430 &#171;logical&#187;, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0434\u043b\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438. \u041e\u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u043b\u043e\u0442\u044b. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432 WAL-\u0444\u0430\u0439\u043b\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438.<\/em><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u00a0<strong>max_replication_slots<\/strong> \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438: <strong>max_replication_slots = 5<\/strong>.<\/p>\n<p>\u041e\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043b\u043e\u0442\u043e\u0432 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 PostgreSQL \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b GoldenGate, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043b\u043e\u0442 \u0434\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043b\u043e\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0431\u044d\u043a\u0430\u043f\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c. <\/p>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c PostgreSQL \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0445\u043e\u0434\u0438\u043c \u0432 PostgreSQL:\u00a0<strong>psql -U postgres<\/strong>. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a \u0431\u0430\u0437\u0435 Postgres \u043e\u0442 \u0435\u0433\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:\u00a0<\/p>\n<p><strong>CREATE ROLE ggadmn LOGIN PASSWORD &#8216;password&#8217;;<\/strong> \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f ggadmn \u0441 \u043f\u0430\u0440\u043e\u043b\u0435\u043c.<\/p>\n<p>\u041d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438:\u00a0<\/p>\n<pre><code>ALTER ROLE ggadmn REPLICATION; <\/code><\/pre>\n<p>\u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0443 \u0432\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438. <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0435 (Oracle \u0411\u0414).<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c: <\/p>\n<p><code>SQL&gt;create user ggadmn identified by ggadmn default tablespace users temporary SQL&gt;tablespace temp; -- \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 Oracle \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/code><\/p>\n<p><code>SQL&gt;grant connect to\u00a0 ggadmn; -- \u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.<\/code><\/p>\n<p><code>SQL&gt;grant resource to\u00a0 ggadmn; -- \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043f\u0440\u0430\u0432\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445.<\/code><\/p>\n<p><code>SQL&gt;exec dbms_goldengate_auth.grant_admin_privilege ('ggadmn'); --\u041d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438 \u0434\u043b\u044f GoldenGate.<\/code><\/p>\n<p><code>SQL&gt;alter system set enable_goldengate_replication=TRUE scope=both; --\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 GoldenGate.<\/code><\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 GoldenGate \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 (PostgreSQL). \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 (PostgreSQL). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c odbc.ini \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0441\u0432\u043e\u0438\u0445 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a. \u0417\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f PostgreSQL: <\/p>\n<pre><code>bash&gt; vi dirprm\/extname.prm<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438:<\/p>\n<p><code>EXTRACT extname --\u0418\u043c\u044f Extract-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430.<\/code><\/p>\n<p><code>SOURCEDB dsn_name USERIDALIAS alias --\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0431\u0430\u0437\u0435 PostgreSQL \u0447\u0435\u0440\u0435\u0437 DSN \u0438 \u0430\u043b\u0438\u0430\u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/code><\/p>\n<p><code>RMTHOST &lt;TARGET_IP_ADDRESS&gt;, MGRPORT 7809 --\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 IP-\u0430\u0434\u0440\u0435\u0441 \u0438 \u043f\u043e\u0440\u0442 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 GoldenGate \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 Oracle.<\/code><\/p>\n<p><code>RMTTRAIL \/u01\/app\/oracle\/product\/gg\/dirdat\/pg --\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 (trail-\u0444\u0430\u0439\u043b\u044b).<\/code><\/p>\n<p><code>GETTRUNCATES --\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043a\u043e\u043c\u0430\u043d\u0434 TRUNCATE.<\/code><\/p>\n<p><code>TABLE schema.object; --\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u044b.<\/code><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0411\u0414-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u044b GGSCI:<\/p>\n<p><code>GGSCI&gt;<\/code><\/p>\n<p><code>DBLOGIN SOURCEDB dsn USERIDALIAS alias --\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 PostgreSQL \u0434\u043b\u044f GoldenGate.<\/code><\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c Extract \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b GGSCI. \u041e\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u043b\u043e\u0442 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438. \u041f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u0438\u043c\u044f extract \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0432\u043e\u0441\u044c\u043c\u0438 \u0431\u0443\u043a\u0432\u0435\u043d\u043d\u043e-\u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432:<\/p>\n<p><code>GGSCI&gt;<\/code><\/p>\n<p><code>REGISTER EXTRACT extname --\u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u043b\u043e\u0442 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 PostgreSQL.<\/code><\/p>\n<p>\u0414\u0435\u043b\u0430\u0435\u043c Extract \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0435\u043c\u0443 trail-\u0444\u0430\u0439\u043b:<\/p>\n<p><code>GGSCI&gt;<\/code><\/p>\n<p><code>ADD EXTRACT extname, TRANLOG, BEGIN NOW --\u0421\u043e\u0437\u0434\u0430\u0435\u0442 Extract-\u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u043b\u043e\u0433\u0430.<\/code><\/p>\n<p><code>GGSCI&gt;<\/code><\/p>\n<p><code>ADD RMTTRAIL \/u01\/app\/oracle\/product\/gg\/dirdat\/pg, extract extname --\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0433\u0434\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c trail-\u0444\u0430\u0439\u043b\u044b.<\/code><\/p>\n<p>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430:<\/p>\n<p><code>ADD TRANDATA schema.object --\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0442\u0440\u043e\u043a.<\/code><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f \u0437\u0430 Golden Gate.<\/p>\n<p>\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 GoldenGate \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 (Oracle).<\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c checkpoint table:<\/p>\n<p><code>GGSCI&gt;<\/code><\/p>\n<p><code>add checkpointtable ggadmn.repchkpt -- \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438.<\/code><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c Replicat:<\/p>\n<p><code>GGSCI&gt;<\/code><\/p>\n<p><code>add replicat ORAREP, exttrail \/u01\/app\/oracle\/product\/gg\/dirdat\/pg --\u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 Replicat, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 trail-\u0444\u0430\u0439\u043b\u044b \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 Oracle.<\/code><\/p>\n<p><code>GGSCI&gt;<\/code><\/p>\n<p><code>edit param ORAREP<\/code><\/p>\n<p><code>REPLICAT ORAREP --\u0418\u043c\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 Replicat.<\/code><\/p>\n<p><code>USERID ggadmn, PASSWORD ggadmn --\u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a Oracle.<\/code><\/p>\n<p><code>MAP schema.object, TARGET schema.object;-- \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0445\u0435\u043c \u0438 \u0442\u0430\u0431\u043b\u0438\u0446 \u043c\u0435\u0436\u0434\u0443 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u043e\u043c.<\/code><\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c Extract \u0438 Replicat:<\/p>\n<p><code>GGSCI&gt;<\/code><\/p>\n<p><code>start extract extname<\/code><\/p>\n<p><code>start replicat ORAREP<\/code><\/p>\n<p><em>\u0412\u0430\u0436\u043d\u043e: \u0442\u0438\u043f\u044b \u043f\u043e\u043b\u0435\u0439 \u0432 \u041eracle \u0438 PostgreSQL\u00a0\u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f GoldenGate. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <\/em><a href=\"https:\/\/docs.oracle.com\/en\/middleware\/goldengate\/core\/19.1\/gghdb\/understanding-whats-supported-postgresql.html#GUID-9B8BBE60-0449-49BE-BFB8-0AAB0FA53509\"><em>\u0437\u0434\u0435\u0441\u044c<\/em><\/a><em>. <\/em><\/p>\n<h3>\u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 Oracle\u2192CockroachDB<\/h3>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0442\u0430\u0431\u043b\u0438\u0446 \u0432 CockroachDB. \u041d\u0430 \u043d\u043e\u0434\u0435 CockroachDB (sourceDB) \u0432 \u0411\u0414 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f ggadmin (\u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0442\u0430) \u0438 \u0432\u044b\u0434\u0430\u0435\u043c \u0433\u0440\u0430\u043d\u0442 admin. <\/p>\n<p>\u0412\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0434\u043b\u044f ggadmin:<\/p>\n<pre><code>cockroach cert create-client ggadmin --certs-dir=\/cockroach\/cert\/ --ca-key=\/cockroach\/cert\/ca.key <\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0411\u0414 \u043f\u043e\u0434 \u0423\u0417 ggadmin \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b: <\/p>\n<pre><code>cockroach sql --certs-dir=\/var\/lib\/cockroach\/certs --user=ogg <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f oracle \u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u0433\u0440\u0443\u043f\u043f\u0443 cockroach. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c GoldenGate for PostgreSQL\u00a0\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0434\u043b\u044f GG \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 create subdirs. \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 GG: <\/p>\n<pre><code>\u00a0PORT 7800  \u00a0 \u00a0 DYNAMICPORTLIST 7800-7810  \u00a0 \u00a0 ACCESSRULE, PROG REPLICAT, IPADDR *, ALLOW <\/code><\/pre>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c odbc.ini \u0432 $GG_HOME:<\/p>\n<pre><code>[ODBC Data Sources]     PostgreSQL on pgsql     [ODBC]     IANAAppCodePage=4     InstallDir=\/cockroach\/ogg     [cockdb]     Driver=\/cockroach\/ogg\/lib\/GGpsql25.so     Description=DataDirect 7.1 PostgreSQL Wire Protocol     Database={dbname}     HostName=localhost     PortNumber=26257     LogonID=ggadmin     Password={password}     EncryptionMethod=1     ValidateServerCertificate=1     TrustStore=\/cockroach\/cert\/ca.crt\u0414\u0435\u043b\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0442 \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b TABLE_NAME, \u043d\u043e \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c (\u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u043e\u0437\u0436\u0435):<\/code><\/pre>\n<p>\u0414\u0435\u043b\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0442 \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b TABLE_NAME, \u043d\u043e \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c (\u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u043e\u0437\u0436\u0435):<\/p>\n<pre><code>GGSCI&gt; edit param REP1     REPLICAT REP1     SETENV ( PGCLIENTENCODING = \"UTF8\" )     SETENV (ODBCINI=\"\/cockroach\/ogg\/odbc.ini\" )     SETENV (NLS_LANG=\"AMERICAN_AMERICA.AL32UTF8\")     TARGETDB {dbname}     DISCARDFILE .\/dirrpt\/rep1.dsc, purge, MEGABYTES 1024     MAP owner.table, TARGET public.table;<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0442: <\/p>\n<pre><code>GGSCI&gt; add replicat REP1, NODBCHECKPOINT, exttrail .\/dirdat\/ee<\/code><\/pre>\n<p>\u041d\u0430 \u0434\u0430\u0443\u043d\u0441\u0442\u0440\u0438\u043c\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 downstream_hostname \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u043c\u043f \u0434\u043b\u044f \u0442\u0440\u0435\u0439\u043b-\u0444\u0430\u0439\u043b\u043e\u0432 \u044d\u043a\u0441\u0442\u0440\u0430\u043a\u0442\u0430: <\/p>\n<pre><code>GGSCI&gt; edit param ENAME      EXTRACT ENAME     USERIDALIAS ggadmin     RMTHOST REMOTE_HOST, MGRPORT 7800 TCPBUFSIZE 200000000, TCPFLUSHBYTES 200000000     RMTTRAIL .\/dirdat\/ee     PASSTHRU     TABLE TABLE_NAME;<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0430\u043c\u043f:<\/p>\n<pre><code>GGSCI&gt; Add extract PNAME, EXTTRAILSOURCE .\/dirdat\/ee Add rmttrail \/cockroach\/ogg\/dirdat\/ee, extract PNAME<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0430\u043c\u043f\u0430 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u043e\u043d \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0441\u044f \u0438 \u043d\u0430\u0447\u0430\u043b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043d\u0430 \u043d\u043e\u0434\u0443 CockroachDB: <\/p>\n<pre><code>GGSCI&gt; start PNAME<\/code><\/pre>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c \u044d\u043a\u0441\u0442\u0440\u0430\u043a\u0442\u044b \u0434\u043b\u044f Initial load. \u0414\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b TABLE_NAME:<\/p>\n<pre><code>GGSCI&gt; edit param INAME     EXTRACT INAME     SOURCEDB SOURCEDBNAME USERIDALIAS ggadmin     RMTHOST rmthost, mgrport 7800     RMTTASK REPLICAT, GROUP INITLR     TABLE TABLE_NAME;<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u044d\u043a\u0441\u0442\u0440\u0430\u043a\u0442: <\/p>\n<pre><code>GGSCI&gt; ADD EXTRACT INAME, SOURCEISTABLE<\/code><\/pre>\n<p>\u041d\u0430 sourceDB \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043d\u0430\u043a\u0430\u0442 \u043b\u043e\u0433\u043e\u0432. \u0421\u043d\u0438\u043c\u0430\u0435\u043c \u0438 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c\/\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c SCN. \u041c\u044b \u0436\u0435 \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435.<\/p>\n<p>\u041d\u0430 \u0434\u0430\u0443\u043d\u0441\u0442\u0440\u0438\u043c\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b Initial load:\u00a0<\/p>\n<pre><code>GGSCI&gt; start INAME<\/code><\/pre>\n<p>\u0418 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c \u0437\u0430 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u043d\u0430 CockroachDB.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u043b\u0438\u0432\u043a\u0438, \u0435\u0441\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0438\u043d\u0434\u0435\u043a\u0441\u044b, Primary Key (\u043e\u0447\u0435\u043d\u044c \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0435\u0433\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c)\u00a0<br \/> \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c. \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e, \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0435\u0435.<\/p>\n<p>\u041d\u0430 \u043d\u043e\u0434\u0435 \u0441 DESTDB \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0442\u044b \u0441 \u0437\u0430\u043f\u043e\u043c\u043d\u0435\u043d\u043d\u043e\u0433\u043e SCN:<\/p>\n<pre><code>GGSCI&gt; start replicat RNAME, aftercsn &lt;scn_number&gt;<\/code><\/pre>\n<h3>\u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 MSSQL\u2192ORACLE \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Oracle GoldenGate CDC<\/h3>\n<p>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 GoldenGate for SQL Server, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u043d\u0430 \u0434\u0438\u0441\u043a \u0438 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u0438\u0440\u0443\u0435\u043c. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438 \u0447\u0438\u0442\u0430\u0435\u043c \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0432\u0435\u043d\u0434\u043e\u0440\u0430. <strong> <\/strong>\u0414\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f Oracle GoldenGate \u043a SQL Server \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c DSN. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u00a0 ODBC Data Sources (64-bit)<strong>.<\/strong> <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d96\/bcc\/0b0\/d96bcc0b0e60b33646bf2da90cb859ec.jpg\" width=\"594\" height=\"421\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d96\/bcc\/0b0\/d96bcc0b0e60b33646bf2da90cb859ec.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d96\/bcc\/0b0\/d96bcc0b0e60b33646bf2da90cb859ec.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043d\u0430 Add \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c ODBC Driver for SQL Server \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438: <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/af3\/c27\/787\/af3c27787639d6deb1a7cee373f917a3.jpg\" width=\"1625\" height=\"1232\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/af3\/c27\/787\/af3c27787639d6deb1a7cee373f917a3.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/af3\/c27\/787\/af3c27787639d6deb1a7cee373f917a3.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412\u0432\u043e\u0434\u0438\u043c \u0438\u043c\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445. \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c Server: <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4b5\/5fb\/fd3\/4b55fbfd34308f9fcef50f464d2c25bc.jpg\" width=\"566\" height=\"463\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/4b5\/5fb\/fd3\/4b55fbfd34308f9fcef50f464d2c25bc.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4b5\/5fb\/fd3\/4b55fbfd34308f9fcef50f464d2c25bc.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f: <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ae1\/ac2\/d5e\/ae1ac2d5e3b262f2446608f63ddbd89c.jpg\" width=\"1121\" height=\"917\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ae1\/ac2\/d5e\/ae1ac2d5e3b262f2446608f63ddbd89c.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ae1\/ac2\/d5e\/ae1ac2d5e3b262f2446608f63ddbd89c.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043e\u043a\u043d\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0411\u0414, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f: <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/370\/89c\/acb\/37089cacb80e5cc803befc91d72b1626.jpg\" width=\"1121\" height=\"917\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/370\/89c\/acb\/37089cacb80e5cc803befc91d72b1626.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/370\/89c\/acb\/37089cacb80e5cc803befc91d72b1626.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443. \u041f\u043e \u0438\u0442\u043e\u0433\u0443 \u043c\u0430\u0441\u0442\u0435\u0440 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u043e\u043a\u043d\u043e \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c, \u0442\u0430\u043c \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043e DSN: <\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/765\/7d9\/205\/7657d9205cadc4d87ae23199c39fe7c5.jpg\" width=\"364\" height=\"386\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/765\/7d9\/205\/7657d9205cadc4d87ae23199c39fe7c5.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/765\/7d9\/205\/7657d9205cadc4d87ae23199c39fe7c5.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 Oracle GoldenGate. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0441 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u043c GoldenGate, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f GGSCI \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438: <\/p>\n<pre><code>GGSCI&gt; Create subdirs<\/code><\/pre>\n<p>\u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 MANAGER \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0440\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0443\u0448\u0430\u0442\u044c:<\/p>\n<pre><code>GGSCI&gt; edit param MGR     PORT 7800 GGSCI&gt; start MGR<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b GLOBALS \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0445\u0435\u043c\u0443 ggs, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 GoldenGate \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b SQL Server:<\/p>\n<pre><code>GGSCI&gt; edit param .\/GLOBALS     GGSCHEMA ggs<\/code><\/pre>\n<p>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b MS SQL, \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0432 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438:<\/p>\n<pre><code>GGSCI&gt; dblogin sourcedb GG add trandata hr.source_table<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438\u0437 SQL Server \u0432 Oracle (\u043f\u0435\u0440\u0432\u0438\u0447\u043d\u0430\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f). \u0415\u0441\u043b\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0435\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a. \u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0438\u0445 \u0432 \u0446\u0435\u043b\u0435\u0432\u0443\u044e \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0448\u0442\u0430\u0442\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430. \u0412 GoldenGate \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e Initial Load \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0431\u043e\u0442 \u0432 \u0444\u0430\u0439\u043b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 mgr \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443: <\/p>\n<pre><code>ACCESSRULE, PROG *, IPADDR *, ALLOW<\/code><\/pre>\n<p>\u041d\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 SQL Server:<\/p>\n<pre><code>GGSCI&gt; ADD EXTRACT INITEX, SOURCEISTABLE EDIT PARAMS INITEX     EXTRACT INITEX     SOURCEDB GG     RMTHOST &lt;TARGET_IP_ADDRESS&gt;, MGRPORT 7809     RMTTASK REPLICAT, GROUP INITRE     TABLE hr.source_table;<\/code><\/pre>\n<p>\u041d\u0430 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0435:<\/p>\n<pre><code>GGSCI&gt; ADD REPLICAT INITRE, SPECIALRUN EDIT PARAMS INITRE     REPLICAT INITRE     USERID ogg, PASSWORD ogg     MAP hr.source_table, TARGET hr.target_table;<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c INITEX. \u041d\u0430 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0435 INITRE \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438: <\/p>\n<pre><code>GGSCI&gt; START INITEX<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Extract \u0438 Replicat.<\/p>\n<p>\u041d\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 SQL Server:<\/p>\n<pre><code>GGSCI&gt; ADD EXTRACT EXTSQL, TRANLOG, BEGIN NOW add exttrail E:\\gg\\dirdat\\ms, extract EXTSQL edit param EXTSQL EXTRACT EXTSQL SOURCEDB GG EXTTRAIL E:\\gg\\dirdat\\ms TABLE hr.source_table;<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 PUMP:<\/p>\n<pre><code>GGSCI&gt; Add extract DPSQL, EXTTRAILSOURCE E:\\gg\\dirdat\\ms Add rmttrail \/u01\/app\/oracle\/product\/gg\/dirdat\/ms, extract DPSQL edit param DPSQL     EXTRACT DPSQL     SOURCEDB GG     RMTHOST &lt;TARGET_IP_ADDRESS&gt;, MGRPORT 7809     RMTTRAIL \/u01\/app\/oracle\/product\/gg\/dirdat\/ms     TABLE hr.source_table;<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c Extract:<\/p>\n<pre><code>GGSCI&gt; start EXTSQL<\/code><\/pre>\n<p>\u041d\u0430 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0435 Oracle \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c checkpoint table:<\/p>\n<pre><code>GGSCI&gt; add checkpointtable ogg.repchkpt<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c Replicat:<\/p>\n<pre><code>GGSCI&gt; add replicat ORAREP, exttrail \/u01\/app\/oracle\/gg\/dirdat\/ms edit param ORAREP     REPLICAT ORAREP     USERID ogg, PASSWORD ogg     MAP hr.source_table, TARGET hr.target_table;<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c Replicat:<\/p>\n<pre><code>GGSCI&gt; start ORAREP<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043f\u043e \u043e\u0447\u0438\u0441\u0442\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u0421\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b SQL Server \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f Change Data Capture (CDC). \u041f\u0440\u0438 \u0435\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 GoldenGate \u0441\u0430\u043c \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 CDC \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043f\u043e \u0437\u0430\u0445\u0432\u0430\u0442\u0443 \u0438 \u043e\u0447\u0438\u0441\u0442\u043a\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u043f\u043e \u043e\u0447\u0438\u0441\u0442\u043a\u0435 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b GoldenGate, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435 \u0435\u0441\u0442\u044c \u0448\u0442\u0430\u0442\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0437\u0430\u0434\u0430\u043d\u0438\u044f, \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b GoldenGate.<\/p>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0438\u0437 CDC. <\/p>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a SQL Server c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432 \u0411\u0414, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430:<\/p>\n<pre><code>EXEC sys.sp_cdc_drop_job 'cleanup'<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c CMD \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0441 GoldenGate \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c:<\/p>\n<pre><code>ogg_cdc_cleanup_setup.bat createJob user1 pword1 dbname1 HOSTNAME\\INSTANCE oggschema<\/code><\/pre>\n<p>\u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0440\u0443\u0435\u043c \u0432 SQL Server. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0432 SQL Server \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Replicat:<\/p>\n<pre><code>GGSCI&gt;  EDIT PARAMS cdcrep     REPLICAT cdcrep     TARGETDB targetdsn USERID username PASSWORD password     MAP dbo.*, TARGET dbo.*<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0445\u0435\u043c\u0443 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 GoldenGate: <\/p>\n<pre><code>CREATE SCHEMA [ogg];<\/code><\/pre>\n<p>\u0410 \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0447\u0435\u043a\u043f\u043e\u0438\u043d\u0442\u0430 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c Replicat: <\/p>\n<pre><code>GGSCI&gt; DBLOGIN SOURCEDB targetdsn USERID username PASSWORD password ADD CHECKPOINTTABLE ogg.ggcheck ADD REPLICAT cdcrep, EXTTRAIL .\/dirdat\/ce, CHECKPOINTTABLE ogg.ggcheck<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c Replicat: <\/p>\n<pre><code>GGSCI&gt; START REPLICAT cdcrep INFO ALL<\/code><\/pre>\n<h3>\u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 Oracle\u2192Kafka<\/h3>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u043e\u043f\u0438\u0441\u0430\u043b\u0438 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u044b\u0448\u0435.<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c GoldenGate 19 for BigData. \u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f Java \u2014 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439: <code>[root@server01 ~]# yum install java-1.8.0-openjdk.x86_64<\/code><\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f:<\/p>\n<pre><code>bash&gt; export JAVA_HOME=\/usr\/lib\/jvm\/java-1.8.0-openjdk-1.8.0.275.b01-0.el7_9.x86_64\/jre export PATH=$JAVA_HOME\/bin:$PATH export LD_LIBRARY_PATH=$JAVA_HOME\/lib\/amd64\/server:$LD_LIBRARY_PATH<\/code><\/pre>\n<p>\u0420\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u00a0GoldenGate for BigData:<\/p>\n<pre><code>bash&gt; mkdir -p \/u01\/app\/oracle\/product\/19.1.0\/oggbigdata_1  cd \/u01\/app\/oracle\/product\/19.1.0\/oggbigdata_1  cp \/u01\/V983760-01.zip .  unzip V983760-01.zip tar xvf OGG_BigData_Linux_x64_19.1.0.0.1.tar<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c Alias: <\/p>\n<pre><code>bash&gt; alias gg='cd \/u01\/app\/oracle\/product\/19.1.0\/oggbigdata_1; .\/ggsci'<\/code><\/pre>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438: <\/p>\n<pre><code>bash&gt; gg  GGSCI&gt;  create subdirs<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u0440\u0442 \u0432 \u0444\u0430\u0439\u043b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430:<\/p>\n<pre><code>GGSCI&gt; edit params mgr     port 7801 GGSCI&gt; start mgr<\/code><\/pre>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Kafka. \u0423 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 Kafka, \u043d\u043e \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442, \u043d\u0438\u0436\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Kafka: <\/p>\n<pre><code>bash&gt; tar -xzf \/tmp\/kafka_2.13-2.7.0.tgz cd kafka_2.13-2.7.0\/ nohup \/home\/kafka\/kafka_2.13-2.7.0\/bin\/zookeeper-server-start.sh config\/zookeeper.properties &gt; zookeeper.log  nohup \/home\/kafka\/kafka_2.13-2.7.0\/bin\/kafka-server-start.sh config\/server.properties &gt; broker_service.log &amp;<\/code><\/pre>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e Kafka \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b GoldenGate \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438\u0437 Kafka. \u0418\u0449\u0435\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e<code> &lt;kafka_install_dir&gt;\/libs\/*<\/code>. \u042d\u0442\u0443 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f GoldenGate. \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043e\u043d\u0430 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Handler. \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <strong>AdapterExamples. <\/strong>\u041e\u043d\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430<strong> <\/strong>\u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 GoldenGate for BigData. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0430 <strong>AdapterExamples\/big-data\/kafka: <\/strong><\/p>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u0430\u043f\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <strong>dirprm <\/strong>\u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Replicat.<\/p>\n<p> \u0418\u0437 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c <strong>custom_kafka_<\/strong><a href=\"http:\/\/producer.properties\"><strong>producer.properties<\/strong><\/a>, \u0437\u0434\u0435\u0441\u044c \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Kafka:<\/p>\n<pre><code>bootstrap.servers=kafka:9092 acks=1 reconnect.backoff.ms=1000 value.serializer=org.apache.kafka.common.serialization.ByteArraySerializer key.serializer=org.apache.kafka.common.serialization.ByteArraySerializer # 100KB per partition batch.size=16384 linger.ms=0<\/code><\/pre>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0448\u0430\u0433\u043e\u043c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b <strong>kafka.props<\/strong> \u0438 \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 <strong>gg.classpath<\/strong> \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u0443\u0442\u044c \u0434\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a Kafka. \u0422\u0430\u043a\u0436\u0435 \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 \u0432\u044b\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445: \u00a0xml, delimitedtext, json, json_row, avro_row, avro_op. \u0424\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 \u0438\u043b\u0438 \u0442\u0435\u0445\u0437\u0430\u0434\u0430\u043d\u0438\u0435\u043c. <\/p>\n<pre><code>gg.handlerlist = kafkahandler gg.handler.kafkahandler.type=kafka gg.handler.kafkahandler.KafkaProducerConfigFile=custom_kafka_producer.properties #The following resolves the topic name using the short table name gg.handler.kafkahandler.topicMappingTemplate=${tableName} #The following selects the message key using the concatenated primary keys gg.handler.kafkahandler.keyMappingTemplate=${primaryKeys} gg.handler.kafkahandler.format=avro_op gg.handler.kafkahandler.SchemaTopicName=mySchemaTopic gg.handler.kafkahandler.BlockingSend =false gg.handler.kafkahandler.includeTokens=false gg.handler.kafkahandler.mode=op gg.handler.kafkahandler.MetaHeaderTemplate=${alltokens}     goldengate.userexit.writers=javawriter javawriter.stats.display=TRUE javawriter.stats.full=TRUE   gg.log=log4j gg.log.level=INFO   gg.report.time=30sec   #Sample gg.classpath for Apache Kafka gg.classpath=dirprm\/:\/u01\/kafka_2.13-2.7.0\/libs\/* #Sample gg.classpath for HDP #gg.classpath=\/etc\/kafka\/conf:\/usr\/hdp\/current\/kafka-broker\/libs\/*<\/code><\/pre>\n<p>\u0412 \u0444\u0430\u0439\u043b\u0435 rkafka.prm \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0434\u043b\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438:<\/p>\n<pre><code>REPLICAT rkafka -- Trail file for this example is located in \"AdapterExamples\/trail\" directory -- Command to add REPLICAT -- add replicat rkafka, exttrail AdapterExamples\/trail\/tr TARGETDB LIBFILE libggjava.so SET property=dirprm\/kafka.props REPORTCOUNT EVERY 1 MINUTES, RATE GROUPTRANSOPS 10000 MAP appuser.test01, TARGET appuser.test01;<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c Replicat \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c: <\/p>\n<pre><code>GGSCI&gt; add replicat rkafka, exttrail \/u01\/app\/oracle\/product\/19.1.0\/oggcore_1\/dirdat\/ex start rkafka<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u0447\u043d\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u2014 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b Kafka: <\/p>\n<pre><code>bash&gt; bin\/kafka-topics.sh --list --bootstrap-server kafka:2181 TEST01 __consumer_offsets mySchemaTopic quickstart-events bash&gt; bin\/kafka-console-consumer.sh --topic TEST01 --from-beginning --bootstrap-server kafka:9092 APPUSER.TEST01I42021-01-22 11:32:20.00000042021-01-22T15:20:51.081000(00000000000000001729ID$@Ten APPUSER.TEST01I42021-01-22 15:24:55.00000042021-01-22T15:25:00.665000(00000000000000001872ID$@One<\/code><\/pre>\n<h3>\u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 Oracle\u2192Oracle \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Oracle GoldenGate <\/h3>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430: \u043d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u043a\u0430\u043a downstream, \u0442\u043e \u0435\u0441\u0442\u044c \u043a\u0430\u043a \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0434\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043b\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044f \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u2014 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. \u0422\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u0438\u0435\u043c \u043b\u043e\u0433\u043e\u0432 \u043d\u0430 downstream mining \u0411\u0414, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u043d\u0430 Solaris Sparc64, \u043f\u0440\u0438 \u0442\u043e\u043c \u0447\u0442\u043e \u0411\u0414-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043d\u0430 Linux x86-64. \u0415\u0441\u043b\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c REAL_TIME_CAPTURE (\u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438), \u0442\u043e \u043d\u0430 Mining \u0411\u0414 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c standby-redo-\u043b\u043e\u0433\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u043a\u0430\u043a \u0438 \u043d\u0430 \u0411\u0414-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435. \u0427\u0438\u0441\u043b\u043e \u043b\u043e\u0433\u043e\u0432 \u043d\u0430 \u043e\u0434\u0438\u043d \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043d\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435.<\/em>\u00a0<\/p>\n<p>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0435\u0436\u0438\u043c archivelog, forcelogging, supplemental_logging \u043d\u0430 \u0411\u0414-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435:<\/p>\n<pre><code>SQL ALTER DATABASE ARCHIVELOG; ALTER DATABASE FORCE LOGGING; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;<\/code><\/pre>\n<p><em>\u041a \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044e \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430: \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u043b\u0443\u0447\u0448\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0411\u0414 \u0438 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0430 \u0431\u043e\u044e. \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0434\u0435\u0433\u0440\u0430\u0434\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0421\u0423\u0411\u0414. \u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u0430 FORCE LOGGING \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u043e\u0433\u0438\u0440\u0443\u0435\u0442 \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0434\u0430\u0436\u0435 \u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438\u0441\u044c \u0441 \u043e\u043f\u0446\u0438\u0435\u0439 NOLOGGING. \u0420\u0435\u0436\u0438\u043c Supplemental Log data \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0440\u0435\u0436\u0438\u043c\u0443 CDC. \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0411\u0414 \u2014 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0430\u0440\u0445\u0438\u0432\u043d\u044b\u0445 \u043b\u043e\u0433\u043e\u0432. \u041f\u043e \u043d\u0430\u0448\u0435\u043c\u0443 \u043e\u043f\u044b\u0442\u0443, \u0440\u043e\u0441\u0442 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 15\u201325%.<\/em><\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c:<\/p>\n<pre><code>SQL&gt; SELECT log_mode, supplemental_log_data_min, force_logging FROM v$database;<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 \u0438 downstream \u0411\u0414: <\/p>\n<pre><code>SQL&gt; create user ggadm\u0448n identified by ggadmin default tablespace users temporary tablespace temp;exec dbms_goldengate_auth.grant_admin_privilege (' ggadm\u0448n'); alter system set enable_goldengate_replication=TRUE scope=both;<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c db_unique_name downstream \u0411\u0414 \u0432 log_archive_config \u043d\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435:<\/p>\n<pre><code>SQL&gt; ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=([SOURCEDB], [MININGDB])' scope=both;<\/code><\/pre>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0439\u043b \u043f\u0430\u0440\u043e\u043b\u0435\u0439 \u0441 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u043d\u0430 Mining DB. \u0417\u0434\u0435\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c LAD \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0432\u043d\u044b\u0445 \u043b\u043e\u0433\u043e\u0432 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0430\u0440\u0445\u0438\u0432\u043d\u044b\u0445 \u043b\u043e\u0433\u043e\u0432: <\/p>\n<pre><code>SQL&gt; ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=[archive_log_location] VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE)' scope=both; ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='LOCATION=[archive_log_location]\/REMOTE VALID_FOR=(STANDBY_LOGFILE,PRIMARY_ROLE)' scope=both; ALTER SYSTEM SET LOG_ARCHIVE_DEST_state_2=enable scope=both;<\/code><\/pre>\n<p>\u041d\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 \u0438 Mining DB \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c TNS \u0437\u0430\u043f\u0438\u0441\u0438 \u0411\u0414. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043e\u0442\u043a\u0440\u044b\u0442 \u0438 \u0443\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0441 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u0411\u0414 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439.<\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u043e\u0432\u044b\u0439 LAD \u0434\u043b\u044f downstream \u0411\u0414:<\/p>\n<pre><code>SQL&gt; ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=[MININGDB_SERVICE] ASYNC NOREGISTER VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=[MININGDB]' scope=both; ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=enable scope=both;<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u043d\u0435\u0442 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043b\u043e\u0433\u043e\u0432: <\/p>\n<p>select destination,status,error from v$archive_dest_status where rownum &lt; 3; <\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c Oracle GoldenGate \u043d\u0443\u0436\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 Mining DB \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c credential \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443: <\/p>\n<pre><code>GGSCI&gt; Create subdirs \u2013 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 edit param MGR \u2013 \u043f\u0440\u0430\u0432\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430     PORT 7800 GGSCI&gt; start MGR \u2013 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 create wallet \u2013 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0432\u0430\u043b\u043b\u0435\u0442, \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439  Created wallet at location 'dirwlt'. Opened wallet at location 'dirwlt'.GGSCI&gt; add credentialstore Credential store created in .\/dircrd\/.  GGSCI&gt; alter credentialstore add user ggadmin@[sourcedb_tns] alias ggadmin_[sourcedb] Password: *********** Credential store in .\/dircrd\/ altered.  GGSCI&gt; alter credentialstore add user ggadmin@[mining_tns] alias ggadmin_[miningdb] Password: *********** Credential store in .\/dircrd\/ altered.  GGSCI&gt; dblogin useridalias ggadmin_[sourcedb] \u2013 \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u043b\u043e\u0433\u0438\u043d\u0438\u0442\u0441\u044f \u0432 \u0411\u0414 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a Successfully logged into database.<\/code><\/pre>\n<p>\u041d\u0430 \u0411\u0414-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c:<\/p>\n<pre><code>SQL&gt; alter table [OWNER].[TABLE_NAME] add supplemental log data (all) columns;<\/code><\/pre>\n<p>\u0414\u0430\u043d\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u044d\u043a\u0441\u043a\u043b\u044e\u0437\u0438\u0432\u043d\u043e\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432 \u043f\u0435\u0440\u0438\u043e\u0434 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b Extract \u0438 PUMP \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439:<\/p>\n<pre><code>GGSCI&gt; dblogin useridalias ggadmin_[sourcedb] Successfully logged into database. GGSCI&gt; miningdblogin useridalias ggadmin_[miningdb] Successfully logged into mining database.  GGSCI&gt; add extract eSOURCEDB integrated tranlog begin now \u2013 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u044d\u043a\u0441\u0442\u0440\u0430\u043a\u0442 (\u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0449\u0438\u0439 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f) EXTRACT added. GGSCI&gt; add exttrail .\/dirdat\/SOURCEDB\/lt extract eSOURCEDB \u2013 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u043f\u0443\u0442\u044c, \u043a\u0443\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0434\u043e\u0431\u044b\u0442\u044b\u0435 \u043d\u0430\u0448\u0438\u043c \u044d\u043a\u0441\u0442\u0440\u0430\u043a\u0442\u043e\u043c EXTTRAIL added. GGSCI&gt; add extract pSOURCEDB exttrailsource .\/dirdat\/SOURCEDB\/lt \u2013 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 PUMP, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043e\u0431\u044b\u0442\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440.  EXTRACT added. GGSCI&gt; add rmttrail .\/dirdat\/SOURCEDB\/rt extract pSOURCEDB RMTTRAIL added. GGSCI&gt; register extract eSOURCEDB database Extract ESOURCEDB successfully registered with database at SCN 261106958. GGSCI&gt; add replicat rSOURCEDB integrated exttrail .\/dirdat\/SOURCEDB\/rt REPLICAT (Integrated) added.  GGSCI&gt; edit param eSOURCEDB     EXTRACT eSOURCEDB     useridalias ggadmin_[sourcedb]     TRANLOGOPTIONS MININGUSERALIAS ggadmin_[miningdb]     TRANLOGOPTIONS INTEGRATEDPARAMS (downstream_real_time_mine Y)     EXTTRAIL .\/dirdat\/SOURCEDB\/lt     TABLE [OWNER].[TABLE_NAME]; GGSCI&gt; edit param pSOURCEDB     EXTRACT pSOURCEDB     useridalias ggadmin_[sourcedb]     RMTHOST host02, MGRPORT 7800     RMTTRAIL .\/dirdat\/SOURCEDB\/rt     PASSTHRU     TABLE *.*;<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 Extract \u0438 PUMP:<\/p>\n<pre><code>GGSCI&gt; start  eSOURCEDB  start  pSOURCEDB <\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0443. <\/p>\n<p>\u041d\u0430 \u0411\u0414-\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c Oracle GoldenGate \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0442\u0430:<\/p>\n<pre><code>GGSCI&gt; edit param rSOURCEDB      REPLICAT rSOURCEDB     ASSUMETARGETDEFS     USERIDALIAS oggsuser_PRODDB     MAP [OWNER].[TABLE_NAME, TARGET [TARGET_OWNER].[TARGET_TABLE_NAME], FILTER (@getenv ('TRANSACTION' , 'CSN') &gt; SCN_\u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438)<\/code><\/pre>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u0443\u044e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.<br \/> \u0414\u043b\u044f \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u044b \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043c\u044b \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c SCN, \u043a\u043e\u0433\u0434\u0430 \u0442\u043e\u0447\u043d\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043d\u0435 \u043c\u0435\u043d\u044f\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 (\u0442.\u043d. SCN-\u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438). \u0421 \u043d\u0435\u0433\u043e \u043f\u043e\u0442\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c SCN-\u043a\u043e\u043d\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435:<\/p>\n<pre><code>SQL&gt; SET SERVEROUTPUT ON; declare v_tab_name varchar2(32000); v_scn number; v_ku$status ku$_status1020; begin execute immediate 'alter session set ddl_lock_timeout=20'; for i in (select * from dba_tables dt where dt.owner = '[OWNER]' and dt.table_name in ('[TABLE_NAME]'} loop execute immediate 'lock table '||i.owner||'.'||i.table_name||' in share mode'; v_tab_name := v_tab_name || ','''||i.table_name||''''; end loop; v_tab_name := ltrim(v_tab_name,','); select current_scn into v_scn from v$database; dbms_lock.sleep(3); commit; dbms_output.put_line('SCN: '||to_char(v_scn)); dbms_output.put_line('FILTER (@getenv (''TRANSACTION'' , ''CSN'') &gt; '||to_char(v_scn)||')'); end;<\/code><\/pre>\n<p>\u0412\u044b\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 datapump. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043d\u0438\u0436\u0435:<\/p>\n<pre><code>USERID=\"\/ as sysdba\" DIRECTORY=EXPGG LOGFILE=ibs_zrecords.log DUMPFILE=ibs_zrecords%U.dmp TABLES=IBS.Z\\#RECORDS exclude=RLS_POLICY,CONSTRAINT,GRANT,REF_CONSTRAINT,STATISTICS,TRIGGER,INDEX FLASHBACK_SCN={SCN} STATUS=60 PARALLEL=4<\/code><\/pre>\n<p>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0434\u0430\u043c\u043f \u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u0432 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a. \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0435\u0441\u043b\u0438 \u043d\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 \u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443.\u00a0<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c Primary KEY \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e. <\/p>\n<p><em>\u0417\u0430\u043c\u0435\u0442\u043a\u0430 \u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u043d\u0430 \u043f\u043e\u043b\u044f\u0445: \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 PK \u0438\u043b\u0438 UK \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438. <\/em><\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0442 \u043d\u0430 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0435: <\/p>\n<pre><code>GGSCI&gt; start  rSOURCEDB  info rSOURCEDB <\/code><\/pre>\n<p>\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438. \u0413\u043e\u0442\u043e\u0432\u043e. <\/p>\n<h3>\u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 Sybase\u2192Oracle \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Sybase RS<\/h3>\n<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u0430 \u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0442\u0430\u0431\u043b\u0438\u0446 \u0438\u0437 Sybase \u0432 Oracle \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0448\u0430\u0433\u0438.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u041eracle \u043f\u0440\u0438\u0435\u043c\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443:<\/p>\n<p><code>SQL&gt;<\/code><\/p>\n<p><code>create user USERNAME identified by PASSWORD default tablespace USERS temporary tablespace TEMP quota unlimited on USERS; <\/code><\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u0437\u0430\u0432\u043e\u0434\u0438\u043c \u0432 \u0431\u0430\u0437\u0435 Oracle \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043f\u043e\u0434 \u043a\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a \u0411\u0414: <\/p>\n<p><code>SQL&gt;<\/code><\/p>\n<p><code>create user USERNAME_RS identified by PASSWORD default tablespace USERS temporary tablespace TEMP quota unlimited on USERS;<\/code><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0432 Oracle \u0432 \u043d\u0443\u0436\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u0435 \u043f\u0440\u0438\u0435\u043c\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0443\u0436\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.<br \/> \u0423\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u041eracle \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u0441\u043e\u0437\u0434\u0430\u043d PK \u0438\u043b\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u2014 \u0441\u043e\u0437\u0434\u0430\u0435\u043c.<br \/> \u0423\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0441 RS \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 Oracle \u0411\u0414.<br \/> \u041f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043d\u0430 RS \u0432 \u0444\u0430\u0439\u043b\u0435 interfaces \u043d\u043e\u0432\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u043f\u0440\u0438\u0435\u043c\u043d\u043e\u0439 \u0431\u0430\u0437\u0435 \u041eracle \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e ECDA \u0441\u0435\u0440\u0432\u0435\u0440\u0430.\u00a0 <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 interfaces:<\/p>\n<pre><code>dco_tst_01         query tcp ether server-name 9035<\/code><\/pre>\n<p>\u0414\u0430\u043d\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0430 ECDA \u0441\u0435\u0440\u0432\u0435\u0440\u0435 server-name, \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 9035, \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u043d\u0443\u0436\u043d\u043e\u0439 \u043f\u0440\u0438\u0435\u043c\u043d\u043e\u0439 \u0431\u0430\u0437\u0435, \u0438 \u0434\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f dco_tst_01<\/p>\n<p>ECDA (Enterprise Connect Data Access) \u2014 \u044d\u0442\u043e \u0433\u0435\u0442\u0435\u0440\u043e\u0433\u0435\u043d\u043d\u044b\u0439 \u0448\u043b\u044e\u0437 (gateway), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0430\u0435\u043c\u044b\u043c \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u043c \u0434\u043b\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 Sybase \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Non-ASE \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. ECDA \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u0421\u0423\u0411\u0414, \u0442\u0430\u043a\u0438\u043c \u043a\u0430\u043a Oracle, MSSQL, PostgreSQL \u0438 \u0434\u0440., \u0438 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u0421\u0423\u0411\u0414 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 Sybase ASE. \u0414\u0440\u0430\u0439\u0432\u0435\u0440\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u043e\u0432\u043e\u0439 \u0421\u0423\u0411\u0414 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0430\u044e\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u0418\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u044f \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 ECDA \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0438 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442.<\/p>\n<p>\u0412 Sybase RS 15.5 \u0438 \u043f\u043e\u0437\u0436\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 ECO (ExpressConnect for Oracle) \u0432 Oracle \u0411\u0414 \u0431\u0435\u0437 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f ECDA. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043d\u0430 RS \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a Oracle \u0432 \u0444\u0430\u0439\u043b\u0435:<\/p>\n<pre><code>$RS_HOME\/REP-16_0\/connector\/oraoci\/network\/admin\/tnsnames.ora SOURCEDB=   (DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))     )     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = SOURCEDB)     )   )<\/code><\/pre>\n<p>\u00a0\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 connection \u0432 RS \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (\u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0431\u0430\u0437\u0430). <\/p>\n<pre><code>-- Create Database Connection eco.dwh create connection to \"eco\".\"dwh\"     set error class to \"err_class_IgnorDubli\"     set function string class to \"rs_oracle_function_class\"     set username \"USERNAME_RS\"     set password \"PASSWORD_USERNAME_RS\"  go -- Set connection configuration parameters for eco.dwh alter connection to eco.dwh set cmd_direct_replicate to 'off' alter connection to eco.dwh set exec_sqm_write_request_limit to '4194304' <\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c replication definition \u0432 RS. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445: replication definition \u2014 \u044d\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0430 RS-\u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442, \u0438\u0437 \u043a\u0430\u043a\u043e\u0439 \u0441\u0445\u0435\u043c\u044b, \u043a\u0430\u043a\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u2013&gt; \u0432 \u043a\u0430\u043a\u0443\u044e \u043f\u0440\u0438\u0435\u043c\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u041e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u043b\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435, \u0442\u0438\u043f\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043b\u0435\u0436\u0430\u0442 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e. \u0422\u0430\u043a\u0436\u0435 \u0432 replication definition \u0443\u043a\u0430\u0437\u0430\u043d PK, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u043e\u043a. \u041e\u0434\u043d\u0438\u043c \u0441\u043b\u043e\u0432\u043e\u043c, \u044d\u0442\u043e \u00ab\u043f\u0440\u0430\u0432\u0438\u043b\u0430\u00bb \u0434\u043b\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043a\u0430\u043a\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u043a\u0430\u043a \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435. <\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u0439 \u0441\u043e\u0437\u0434\u0430\u0435\u043c KEY repdef:\u00a0 <\/p>\n<pre><code>create replication definition RDNAME dFRONT_KEY_f_oper_card  with primary at SOURCE  with primary table named TABLE_NAME  with replicate table named TARGET_TABLE_NAME  (\"f_oper\" int)  primary key(\"f_oper\")  replicate minimal columns go<\/code><\/pre>\n<p>\u0417\u0430\u0442\u0435\u043c \u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 repdef \u043d\u043e\u0432\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b: <\/p>\n<pre><code>create replication definition  RDNAME  with primary at SOURCEDB  with primary table named TABLE_NAME  with replicate table named TARGET_TABLE_NAME(     \"f_oper\"           int,               \"f_req\"            int,               \"f_cardhandreason\" smallint,          \"type_return\"      tinyint,          \"inn\"              varchar(12),       \"acc_num\"          varchar(20),       \"bik\"              varchar(10),       \"service_name\"     varchar(100),      \"service_adress\"   varchar(100),      \"date_decision\"    date,              \"way_decision\"     varchar(255),      \"contact_decision\" varchar(255),      \"result_decision\"  varchar(255),      \"comment_reason\"   varchar(255),      \"descr\"            varchar(100)  )  primary key(\"f_oper\")  replicate minimal columns go <\/code><\/pre>\n<p><em>\u0412\u0430\u0436\u043d\u043e. \u0415\u0441\u043b\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 IDENTITY, \u0441\u043e\u0437\u0434\u0430\u0435\u043c KEY repdef \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0441 \u0442\u0438\u043f\u043e\u043c IDENTITY.\u00a0<\/em> <\/p>\n<pre><code>create replication definition RDNAME     with primary at SOURCEDB     with primary table named TABLE_NAME      with replicate table named TARGET_TABLE_NAME     (f_kurs identity)     primary key (f_kurs)     replicate minimal columns     with dynamic sql<\/code><\/pre>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 repdef \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c &#171;identity map to rs_oracle_float&#187; (\u0438\u043b\u0438 &#171;ident_id identity map to numeric&#187;) \u2014 \u0432 Oracle \u043d\u0435\u0442 \u0442\u0438\u043f\u0430 IDENTITY. \u0417\u0434\u0435\u0441\u044c \u044d\u0442\u043e \u043f\u043e\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0442\u0438\u043f\u043e\u043c NUMBER(10):<\/p>\n<pre><code>create replication definition RDNAME     with primary at SOURCEDB     with primary table named TABLE_NAME      with replicate table named TARGET_TABLE_NAME     (f_kurs identity map to rs_oracle_float,          c_kurstype tinyint,          c_currency_1 smallint,          c_currency_2 smallint,          f_bank int,          f_user int,          rate numeric,          date_begin datetime,          date_create datetime,          username varchar(30),          workstation varchar(50),          f_office int,          special tinyint) primary key (f_kurs) replicate minimal columns with dynamic sql<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 repdef \u043d\u0430 RS: <\/p>\n<pre><code>create subscription SUBS_NAME  for RDNAME  with replicate at eco.dwh without materialization go<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u043d\u043e\u0432\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 Sybase Front. \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043d\u0438\u0436\u0435\u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b RepAgent \u043d\u0430\u0447\u043d\u0435\u0442 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0432 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u043b\u043e\u0433\u0435 Sybase \u0431\u0430\u0437\u044b \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0445 \u043d\u0430 RS \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0438\u0445 \u043d\u0430 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a: <\/p>\n<pre><code>sp_setreptable SOURCE_TABLE_NAME, true go<\/code><\/pre>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u043e\u0432\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446, \u0435\u0441\u043b\u0438 \u0432 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 \u0435\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435.<br \/> \u0412\u044b\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 Sybase \u0447\u0435\u0440\u0435\u0437 bcp.exe:<\/p>\n<pre><code>rem %1-Server rem %2-Passw_SA rem %3-Database Name rem %4-Table Name  bcp.exe %3.dbo.%4 out %4.dat -c -td6vWf7 -rd1K6t7 -Jcp1251 -eErr.txt -S%1 -Usa -P%2<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Oracle \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 sqlldr. <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b F_KURS.ctl:<\/p>\n<pre><code>LOAD DATA CHARACTERSET CL8MSWIN1251 INFILE 'f_kurs.dat' \"STR 'd1K6t7'\" BADFILE 'f_kurs.BAD' DISCARDFILE 'f_kurs.DSC' APPEND INTO TABLE TARGET_TABLE_NAME FIELDS TERMINATED BY \"d6vWf7\" TRAILING NULLCOLS ( F_KURS           CHAR(255), C_KURSTYPE       CHAR(255), C_CURRENCY_1     CHAR(255), C_CURRENCY_2     CHAR(255), F_BANK           CHAR(255), F_USER           CHAR(255), RATE             CHAR(255), DATE_BEGIN       CHAR(255) \"TO_DATE(SUBSTR(:DATE_BEGIN,1,20)||SUBSTR(:DATE_BEGIN,25,2),'Mon DD YYYY HH:MI:SSAM')\", DATE_CREATE      CHAR(255) \"TO_DATE(SUBSTR(:DATE_CREATE,1,20)||SUBSTR(:DATE_CREATE,25,2),'Mon DD YYYY HH:MI:SSAM')\", USERNAME         CHAR(255), WORKSTATION      CHAR(255), F_OFFICE         CHAR(255), SPECIAL          CHAR(255) )   bash#: sqlldr USERNAME\/PASSW control={location}\/F_KURS.ctl <\/code><\/pre>\n<p>\u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438:<\/p>\n<p><code>resume connection to server.db<\/code><\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0435! \u0414\u0435\u043b\u0438\u0442\u0435\u0441\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0430 \u0447\u0442\u043e \u2014 \u043d\u0435\u0442. \u041a\u0430\u043a\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\u0441\u044c? <\/p>\n<p>\u0414\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0438!<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/902708\/\"> https:\/\/habr.com\/ru\/articles\/902708\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!<\/p>\n<p>\u041a\u0430\u0436\u0434\u0430\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u044b\u043b\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043d\u043e \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u044b (\u0441\u043f\u0430\u0441\u0438\u0431\u043e, \u041a\u042d\u041f!). \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0417\u041e\u041a\u0418\u0418 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043f\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0437\u0430\u043c\u0435\u0449\u0435\u043d\u0438\u044e \u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u043e\u0432\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. \u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u2014 <strong>\u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/strong>. \u041e\u043d\u0430 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u043c \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0442\u0443\u0449\u0438\u043c\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u043c\u0438, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0449\u0438\u0442\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u043c\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0435 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438, \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430. \u0425\u0432\u0430\u0442\u0438\u0442 \u0441\u043b\u043e\u0432 \u2013 \u0437\u0430 \u0434\u0435\u043b\u043e!\u00a0 \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043f\u043e\u043a\u0430\u0436\u0435\u043c \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439. <\/p>\n<figure class=\"full-width\"><\/figure>\n<p><strong>\u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 Oracle \u0438 PostgreSQL \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Oracle GoldenGate<\/strong><\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043a\u0435\u0439\u0441\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 Oracle -&gt; Postgres. <\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a (Oracle). <em>\u041f\u043e\u043c\u043d\u0438\u043c, \u0431\u0430\u0437\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 Archive Logging \u2014 \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435. <\/em> <\/p>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a Oracle \u0447\u0435\u0440\u0435\u0437 Sqlplus, \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u0411\u0414 \u0432 mount \u0438 \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:<\/p>\n<p>&#8212; \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0430\u0440\u0445\u0438\u0432\u0430\u0446\u0438\u044e \u043b\u043e\u0433\u043e\u0432:<\/p>\n<pre><code>SQL&gt; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;<\/code><\/pre>\n<p>&#8212; \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439:<\/p>\n<pre><code>SQL&gt; ALTER DATABASE FORCE LOGGING;<\/code><\/pre>\n<p>&#8212; \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435:<\/p>\n<pre><code>SQL&gt; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;<\/code><\/pre>\n<p>&#8212; \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c:<\/p>\n<pre><code>SQL&gt; SELECT log_mode, supplemental_log_data_min, force_logging FROM v$database;<\/code><\/pre>\n<p>&#8212; \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0432 \u0411\u0414 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f GoldenGate:<\/p>\n<pre><code>SQL&gt; CREATE USER ggadmin IDENTIFIED BY ggpassword DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;<\/code><\/pre>\n<p>&#8212; \u0432\u044b\u0434\u0430\u0435\u043c \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 GoldenGate<\/p>\n<pre><code>SQL&gt; GRANT CONNECT, RESOURCE TO ggadmin; GRANT CREATE SESSION TO ggadmin; GRANT SELECT ANY DICTIONARY TO ggadmin; GRANT EXECUTE ON DBMS_LOGMNR TO ggadmin; GRANT EXECUTE ON DBMS_LOGMNR_D TO ggadmin; GRANT EXECUTE ON DBMS_FLASHBACK TO ggadmin; GRANT SELECT ON V_$DATABASE TO ggadmin; GRANT SELECT ON ALL_TABLES TO ggadmin; GRANT SELECT ON DBA_REGISTERED_ARCHIVED_LOG TO ggadmin; GRANT SELECT ON DBA_CAPTURE TO ggadmin; GRANT SELECT ON DBA_APPLY TO ggadmin;<\/code><\/pre>\n<p>&#8212; \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e GGADMIN \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e GoldenGate:<\/p>\n<pre><code>SQL&gt; EXEC dbms_goldengate_auth.grant_admin_privilege('GGADMIN'); ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH;<\/code><\/pre>\n<p>&#8212; \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b:<\/p>\n<pre><code>SQL&gt; ALTER TABLE schema_name.table_name ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS.<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 GoldenGate Extract \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 Oracle.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c c\u0430\u043c GG. \u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c \u0430\u0440\u0445\u0438\u0432 \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0445\u043e\u0441\u0442 \u0441 \u043d\u0430\u0448\u0435\u0439 \u0431\u0430\u0437\u043e\u0439-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0438 \u0440\u0430\u0437\u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e:<\/p>\n<pre><code>bash&gt; mkdir -p \/u01\/app\/ogg  mv ~\/ggs_*.zip \/u01\/app\/ogg  cd \/u01\/app\/ogg  unzip ggs_*.zip<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c ggsci: <\/p>\n<pre><code>bash&gt; cd \/u01\/app\/ogg .\/ggsci .\/ggsci<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438: <\/p>\n<pre><code>GGSCI&gt; CREATE SUBDIRS<\/code><\/pre>\n<p>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c OGG \u0432 PATH \u2014 \u0442\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<pre><code>bash&gt; echo \"export OGG_HOME=\/u01\/app\/ogg\" &gt;&gt; ~\/.bashrc echo \"export PATH=\\$OGG_HOME:\\$PATH\" &gt;&gt; ~\/.bashrc source ~\/.bashrc<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441-\u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430. \u041e\u043d \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u044e\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u0438\u0445 \u0432 Postgres: <\/p>\n<pre><code>GGSCI&gt; EDIT PARAM MGR<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e:<\/p>\n<pre><code>PORT 7809 DYNAMICPORTLIST 7810-7820 ACCESSRULE, PROG *, IPADDR *, ALLOW<\/code><\/pre>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c: <\/p>\n<pre><code>GGSCI&gt; START MGR<\/code><\/pre>\n<p>\u0417\u0430\u0434\u0430\u0435\u043c \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0411\u0414-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443:<\/p>\n<pre><code>GGSCI&gt; ADD CREDENTIALSTORE ALTER CREDENTIALSTORE ADD USER ggadmin@ORACLE_TNS_ALIAS ALIAS ggadmin<\/code><\/pre>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 Extract:<\/p>\n<pre><code>GGSCI&gt; DBLOGIN USERIDALIAS ggadmin ADD EXTRACT eORACLE TRANLOG, INTEGRATED TRANLOG, BEGIN NOW ADD EXTTRAIL .\/dirdat\/lt, EXTRACT eORACLE REGISTER EXTRACT eORACLE DATABASE<\/code><\/pre>\n<p>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b: <\/p>\n<pre><code>GGSCI&gt; EDIT PARAM eORACLE<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u044d\u043a\u0441\u0442\u0440\u0430\u043a\u0442\u043e\u0440\u0430: <\/p>\n<pre><code>EXTRACT eORACLE USERIDALIAS ggadmin TRANLOGOPTIONS INTEGRATEDPARAMS (DOWNSTREAM_REAL_TIME_MINE Y) EXTTRAIL .\/dirdat\/lt TABLE schema_name.table_name;<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0435\u0433\u043e: <\/p>\n<pre><code>GGSCI&gt; START eORACLE<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e \u0441\u0435\u0442\u0438, \u2014 PUMP: <\/p>\n<pre><code>GGSCI&gt; ADD EXTRACT pORACLE EXTTRAILSOURCE .\/dirdat\/lt ADD RMTTRAIL .\/dirdat\/rt, EXTRACT pORACLE<\/code><\/pre>\n<p>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<pre><code>GGSCI&gt; EDIT PARAM pORACLE<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0430\u043c\u043f\u0430:<\/p>\n<pre><code>EXTRACT pORACLE USERIDALIAS ggadmin RMTHOST target_host, MGRPORT 7810 RMTTRAIL .\/dirdat\/rt PASSTHRU TABLE schema_name.table_name;<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0435\u0433\u043e:<\/p>\n<pre><code>GGSCI&gt; START pORACLE<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443-\u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0443 \u2014 PostgreSQL. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0432\u044b\u0434\u0430\u0435\u043c \u0435\u043c\u0443 \u043f\u0440\u0430\u0432\u0430.<\/p>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a PostgreSQL \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <strong>psql -U postgres <\/strong>\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043d\u0443\u0436\u043d\u0443\u044e \u0411\u0414 \\c dbname<\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c:<\/p>\n<pre><code>CREATE USER ggadmin WITH LOGIN PASSWORD 'ggpassword'; GRANT CONNECT ON DATABASE target_db TO ggadmin; GRANT USAGE ON SCHEMA target_schema TO ggadmin; GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA target_schema TO ggadmin;<\/code><\/pre>\n<p>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0434\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b:<\/p>\n<pre><code>ALTER DEFAULT PRIVILEGES IN SCHEMA target_schema GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON TABLES TO ggadmin;<\/code><\/pre>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c GoldenGate \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438, \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u043b\u0438 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c ORACLE, \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c ODBC. \u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c odbc.ini: <\/p>\n<pre><code>[ODBC Data Sources] GG_Postgres=DataDirect 9.6 PostgreSQL Wire Protocol  [GG_Postgres] Driver=\/ogg\/lib\/ggpsql25.so Description=PostgreSQL Wire Protocol Database=target_db HostName=localhost PortNumber=5432 LogonID=ggadmin Password=ggpassword<\/code><\/pre>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 Replicat \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 PostgreSQL.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438:<\/p>\n<pre><code>GGSCI&gt; CREATE SUBDIRS<\/code><\/pre>\n<p>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430:<\/p>\n<pre><code>GGSCI&gt; EDIT PARAM MGR PORT 7810 DYNAMICPORTLIST 7811-7820 ACCESSRULE, PROG REPLICAT, IPADDR *, ALLOW<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440: <\/p>\n<pre><code>GGSCI&gt; START MGR<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 Replicat:<\/p>\n<pre><code>GGSCI&gt; DBLOGIN USERID ggadmin PASSWORD ggpassword ADD REPLICAT rPOSTGRES EXTTRAIL .\/dirdat\/rt, CHECKPOINTTABLE ggadmin.checkpoint<\/code><\/pre>\n<p>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<pre><code>GGSCI&gt; EDIT PARAM rPOSTGRES REPLICAT rPOSTGRES SETENV (PGCLIENTENCODING = \"UTF8\") SETENV (ODBCINI=\"\/ogg\/odbc.ini\") SETENV (NLS_LANG=\"AMERICAN_AMERICA.AL32UTF8\") TARGETDB GG_Postgres, USERID ggadmin, PASSWORD ggpassword MAP schema_name.table_name, TARGET target_schema.table_name;<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0442: <\/p>\n<pre><code>GGSCI&gt; START rPOSTGRES<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435: <\/p>\n<pre><code>GGSCI&gt; INFO ALL<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 Oracle \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443:<\/p>\n<pre><code>SQL&gt; INSERT INTO schema_name.table_name VALUES (...); COMMIT;<\/code><\/pre>\n<p>\u041d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 PostgreSQL \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: <\/p>\n<pre><code>SELECT * FROM target_schema.table_name;<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u2014 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0431\u043e\u0442\u044b \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>GGSCI&gt; VIEW REPORT rPOSTGRES <\/code> <\/p>\n<p>Good job! <\/p>\n<h3>\u0420\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 PostgreSQL\u2192ORACLE \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Oracle GoldenGate<\/h3>\n<p>\u0414\u043b\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u2014 <strong>Oracle GoldenGate. <\/strong><\/p>\n<p><a href=\"https:\/\/www.oracle.com\/middleware\/technologies\/goldengate-downloads.html\">\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c <\/a>\u0438 <a href=\"https:\/\/docs.oracle.com\/en\/middleware\/goldengate\/core\/21.3\/installing\/installing-classic-architecture.html#GUID-D75AE25F-4A60-4123-9274-7D39ACB22F5A\">\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c <\/a>Oracle GoldenGate \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f.<\/p>\n<p>\u0420\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0430\u0440\u0445\u0438\u0432 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 Oracle GoldenGate \u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c Oracle GoldenGate. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 Oracle GoldenGate, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f <code>GGSCI (.\/ggsci)<\/code> \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438:<\/p>\n<pre><code>GGSCI&gt; create subdirs<\/code><\/pre>\n<p>\u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 MANAGER \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0440\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0443\u0448\u0430\u0442\u044c:<\/p>\n<pre><code>GGSCI&gt; edit param MGR PORT 7800 GGSCI&gt; start MGR<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b GLOBALS \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0445\u0435\u043c\u0443 ggs, \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 GoldenGate \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b PostgreSQL. \u0424\u0430\u0439\u043b Globals \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432\u0441\u0435\u0439 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438: <\/p>\n<pre><code>GGSCI&gt; edit param .\/GLOBALS GGSCHEMA ggadmn<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c PostgreSQL \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 OGG<strong>. <\/strong>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0436\u0443\u0440\u043d\u0430\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 WAL \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 PostgreSQL\u00a0postgresql.conf<strong>: <\/strong>wal_level = logical<strong>. <\/strong> <\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430: \u042d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f WAL (Write-Ahead Logging) \u043d\u0430 &#171;logical&#187;, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0434\u043b\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438. \u041e\u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u043b\u043e\u0442\u044b. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432 WAL-\u0444\u0430\u0439\u043b\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438.<\/em><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u00a0<strong>max_replication_slots<\/strong> \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438: <strong>max_replication_slots = 5<\/strong>.<\/p>\n<p>\u041e\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043b\u043e\u0442\u043e\u0432 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 PostgreSQL \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u042d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b GoldenGate, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043b\u043e\u0442 \u0434\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043b\u043e\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0431\u044d\u043a\u0430\u043f\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c. <\/p>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c PostgreSQL \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0445\u043e\u0434\u0438\u043c \u0432 PostgreSQL:\u00a0<strong>psql -U postgres<\/strong>. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a \u0431\u0430\u0437\u0435 Postgres \u043e\u0442 \u0435\u0433\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. <\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:\u00a0<\/p>\n<p><strong>CREATE ROLE ggadmn LOGIN PASSWORD &#8216;password&#8217;;<\/strong> \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f ggadmn \u0441 \u043f\u0430\u0440\u043e\u043b\u0435\u043c.<\/p>\n<p>\u041d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u0430 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438:\u00a0<\/p>\n<pre><code>ALTER ROLE ggadmn REPLICATION; <\/code><\/pre>\n<p>\u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0443 \u0432\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438. <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u0435 (Oracle \u0411\u0414).<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c: <\/p>\n<p><code>SQL&gt;create user ggadmn identified by ggadmn default tablespace users temporary SQL&gt;tablespace temp; -- \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 Oracle \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u043e\u043b\u0435\u043c \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/code><\/p>\n<p><code>SQL&gt;grant connect to\u00a0 ggadmn; -- \u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.<\/code><\/p>\n<p><code>SQL&gt;grant resource to\u00a0 ggadmn; -- \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043f\u0440\u0430\u0432\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445.<\/code><\/p>\n<p><code>SQL&gt;exec dbms_goldengate_auth.grant_admin_privilege ('ggadmn'); --\u041d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438 \u0434\u043b\u044f GoldenGate.<\/code><\/p>\n<p><code>SQL&gt;alter system set enable_goldengate_replication=TRUE scope=both; --\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 GoldenGate.<\/code><\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 GoldenGate \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 (PostgreSQL). \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 (PostgreSQL). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c odbc.ini \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0441\u0432\u043e\u0438\u0445 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a. \u0417\u0430\u0442\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f PostgreSQL: <\/p>\n<pre><code>bash&gt; vi dirprm\/extname.prm<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438:<\/p>\n<p><code>EXTRACT extname --\u0418\u043c\u044f Extract-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430.<\/code><\/p>\n<p><code>SOURCEDB dsn_name USERIDALIAS alias --\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0431\u0430\u0437\u0435 PostgreSQL \u0447\u0435\u0440\u0435\u0437 DSN \u0438 \u0430\u043b\u0438\u0430\u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/code><\/p>\n<p><code>RMTHOST &lt;TARGET_IP_ADDRESS&gt;, MGRPORT 7809 --\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 IP-\u0430\u0434\u0440\u0435\u0441 \u0438 \u043f\u043e\u0440\u0442 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 GoldenGate \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 Oracle.<\/code><\/p>\n<p><code>RMTTRAIL \/u01\/app\/oracle\/product\/gg\/dirdat\/pg --\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 (trail-\u0444\u0430\u0439\u043b\u044b).<\/code><\/p>\n<p><code>GETTRUNCATES --\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043a\u043e\u043c\u0430\u043d\u0434 TRUNCATE.<\/code><\/p>\n<p><code>TABLE <\/code><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-456795","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/456795","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=456795"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/456795\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=456795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=456795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=456795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}