{"id":1597,"date":"2010-05-13T14:59:51","date_gmt":"2010-05-13T19:59:51","guid":{"rendered":"http:\/\/jianmingli.com\/wp\/?p=1597"},"modified":"2011-05-05T12:17:01","modified_gmt":"2011-05-05T17:17:01","slug":"goldengate-java-adapter","status":"publish","type":"post","link":"https:\/\/jianmingli.com\/wp\/?p=1597","title":{"rendered":"GoldenGate: Java Adapter"},"content":{"rendered":"<span id=\"Install\"><h2>Install<\/h2><\/span>\n<span id=\"Overview\"><h3>Overview<\/h3><\/span>\n<p>* Install JDK 1.5 or later<br \/>\n* Install GoldenGate 10.0.0.4 or later<br \/>\n* Install Java Adapter<\/p>\n<span id=\"Install_Java\"><h3>Install Java<\/h3><\/span>\n<p>* Install JDK 1.5 or later.<br \/>\n* Set env variables.<br \/>\nWindows:<\/p>\n<pre lang=\"dos\">\r\nset JAVA_HOME=C:\\prog\\java\\jdk1.6.0_18\r\nset PATH=%JAVA_HOME%\\bin;%PATH%\r\nset PATH=%JAVA_HOME%\\jre\\bin\\server;%PATH%\r\n<\/pre>\n<p>Unix:<\/p>\n<pre lang=\"bash\">\r\nexport JAVA_HOME=\/opt\/jdk1.6\r\nexport PATH=${JAVA_HOME}\/bin:${PATH}\r\nexport LD_LIBRARY_PATH=${JAVA_HOME}\/jre\/lib\/i386\/server:${LD_LIBRARY_PATH}\r\n<\/pre>\n<span id=\"Install_GoldenGate\"><h3>Install GoldenGate<\/h3><\/span>\n<p>* Install GoldenGate 10.0.0.4 or later.<br \/>\n* See <a href=\"?p=1500\">Windows Install <\/a>or <a href=\"?p=1545\">Unix Install <\/a>for details.<br \/>\n* Prepare database.<br \/>\n* Prepare tables.<br \/>\n* Setup primary capture on database server.<br \/>\n* Setup data pump on database server.<\/p>\n<span id=\"Install_Java_Adapter\"><h3>Install Java Adapter<\/h3><\/span>\n<p>* Unzip Java adapter zip file (e.g. V18191-01.zip) into GoldenGate installation directory.<\/p>\n<span id=\"Configure_Java_Adapter\"><h3>Configure Java Adapter<\/h3><\/span>\n<p>* Overview:<br \/>\nCreate Data Pump<br \/>\n-> Edit Params to point to user exit config file and java user exit config file<br \/>\n-> Configure user exit<br \/>\n-> Configure Java user exit<br \/>\n* Configure a data pump to run the user exit<\/p>\n<pre lang=\"bash\">ADD EXTRACT u_gt, EXTTRAILSOURCE .\/dirdat\/gt<\/pre>\n<p>* Configure u_gt parameters<\/p>\n<pre lang=\"bash\">edit params u_gt<\/pre>\n<pre lang=\"bash\">\r\n# User exit extract process name\r\nExtract u_gt\r\n\r\n# Set user exit config file\r\nSetEnv ( GGS_USEREXIT_CONF = \"dirprm\/cuserexit.properties\" )\r\n\r\n# Set java config file\r\nSetEnv ( GGS_JAVAUSEREXIT_CONF = \"dirprm\/javaue.properties\" )\r\n\r\n# Set source definition file\r\nSourceDefs .\/dirdef\/gg_test.def\r\n\r\n# Print some debugging info\r\ngetEnv (JAVA_HOME)\r\ngetEnv (LD_LIBRARY_PATH)\r\ngetEnv (LIBPATH)\r\ngetEnv (PATH)\r\n\r\n# Run user exit command\r\nCUserExit .\/JavaUserExit.dll CUSEREXIT PASSTHRU INCLUDEUPDATEBEFORES\r\n\r\nTable gg_src.*;\r\n<\/pre>\n<p>* Copy &#8216;cuserexit.properties&#8217; from &#8216;javaue\\docs\\sample-dirprm&#8217; directory to &#8216;dirprm&#8217; directory.<br \/>\n* Copy &#8216;log4j.properties&#8217; from &#8216;javaue\\resources\\classes&#8217; directory to Goldengate root directory.<br \/>\n* Edit &#8216;cuserexit.properties&#8217;<\/p>\n<pre lang=\"bash\">\r\ngoldengate.userexit.chkptprefix=JAVAUE_\r\ngoldengate.userexit.nochkpt=TRUE\r\ngoldengate.userexit.timestamp=utc\r\n\r\n# Setup logging\r\ngoldengate.log.modules=GENUSEREXIT,LOGMALLOC,JAVAWRITER\r\n#goldengate.log.level=INFO\r\ngoldengate.log.level=DEBUG\r\ngoldengate.log.level.LOGMALLOC=ERROR\r\ngoldengate.log.tostdout=false\r\ngoldengate.log.tofile=true\r\ngoldengate.log.logname=cuserexit\r\n\r\n# Setup javawriter\r\ngoldengate.userexit.writers=javawriter\r\njavawriter.stats.time=600\r\njavawriter.stats.numrecs=100\r\njavawriter.stats.display=TRUE\r\njavawriter.stats.full=TRUE\r\njavawriter.bootoptions=-Djava.class.path=javaue\/ggue.jar -Dlog4j.configuration=log4j.properties -Xmx512m -Xms256m\r\n<\/pre>\n<p>* Copy &#8216;javaue.properties&#8217; from &#8216;javaue\\docs\\sample-dirprm&#8217; directory to &#8216;dirprm&#8217; directory.<br \/>\n* Edit &#8216;javaue.properties&#8217;<\/p>\n<pre lang=\"bash\">\r\n# Java application properties for JMS lab using ActiveMQ as JMS server\r\n\r\n# the handlerlist defines which handlers are active\r\ngg.handlerlist=one,two\r\n\r\n# the first handler is just a single file\r\ngg.handler.one.type=singlefile\r\ngg.handler.one.format=xml\r\ngg.handler.one.file=output.xml\r\n\r\ngg.handler.two.type=singlefile\r\ngg.handler.two.format=\/dirprm\/sample_tx.vm\r\ngg.handler.two.file=output.txt\r\n<\/pre>\n<p>* Copy &#8216;sample_tx.vm&#8217; to &#8216;dirprm&#8217; directory.<br \/>\n* Generate definition file<br \/>\n&#8211; Setup definition parameter file in the dirprm directory with the following content:<\/p>\n<pre lang=\"bash\">\r\n-- Use GGSCI>edit params gg_test\r\nDEFSFILE C:\\goldengate\\dirdef\\gg_test.def\r\nUSERID gg_src, PASSWORD password\r\nTABLE gg_src.*;\r\n<\/pre>\n<p>&#8211; Run dos command from GoldenGate installation directory (e.g. c:\\goldengate)<\/p>\n<pre lang=\"bash\">\r\ndefgen paramfile dirprm\/gg_test.prm\r\n<\/pre>\n<p>&#8211; gg_test.def will be generated in <gg_install>\\dirdef directory.<\/p>\n<span id=\"Start_Extract_u_gt\"><h3>Start Extract u_gt<\/h3><\/span>\n<p>start extract u_gt<br \/>\nview report u_gt<\/p>\n<span id=\"Insert_Data_to_Source_Table\"><h3>Insert Data to Source Table<\/h3><\/span>\n<pre lang=\"sql\">\r\ninsert into GG_SRC.gg_test values ('10','Ten');\r\ncommit;\r\n<\/pre>\n<span id=\"Check_output.txt\"><h3>Check output.txt<\/h3><\/span>\n<pre lang=\"bash\">\r\nTransaction: numOps=1 (buffer=1) ts='2010-05-08 03:12:11.000000' \r\n Operation (seq=3\/rba=1388 [W]): INSERT (INSERT) on table \"GG_SRC.GG_TEST\":\r\n    GG_SRC.GG_TEST, (key=true) ID = \"10\"\r\n    GG_SRC.GG_TEST, (key=false) NAME = \"Ten\"\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Install Overview * Install JDK 1.5 or later * Install GoldenGate 10.0.0.4 or later * Install Java Adapter Install Java * Install JDK 1.5 or later. * Set env variables. Windows: set JAVA_HOME=C:\\prog\\java\\jdk1.6.0_18 set PATH=%JAVA_HOME%\\bin;%PATH% set PATH=%JAVA_HOME%\\jre\\bin\\server;%PATH% Unix: export JAVA_HOME=\/opt\/jdk1.6 &hellip; <a href=\"https:\/\/jianmingli.com\/wp\/?p=1597\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[88],"tags":[],"class_list":["post-1597","post","type-post","status-publish","format-standard","hentry","category-goldengate"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8cRUO-pL","_links":{"self":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1597","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1597"}],"version-history":[{"count":18,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1597\/revisions"}],"predecessor-version":[{"id":1605,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1597\/revisions\/1605"}],"wp:attachment":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1597"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1597"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1597"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}