{"id":5952,"date":"2012-09-13T19:37:24","date_gmt":"2012-09-14T00:37:24","guid":{"rendered":"http:\/\/jianmingli.com\/wp\/?p=5952"},"modified":"2012-09-17T08:27:06","modified_gmt":"2012-09-17T13:27:06","slug":"goldengate-colmap-map-to-different-table-name-and-column-name","status":"publish","type":"post","link":"https:\/\/jianmingli.com\/wp\/?p=5952","title":{"rendered":"GoldenGate COLMAP: Map to Different Table Name and Column Name"},"content":{"rendered":"<div class='toc wptoc'>\n<h2>Contents<\/h2>\n<ol class='toc-odd level-1'>\n\t<li>\n\t\t<a href=\"#Prepare_Environment\">Prepare Environment<\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"#Prepare_Database\">Prepare Database<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Create_Source_Table\">Create Source Table<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Create_Target_Table\">Create Target Table<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Generate_Source_Definitions_File\">Generate Source Definitions File<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#For_Source_User:_gg_src\">For Source User: gg_src<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Add_Trandata\">Add Trandata<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Prepare_Extract_Group\">Prepare Extract Group<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#For_Target_User:_gg_tgt\">For Target User: gg_tgt<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Prepare_Replicat\">Prepare Replicat<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#Test\">Test<\/a>\n\t\t<ol class='toc-even level-2'>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Insert_Data_to_Source_Table\">Insert Data to Source Table<\/a>\n\t\t\t<\/li>\n\t\t\t<li>\n\t\t\t\t<a href=\"#Check_Data_in_Target_Table\">Check Data in Target Table<\/a>\n\t\t\t<\/li>\n\t\t<\/ol>\n\t<li>\n\t\t<a href=\"#References\">References<\/a>\n\t<\/li>\n<\/ol>\n<\/ol>\n<\/div>\n<div class='wptoc-end'>&nbsp;<\/div>\n<p>In this note, GoldenGate is used to replicate data from a source table named <em>GG_TEST_TBL1<\/em> to a target table named <em>GG_TEST_TABLE1<\/em>. A column in the source table named <em>PASS<\/em> is also being replicated to a column in the target table named <em>PASSWORD<\/em>.<\/p>\n<span id=\"Prepare_Environment\"><h2>Prepare Environment<\/h2><\/span>\n<p>* See <a href=\"?p=1553\">GoldenGate Tutorial: Simplest<\/a> to setup environment.<\/p>\n<span id=\"Prepare_Database\"><h2>Prepare Database<\/h2><\/span>\n<span id=\"Create_Source_Table\"><h3>Create Source Table<\/h3><\/span>\n<pre lang=\"sql\"> \r\nsqlplus gg_src\/password\r\n \r\n-- Create src table\r\nCREATE TABLE GG_SRC.GG_TEST_TBL1\r\n(\r\nID VARCHAR2(20) NOT NULL,\r\nNAME VARCHAR2(20),\r\nPASS VARCHAR2(512),\r\nCONSTRAINT GG_TEST_TBL1_PK PRIMARY KEY\r\n(\r\nID\r\n)\r\nENABLE\r\n);\r\n<\/pre>\n<span id=\"Create_Target_Table\"><h3>Create Target Table<\/h3><\/span>\n<pre lang=\"sql\"> \r\nsqlplus gg_tgt\/password\r\n \r\n-- Create target table\r\nCREATE TABLE GG_TGT.GG_TEST_TABLE1\r\n(\r\nID VARCHAR2(20) NOT NULL,\r\nNAME VARCHAR2(20),\r\nPASSWORD VARCHAR2(512),\r\nCONSTRAINT GG_TEST_TBL1_PK PRIMARY KEY\r\n(\r\nID\r\n)\r\nENABLE\r\n);\r\n<\/pre>\n<span id=\"Generate_Source_Definitions_File\"><h3>Generate Source Definitions File<\/h3><\/span>\n<p>* Source definitions file is needed since source and target table definitions are different<br \/>\n* Create defgen parameter file from GGSCI: <em>EDIT PARAMS gg_src_tbl1<\/em><\/p>\n<pre lang=\"bash\"> \r\nDEFSFILE dirdef\/gg_src_tbl1.def\r\nUSERID gg_src, PASSWORD password\r\nTABLE gg_src.GG_TEST_TBL1;\r\n<\/pre>\n<p>* Generate source definitions file with the <em>defgen <\/em>command:<br \/>\n&#8211; From GG_HOME directory:<\/p>\n<pre lang=\"sql\"> \r\ndefgen paramfile dirprm\/gg_src_tbl1.prm\r\n<\/pre>\n<span id=\"For_Source_User:_gg_src\"><h2>For Source User: gg_src<\/h2><\/span>\n<span id=\"Add_Trandata\"><h3>Add Trandata<\/h3><\/span>\n<pre lang=\"bash\"> \r\n-- Login source schema\r\nDBLOGIN USERID GG_SRC, PASSWORD password\r\n-- Enable trandata for GG_TEST_TBL1\r\nADD TRANDATA gg_src.GG_TEST_TBL1\r\n<\/pre>\n<span id=\"Prepare_Extract_Group\"><h3>Prepare Extract Group<\/h3><\/span>\n<p>* Create extract group<\/p>\n<pre lang=\"bash\"> \r\nADD EXTRACT e_t1, TRANLOG, BEGIN now\r\n<\/pre>\n<p>* Create extract trail<\/p>\n<pre lang=\"bash\"> \r\nADD EXTTRAIL \/u01\/Oracle\/GoldenGate\/gg1121\/dirdat\/t1, EXTRACT e_t1, MEGABYTES 20\r\n<\/pre>\n<p>* Edit extract parameters: EDIT PARAMS e_t1<\/p>\n<pre lang=\"bash\"> \r\n-- Oracle instance\r\nSETENV (ORACLE_HOME = \"\/usr\/lib\/oracle\/xe\/app\/oracle\/product\/10.2.0\/server\")\r\nSETENV (ORACLE_SID = \"XE\")\r\n \r\n-- Specify extract group\r\nEXTRACT e_t1\r\n \r\n-- Used to login db\r\nUSERID gg_src, PASSWORD password\r\n \r\n-- Specify extract trail file\r\nEXTTRAIL \/u01\/Oracle\/GoldenGate\/gg1121\/dirdat\/t1\r\n \r\n-- Specify tables to extract\r\nTABLE gg_src.GG_TEST_TBL1;\r\n<\/pre>\n<p>* Start Extract<\/p>\n<pre lang=\"bash\"> \r\n-- Start manager process if not already done\r\nstart mgr\r\n \r\n-- Start extract\r\nstart extract e_t1\r\n \r\n-- View extract report\r\nview report e_t1\r\n<\/pre>\n<span id=\"For_Target_User:_gg_tgt\"><h2>For Target User: gg_tgt<\/h2><\/span>\n<span id=\"Prepare_Replicat\"><h3>Prepare Replicat<\/h3><\/span>\n<p>* Create REPLICAT group<\/p>\n<pre lang=\"bash\"> \r\nADD REPLICAT r_t1, EXTTRAIL \/u01\/Oracle\/GoldenGate\/gg1121\/dirdat\/t1, NODBCHECKPOINT, BEGIN now\r\n<\/pre>\n<p>* Edit REPLICAT parameters: EDIT PARAMS r_t1<\/p>\n<pre lang=\"bash\"> \r\n-- Oracle instance\r\nSETENV (ORACLE_HOME = \"\/usr\/lib\/oracle\/xe\/app\/oracle\/product\/10.2.0\/server\")\r\nSETENV (ORACLE_SID = \"XE\")\r\n \r\n-- Replicat group\r\nREPLICAT r_t1\r\n \r\n-- Source definitions file\r\nSOURCEDEFS .\/dirdef\/gg_src_tbl1.def\r\n \r\n-- Login DB\r\nUSERID gg_tgt, PASSWORD password\r\n \r\n-- Map tables AND columns\r\n-- USEDEFAULTS: exact same names\r\n-- PASSWORD = PASS: target column name PASSWORD should be mapped to source column named PASS\r\nMAP gg_src.GG_TEST_TBL1, TARGET gg_tgt.GG_TEST_TABLE1, &\r\nCOLMAP (USEDEFAULTS, &\r\nPASSWORD = PASS);\r\n<\/pre>\n<p>*Start REPLICAT<\/p>\n<pre lang=\"bash\"> \r\nstart replicat r_t1\r\nview report r_t1\r\n<\/pre>\n<span id=\"Test\"><h2>Test<\/h2><\/span>\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_TBL1 VALUES ('1','One','Pass');\r\ncommit;\r\n<\/pre>\n<span id=\"Check_Data_in_Target_Table\"><h3>Check Data in Target Table<\/h3><\/span>\n<pre lang=\"sql\"> \r\nSELECT * FROM GG_TGT.GG_TEST_TABLE1;\r\n \r\nID                   NAME                 PASSWORD\r\n-------------------- -------------------- --------------------\r\n1                    One                  Pass\r\n<\/pre>\n<span id=\"References\"><h2>References<\/h2><\/span>\n<p>* <a href=\"?p=1553\">GoldenGate Tutorial: Simplest<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this note, GoldenGate is used to replicate data from a source table named GG_TEST_TBL1 to a target table named GG_TEST_TABLE1. A column in the source table named PASS is also being replicated to a column in the target table &hellip; <a href=\"https:\/\/jianmingli.com\/wp\/?p=5952\">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":[240,241],"class_list":["post-5952","post","type-post","status-publish","format-standard","hentry","category-goldengate","tag-colmap","tag-goldendate"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8cRUO-1y0","_links":{"self":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/5952","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=5952"}],"version-history":[{"count":5,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/5952\/revisions"}],"predecessor-version":[{"id":5983,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/5952\/revisions\/5983"}],"wp:attachment":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5952"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5952"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5952"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}