Escolar Documentos
Profissional Documentos
Cultura Documentos
Informatica MDM Multidomain Edition for Oracle Zero Downtime (ZDT) Upgrade Guide
Version 10.1.0
November 2015
Copyright (c) 1993-2015 Informatica LLC. All rights reserved.
This software and documentation contain proprietary information of Informatica LLC and are provided under a license agreement containing restrictions on use and
disclosure and are also protected by copyright law. Reverse engineering of the software is prohibited. No part of this document may be reproduced or transmitted in any
form, by any means (electronic, photocopying, recording or otherwise) without prior consent of Informatica LLC. This Software may be protected by U.S. and/or
international Patents and other Patents Pending.
Use, duplication, or disclosure of the Software by the U.S. Government is subject to the restrictions set forth in the applicable software license agreement and as
provided in DFARS 227.7202-1(a) and 227.7702-3(a) (1995), DFARS 252.227-7013(1)(ii) (OCT 1988), FAR 12.212(a) (1995), FAR 52.227-19, or FAR 52.227-14
(ALT III), as applicable.
The information in this product or documentation is subject to change without notice. If you find any problems in this product or documentation, please report them to us
in writing.
Informatica, Informatica Platform, Informatica Data Services, PowerCenter, PowerCenterRT, PowerCenter Connect, PowerCenter Data Analyzer, PowerExchange,
PowerMart, Metadata Manager, Informatica Data Quality, Informatica Data Explorer, Informatica B2B Data Transformation, Informatica B2B Data Exchange Informatica
On Demand, Informatica Identity Resolution, Informatica Application Information Lifecycle Management, Informatica Complex Event Processing, Ultra Messaging and
Informatica Master Data Management are trademarks or registered trademarks of Informatica LLC in the United States and in jurisdictions throughout the world. All
other company and product names may be trade names or trademarks of their respective owners.
Portions of this software and/or documentation are subject to copyright held by third parties, including without limitation: Copyright DataDirect Technologies. All rights
reserved. Copyright Sun Microsystems. All rights reserved. Copyright RSA Security Inc. All Rights Reserved. Copyright Ordinal Technology Corp. All rights
reserved.Copyright Aandacht c.v. All rights reserved. Copyright Genivia, Inc. All rights reserved. Copyright Isomorphic Software. All rights reserved. Copyright Meta
Integration Technology, Inc. All rights reserved. Copyright Intalio. All rights reserved. Copyright Oracle. All rights reserved. Copyright Adobe Systems
Incorporated. All rights reserved. Copyright DataArt, Inc. All rights reserved. Copyright ComponentSource. All rights reserved. Copyright Microsoft Corporation. All
rights reserved. Copyright Rogue Wave Software, Inc. All rights reserved. Copyright Teradata Corporation. All rights reserved. Copyright Yahoo! Inc. All rights
reserved. Copyright Glyph & Cog, LLC. All rights reserved. Copyright Thinkmap, Inc. All rights reserved. Copyright Clearpace Software Limited. All rights
reserved. Copyright Information Builders, Inc. All rights reserved. Copyright OSS Nokalva, Inc. All rights reserved. Copyright Edifecs, Inc. All rights reserved.
Copyright Cleo Communications, Inc. All rights reserved. Copyright International Organization for Standardization 1986. All rights reserved. Copyright ejtechnologies GmbH. All rights reserved. Copyright Jaspersoft Corporation. All rights reserved. Copyright International Business Machines Corporation. All rights
reserved. Copyright yWorks GmbH. All rights reserved. Copyright Lucent Technologies. All rights reserved. Copyright (c) University of Toronto. All rights reserved.
Copyright Daniel Veillard. All rights reserved. Copyright Unicode, Inc. Copyright IBM Corp. All rights reserved. Copyright MicroQuill Software Publishing, Inc. All
rights reserved. Copyright PassMark Software Pty Ltd. All rights reserved. Copyright LogiXML, Inc. All rights reserved. Copyright 2003-2010 Lorenzi Davide, All
rights reserved. Copyright Red Hat, Inc. All rights reserved. Copyright The Board of Trustees of the Leland Stanford Junior University. All rights reserved. Copyright
EMC Corporation. All rights reserved. Copyright Flexera Software. All rights reserved. Copyright Jinfonet Software. All rights reserved. Copyright Apple Inc. All
rights reserved. Copyright Telerik Inc. All rights reserved. Copyright BEA Systems. All rights reserved. Copyright PDFlib GmbH. All rights reserved. Copyright
Orientation in Objects GmbH. All rights reserved. Copyright Tanuki Software, Ltd. All rights reserved. Copyright Ricebridge. All rights reserved. Copyright Sencha,
Inc. All rights reserved. Copyright Scalable Systems, Inc. All rights reserved. Copyright jQWidgets. All rights reserved. Copyright Tableau Software, Inc. All rights
reserved. Copyright MaxMind, Inc. All Rights Reserved. Copyright TMate Software s.r.o. All rights reserved. Copyright MapR Technologies Inc. All rights reserved.
Copyright Amazon Corporate LLC. All rights reserved. Copyright Highsoft. All rights reserved. Copyright Python Software Foundation. All rights reserved.
Copyright BeOpen.com. All rights reserved. Copyright CNRI. All rights reserved.
This product includes software developed by the Apache Software Foundation (http://www.apache.org/), and/or other software which is licensed under various versions
of the Apache License (the "License"). You may obtain a copy of these Licenses at http://www.apache.org/licenses/. Unless required by applicable law or agreed to in
writing, software distributed under these Licenses is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied. See the Licenses for the specific language governing permissions and limitations under the Licenses.
This product includes software which was developed by Mozilla (http://www.mozilla.org/), software copyright The JBoss Group, LLC, all rights reserved; software
copyright 1999-2006 by Bruno Lowagie and Paulo Soares and other software which is licensed under various versions of the GNU Lesser General Public License
Agreement, which may be found at http:// www.gnu.org/licenses/lgpl.html. The materials are provided free of charge by Informatica, "as-is", without warranty of any
kind, either express or implied, including but not limited to the implied warranties of merchantability and fitness for a particular purpose.
The product includes ACE(TM) and TAO(TM) software copyrighted by Douglas C. Schmidt and his research group at Washington University, University of California,
Irvine, and Vanderbilt University, Copyright () 1993-2006, all rights reserved.
This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (copyright The OpenSSL Project. All Rights Reserved) and
redistribution of this software is subject to terms available at http://www.openssl.org and http://www.openssl.org/source/license.html.
This product includes Curl software which is Copyright 1996-2013, Daniel Stenberg, <daniel@haxx.se>. All Rights Reserved. Permissions and limitations regarding this
software are subject to terms available at http://curl.haxx.se/docs/copyright.html. Permission to use, copy, modify, and distribute this software for any purpose with or
without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
The product includes software copyright 2001-2005 () MetaStuff, Ltd. All Rights Reserved. Permissions and limitations regarding this software are subject to terms
available at http://www.dom4j.org/ license.html.
The product includes software copyright 2004-2007, The Dojo Foundation. All Rights Reserved. Permissions and limitations regarding this software are subject to
terms available at http://dojotoolkit.org/license.
This product includes ICU software which is copyright International Business Machines Corporation and others. All rights reserved. Permissions and limitations
regarding this software are subject to terms available at http://source.icu-project.org/repos/icu/icu/trunk/license.html.
This product includes software copyright 1996-2006 Per Bothner. All rights reserved. Your right to use such materials is set forth in the license which may be found at
http:// www.gnu.org/software/ kawa/Software-License.html.
This product includes OSSP UUID software which is Copyright 2002 Ralf S. Engelschall, Copyright 2002 The OSSP Project Copyright 2002 Cable & Wireless
Deutschland. Permissions and limitations regarding this software are subject to terms available at http://www.opensource.org/licenses/mit-license.php.
This product includes software developed by Boost (http://www.boost.org/) or under the Boost software license. Permissions and limitations regarding this software are
subject to terms available at http:/ /www.boost.org/LICENSE_1_0.txt.
This product includes software copyright 1997-2007 University of Cambridge. Permissions and limitations regarding this software are subject to terms available at
http:// www.pcre.org/license.txt.
This product includes software copyright 2007 The Eclipse Foundation. All Rights Reserved. Permissions and limitations regarding this software are subject to terms
available at http:// www.eclipse.org/org/documents/epl-v10.php and at http://www.eclipse.org/org/documents/edl-v10.php.
This product includes software licensed under the terms at http://www.tcl.tk/software/tcltk/license.html, http://www.bosrup.com/web/overlib/?License, http://
www.stlport.org/doc/ license.html, http://asm.ow2.org/license.html, http://www.cryptix.org/LICENSE.TXT, http://hsqldb.org/web/hsqlLicense.html, http://
httpunit.sourceforge.net/doc/ license.html, http://jung.sourceforge.net/license.txt , http://www.gzip.org/zlib/zlib_license.html, http://www.openldap.org/software/release/
license.html, http://www.libssh2.org, http://slf4j.org/license.html, http://www.sente.ch/software/OpenSourceLicense.html, http://fusesource.com/downloads/licenseagreements/fuse-message-broker-v-5-3- license-agreement; http://antlr.org/license.html; http://aopalliance.sourceforge.net/; http://www.bouncycastle.org/licence.html;
http://www.jgraph.com/jgraphdownload.html; http://www.jcraft.com/jsch/LICENSE.txt; http://jotm.objectweb.org/bsd_license.html; . http://www.w3.org/Consortium/Legal/
2002/copyright-software-20021231; http://www.slf4j.org/license.html; http://nanoxml.sourceforge.net/orig/copyright.html; http://www.json.org/license.html; http://
forge.ow2.org/projects/javaservice/, http://www.postgresql.org/about/licence.html, http://www.sqlite.org/copyright.html, http://www.tcl.tk/software/tcltk/license.html, http://
www.jaxen.org/faq.html, http://www.jdom.org/docs/faq.html, http://www.slf4j.org/license.html; http://www.iodbc.org/dataspace/iodbc/wiki/iODBC/License; http://
www.keplerproject.org/md5/license.html; http://www.toedter.com/en/jcalendar/license.html; http://www.edankert.com/bounce/index.html; http://www.net-snmp.org/about/
license.html; http://www.openmdx.org/#FAQ; http://www.php.net/license/3_01.txt; http://srp.stanford.edu/license.txt; http://www.schneier.com/blowfish.html; http://
www.jmock.org/license.html; http://xsom.java.net; http://benalman.com/about/license/; https://github.com/CreateJS/EaselJS/blob/master/src/easeljs/display/Bitmap.js;
http://www.h2database.com/html/license.html#summary; http://jsoncpp.sourceforge.net/LICENSE; http://jdbc.postgresql.org/license.html; http://
protobuf.googlecode.com/svn/trunk/src/google/protobuf/descriptor.proto; https://github.com/rantav/hector/blob/master/LICENSE; http://web.mit.edu/Kerberos/krb5current/doc/mitK5license.html; http://jibx.sourceforge.net/jibx-license.html; https://github.com/lyokato/libgeohash/blob/master/LICENSE; https://github.com/hjiang/jsonxx/
blob/master/LICENSE; https://code.google.com/p/lz4/; https://github.com/jedisct1/libsodium/blob/master/LICENSE; http://one-jar.sourceforge.net/index.php?
page=documents&file=license; https://github.com/EsotericSoftware/kryo/blob/master/license.txt; http://www.scala-lang.org/license.html; https://github.com/tinkerpop/
blueprints/blob/master/LICENSE.txt; http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html; https://aws.amazon.com/asl/; https://github.com/
twbs/bootstrap/blob/master/LICENSE; https://sourceforge.net/p/xmlunit/code/HEAD/tree/trunk/LICENSE.txt; https://github.com/documentcloud/underscore-contrib/blob/
master/LICENSE, and https://github.com/apache/hbase/blob/master/LICENSE.txt.
This product includes software licensed under the Academic Free License (http://www.opensource.org/licenses/afl-3.0.php), the Common Development and Distribution
License (http://www.opensource.org/licenses/cddl1.php) the Common Public License (http://www.opensource.org/licenses/cpl1.0.php), the Sun Binary Code License
Agreement Supplemental License Terms, the BSD License (http:// www.opensource.org/licenses/bsd-license.php), the new BSD License (http://opensource.org/
licenses/BSD-3-Clause), the MIT License (http://www.opensource.org/licenses/mit-license.php), the Artistic License (http://www.opensource.org/licenses/artisticlicense-1.0) and the Initial Developers Public License Version 1.0 (http://www.firebirdsql.org/en/initial-developer-s-public-license-version-1-0/).
This product includes software copyright 2003-2006 Joe WaInes, 2006-2007 XStream Committers. All rights reserved. Permissions and limitations regarding this
software are subject to terms available at http://xstream.codehaus.org/license.html. This product includes software developed by the Indiana University Extreme! Lab.
For further information please visit http://www.extreme.indiana.edu/.
This product includes software Copyright (c) 2013 Frank Balluffi and Markus Moeller. All rights reserved. Permissions and limitations regarding this software are subject
to terms of the MIT license.
See patents at https://www.informatica.com/legal/patents.html.
DISCLAIMER: Informatica LLC provides this documentation "as is" without warranty of any kind, either express or implied, including, but not limited to, the implied
warranties of noninfringement, merchantability, or use for a particular purpose. Informatica LLC does not warrant that this software or documentation is error free. The
information provided in this software or documentation may include technical inaccuracies or typographical errors. The information in this software and documentation is
subject to change at any time without notice.
NOTICES
This Informatica product (the "Software") includes certain drivers (the "DataDirect Drivers") from DataDirect Technologies, an operating company of Progress Software
Corporation ("DataDirect") which are subject to the following terms and conditions:
1. THE DATADIRECT DRIVERS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
2. IN NO EVENT WILL DATADIRECT OR ITS THIRD PARTY SUPPLIERS BE LIABLE TO THE END-USER CUSTOMER FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, CONSEQUENTIAL OR OTHER DAMAGES ARISING OUT OF THE USE OF THE ODBC DRIVERS, WHETHER OR NOT
INFORMED OF THE POSSIBILITIES OF DAMAGES IN ADVANCE. THESE LIMITATIONS APPLY TO ALL CAUSES OF ACTION, INCLUDING, WITHOUT
LIMITATION, BREACH OF CONTRACT, BREACH OF WARRANTY, NEGLIGENCE, STRICT LIABILITY, MISREPRESENTATION AND OTHER TORTS.
Part Number: MDM-ZUG-101000-0001
Table of Contents
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Informatica Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Informatica My Support Portal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Informatica Documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Informatica Product Availability Matrixes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Informatica Web Site. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Informatica How-To Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Informatica Knowledge Base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Informatica Support YouTube Channel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Informatica Marketplace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Informatica Velocity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Informatica Global Customer Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Chapter 3: Troubleshooting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Registered Backfill Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Reset Matches on Target. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Message Type Enhancement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Table of Contents
Preface
The Upgrading with Zero Downtime Guide provides the information that you need to upgrade Informatica
MDM Hub using the Zero Downtime (ZDT) upgrade process. It is written for users who are responsible for
upgrading Informatica MDM Hub. This guide assumes that you have knowledge of the procedures for
upgrading the MDM Hub Store, the MDM Hub Server, and the MDM Process Server.
Informatica Resources
Informatica My Support Portal
As an Informatica customer, the first step in reaching out to Informatica is through the Informatica My Support
Portal at https://mysupport.informatica.com. The My Support Portal is the largest online data integration
collaboration platform with over 100,000 Informatica customers and partners worldwide.
As a member, you can:
Search the Knowledge Base, find product documentation, access how-to documents, and watch support
videos.
Find your local Informatica User Group Network and collaborate with your peers.
Informatica Documentation
The Informatica Documentation team makes every effort to create accurate, usable documentation. If you
have questions, comments, or ideas about this documentation, contact the Informatica Documentation team
through email at infa_documentation@informatica.com. We will use your feedback to improve our
documentation. Let us know if we can contact you regarding your comments.
The Documentation team updates documentation as needed. To get the latest documentation for your
product, navigate to Product Documentation from https://mysupport.informatica.com.
Informatica Marketplace
The Informatica Marketplace is a forum where developers and partners can share solutions that augment,
extend, or enhance data integration implementations. By leveraging any of the hundreds of solutions
available on the Marketplace, you can improve your productivity and speed up time to implementation on
your projects. You can access Informatica Marketplace at http://www.informaticamarketplace.com.
Informatica Velocity
You can access Informatica Velocity at https://mysupport.informatica.com. Developed from the real-world
experience of hundreds of data management projects, Informatica Velocity represents the collective
knowledge of our consultants who have worked with organizations from around the world to plan, develop,
deploy, and maintain successful data management solutions. If you have questions, comments, or ideas
about Informatica Velocity, contact Informatica Professional Services at ips@informatica.com.
Preface
The telephone numbers for Informatica Global Customer Support are available from the Informatica web site
at http://www.informatica.com/us/services-and-training/support-services/global-support-centers/.
Preface
CHAPTER 1
CHAPTER 2
2.
Connect to the Operational Reference Store schema that you are upgrading.
3.
Set ACTIVE_UPGRADE_IND to '1' in the passive environment. Run the following command:
update C_REPOS_ZDT_STATUS set ACTIVE_UPGRADE_IND = 1;
BEGIN
cmxzdt.v_zdt_ind:= -1;
END;
/
commit;
4.
Turn off replication replay on the passive environment. Run the following command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.stop_replication_replay(out_error_message => out_error_msg,
out_return_code => out_return_code);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg =>
'||substr(out_error_msg,1,250));
END;
/
5.
6.
If you are upgrading the MDM Hub software, generate the readiness report and then resolve the data
issues that are mandatory to fix. For more information, see the .
If no issues appear in the readiness report, you do not need to perform and further readiness cycle
steps. Restore the passive environment to the pre-upgrade state using backups and then go to the
Zero Downtime upgrade cycle.
If fewer than 10,000 issues appear in the readiness report, you do not need to perform any further
readiness cycle steps. However, you must fix the issues before you upgrade the Hub Store during the
upgrade cycle. If you do not perform any further readiness cycle steps, restore the passive
environment to the pre-upgrade state using backups and then go to the Zero Downtime upgrade
cycle.
If more than 10,000 issues appear in the readiness report, resolve the issues and then complete the
readiness cycle.
Process data changes from the active environment. Run the following command to turn replication replay
on:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.start_replication_replay(in_env_type => cmxzdt.zdt_local,
out_error_message => out_error_msg,
out_return_code => out_return_code);
10
Detect completion of replication catch-up in the passive environment. Run the following command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.wait_replay_catchup(in_timeout_minutes => 5,
out_error_message => out_error_msg,
out_return_code => out_return_code);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg =>
'||substr(out_error_msg,1,250));
END;
/
8.
Send a message from the passive environment to the active environment to disallow batch processes on
the active environment. Run the following command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.disable_all_batch(in_affected_zdt_env
in_timeout_minutes
out_error_message
out_return_code
=>
=>
=>
=>
cmxzdt.zdt_source,
30,
out_error_msg,
out_return_code);
out_error_msg =>
Changes would be required to the batch scheduling and batch control script to detect this condition and
not attempt new jobs. This can be controlled based on the flag on environment A in
C_REPOS_ZDT_STATUS.batch_disabled_ind. Any subsequent invocation of batch jobs from the active
environment will result in an error. The job scheduler should be updated accordingly.
9.
Enable writeable SIF services on the passive environment. Run the following command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.enable_all_write_sif(in_affected_zdt_env
in_timeout_minutes
out_error_message
out_return_code
=>
=>
=>
=>
cmxzdt.zdt_target,
5,
out_error_msg,
out_return_code);
Synchronize sequences. This step ensures that the target environment is updated from all sequence
changes to the source. This resets the high water mark of all user sequences. This is required because
the target sequences are not updated through replication. When replication is switched over between
environments, the synchronization of sequences ensures that new sequence values on the target are
higher than on the source. Run the following command to synchronize sequences:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.synchronize_sequences(out_error_message => out_error_msg,
11
Use a remote shell script command to redirect services to the passive environment.
The passive environment is live for read and write services.
12.
Disable writeable SIF services on the active environment. Run the following command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.disable_all_write_sif(in_affected_zdt_env
in_timeout_minutes
out_error_message
out_return_code
=>
=>
=>
=>
cmxzdt.zdt_source,
5,
out_error_msg,
out_return_code);
Complete the replication processing in the passive environment. Run the following command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.stop_replication(out_error_message => out_error_msg,
out_return_code => out_return_code,
in_timeout_minutes => 60);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg =>
'||substr(out_error_msg,1,250));
END;
/
This call returns when all data is replicated to the passive environment.
14.
Run the following command to set CM_DIRTY_IND to 0 for the data replayed from GoldenGate logs.
You do not need to run STRP, Trust, or Revalidate Base Object backfill.
DECLARE
v_sql
VARCHAR2(500);
v_rownum NUMBER;
BEGIN
FOR bo_list IN (
SELECT rp.table_name
FROM c_repos_table rp, user_tables ut1
WHERE rp.table_name = ut1.table_name
AND rp.type_ind = 1
ORDER BY rp.table_name)
LOOP
v_sql := 'update ' || bo_list.table_name ||
' set cm_dirty_ind=0 where cm_dirty_ind=1';
cmxlog.debug('executing sql:"' || v_sql || '"');
EXECUTE IMMEDIATE 'update ' || bo_list.table_name ||
' set cm_dirty_ind=0 where cm_dirty_ind=1';
v_rownum := SQL%ROWCOUNT;
cmxlog.debug('updated rows:' || v_rownum);
COMMIT;
END LOOP;
END;
/
12
15.
Enable batch services on the passive environment. Run the following command:
Sample SQL:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.enable_all_batch(in_affected_zdt_env => cmxzdt.zdt_target,
in_timeout_minutes => 5,
out_error_message => out_error_msg,
out_return_code => out_return_code);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg =>
'||substr(out_error_msg,1,250));
END;
/
16.
Stop all GoldenGate processes on the passive environment and the active environment:
a.
From the GoldenGate command line, run the following command to stop all GoldenGate processes
on the passive environment, and then remove processes and trail files:
GGSCI (hostname) 1> dblogin userid USER password "Password"
GGSCI (hostname) 1> stop *
GGSCI (hostname) 1> delete * -- hit 'y' when Prompted for n/y
GGSCI (hostname) 1> DELETE TRACETABLE [SCHEMA_NAME].GGS_EVENT_TRACE
GGSCI (hostname) 1> DELETE CHECKPOINTTABLE [SCHEMA_NAME].GGS_EVENT_CHECKPOINT
GGSCI (hostname) 1> DELETE CHECKPOINTTABLE [SCHEMA_NAME].GGS_CHECKPOINT
GGSCI (hostname) 1> shell del <ggsdir>\dirprm\*env* <ggsdir>\dirprm\*def*
<ggsdir>\dirrpt\* <ggsdir>\dirdat\enva\* <ggsdir>\dirdat\envb\*
b.
Remove all processes and trail files on the active environment. Run the following command:
GGSCI (hostname) 1> dblogin userid USER password "Password"
GGSCI (hostname) 1> stop *
GGSCI (hostname) 1> delete * -- hit 'y' when Prompted for n/y
GGSCI (hostname) 1> DELETE TRACETABLE [SCHEMA_NAME].GGS_EVENT_TRACE
GGSCI (hostname) 1> DELETE CHECKPOINTTABLE [SCHEMA_NAME].GGS_EVENT_CHECKPOINT
GGSCI (hostname) 1> shell del <ggsdir>\dirprm\*env* <ggsdir>\dirprm\*def*
<ggsdir>\dirrpt\* <ggsdir>\dirdat\enva\* <ggsdir>\dirdat\envb\*
17.
Mark the passive environment as the source to set up for the replication switch. Run the following
command:
update c_repos_zdt_status set REPLICATION_TARGET_IND = 0;
COMMIT;
18.
Remove history from the ZDT event queue on the passive environment. Run the following command:
delete from C_REPOS_ZDT_EVENT_QUEUE;
delete from C_REPOS_ZDT_REPLICAT_EXCEPTION;
update C_REPOS_ZDT_ENV_STATE set state = NULL, state_ts = NULL, state_desc = NULL,
updated_by=NULL, update_date=NULL;
drop table GGS_EVENT_CHECKPOINT;
drop table GGS_EVENT_TRACE;
drop table GGS_CHECKPOINT;
COMMIT;
19.
20.
Configure sequences for the passive environment to be even. Run the following command:
exec cmxzdt.configure_sequences;
13
21.
Deploy and start the event queue on the passive environment. Run the following command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
CMXZDT.CONFIGURE_GGS_EVENT_REPLICAT(CMXZDT.zdt_local);
CMXZDT.CONFIGURE_GGS_EVENT_EXTRACT(CMXZDT.zdt_local);
CMXZDT.START_EVENT_QUEUE(out_error_message => out_error_msg,
out_return_code => out_return_code);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg =>
'||substr(out_error_msg,1,250));
END;
/
22.
Deploy new replication baseline parameter files from the passive environment to the active environment.
Run the following command:
BEGIN
CMXZDT.CONFIGURE_GGS_EXTRACT(CMXZDT.zdt_local);
END;
/
23.
Start extract and pump on the passive environment, which is now the source. Run the following
command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.start_replication_extract(in_env_type => cmxzdt.zdt_local,
out_error_message => out_error_msg,
out_return_code => out_return_code);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg => '||
substr(out_error_msg,1,250));
END;
/
24.
Get the current SCN from the passive environment. Run the following command:
SQL-CMX_ORS_B> select current_scn from v$database;
CURRENT_SCN
----------2880593
25.
Export the passive environment using Data Pump with the SCN. Run the following command:
C:\> expdp ors_name/pass@tnsname DIRECTORY=DUMP_DIR
DUMPFILE=mrm_backup_envb_after_upgrade.dmp LOGFILE=mrm_backup_after_upgrade.log
PARALLEL=8 job_name=EXPORT_AFTER_UPGRADE flashback_scn=2880593
26.
14
Drop and create the active environment. Close all the connections, such as SQLPlus, TOAD, Application
Server that are connected to the active environment and then drop the schema in active environment.
Run the following command:
Drop schema A - using system user (sqlplus system/password@tnsname)
SQL> drop user envA cascade;
Create schema A - using system user (sqlplus system/password@tnsname)
SQL> @mk_cmx_ors_user; -- supply the schema name as A
2.
Recreate the Operational Reference Store from the export of the passive environment. Run the following
command to import the passive environment Operational Reference Store:
C:\> impdp ors_name/pass@tnsname
DUMPFILE=export_dir: mrm_backup_envb_after_upgrade.dmp
LOGFILE=export_dir: mrm_restore_from_envb.log CONTENT=ALL
REMAP_SCHEMA=fromuser:touser PARALLEL=8 job_name=RESTORE_ENVB
Note: In this step RMAN duplicate could also be used as an alternative. After the database is duplicated,
the SCN to be used to start replication can be obtained from the alert.log of the line. Run the following
command:
RESETLOGS after incomplete recovery UNTIL CHANGE 2880593
3.
Re-compile the packages, stored procedures, and views. Run the following commands:
4.
15
)
Values
(1, 0, 'MRM Installer', sysdate
, 'C:\GGS', 1, 10, 10, 5
, 'LAG_TOKEN_SRC'
, 'ENVA', 'cmx_ors_a', 'C:\GGS\dirdat\enva\', 'enva_hostname', 9999
, 'C:\GGS\dirdat\envb\', 'ENVB', 'cmx_ors_b'
, 'C', 'Q', 'E','R'
, 1, 40, '1 ', 1
);
COMMIT;
5.
On the active environment, clean C_REPOS_ZDT_ENV_STATE table and history information. Run the
following command:
update C_REPOS_ZDT_ENV_STATE set state = NULL, state_ts = NULL, state_desc = NULL,
updated_by=NULL, update_date=NULL;
delete from C_REPOS_ZDT_EVENT_QUEUE;
delete from C_REPOS_ZDT_REPLICAT_EXCEPTION;
drop table GGS_EVENT_CHECKPOINT;
drop table GGS_EVENT_TRACE;
drop table GGS_CHECKPOINT;
commit;
6.
Configure sequences on the active environment to be odd. Run the following command:
exec cmxzdt.configure_sequences;
7.
8.
Deploy and start event queues on the active environment, which is the new target. Run the following
command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
CMXZDT.CONFIGURE_GGS_EVENT_REPLICAT(CMXZDT.zdt_local);
CMXZDT.CONFIGURE_GGS_EVENT_EXTRACT(CMXZDT.zdt_local);
CMXZDT.START_EVENT_QUEUE(out_error_message => out_error_msg,
out_return_code => out_return_code);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg => '||
substr(out_error_msg,1,250));
END;
/
9.
Deploy new replication baseline parameter files from the active environment to the passive environment.
Run the following command:
BEGIN
CMXZDT.CONFIGURE_GGS_REPLICAT(CMXZDT.zdt_local);
END;
/
10.
Start replication replay on the active environment. Use the SCN you obtained in Readiness Steps
Controlled from the Passive Environment on page 10. Run the following command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
begin
cmxzdt.start_replication_replay(in_env_type => cmxzdt.zdt_local,
out_error_message => out_error_msg,
out_return_code => out_return_code,in_after_csn
=> <SCN>);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg => '||
substr(out_error_msg,1,250));
16
end;
/
Generate the prl_expdp.prm and prl_impdp.prm parameter files for the previous load table in the active
environment.
From SQL*Plus in the active environment, run the following command:
DECLARE
IN_TYPE NUMBER;
BEGIN
IN_TYPE := 1;--generate prl_expdp.prm file
CMXZDT.write_prl_exp_imp_param(IN_TYPE => IN_TYPE);
IN_TYPE := 2; --generate prl_impdp.prm file
CMXZDT.write_prl_exp_imp_param(IN_TYPE => IN_TYPE);
END;
/
The parameter files are generated in the GGS\dirprm directory.
2.
3.
Run the following command to export the data in the previous load table in the active environment:
expdp <active Operational Reference Store name>/<TNS password>@<TNS name>
parfile=prl_expdp.prm
The prl.dmp file is generated in GGS\dirprm.
4.
Copy the PRL.dmp and prl_impdp.prm files from the GGS\dirprm directory in the active environment to
the GGS\dirprm directory in the passive environment.
5.
If the active and passive environments are not swapping for the first time, truncate the previous load
table in the passive environment. You must truncate the previous load table in the passive environment
so that the data from the active previous load table can be imported.
In the passive environment, log into SQL*Plus and run the following command:
TRUNCATE TABLE <Previous Load Table Name>;
6.
7.
Run the following command to import the data into the previous load table in the passive environment:
impdp <passive Operational Reference Store name>/<TNS password>@<TNS name>
remap_schema=<active Operational Reference Store name>:<passive Operational
Reference Store name> parfile=prl_impdp.prm
Note: Do not perform a stage batch job until the upgrade is complete. If you perform an upgrade before
the upgrade is complete, the data that the stage batch job adds to the source previous load tables is not
added to the target previous load tables.
17
If you are upgrading the MDM Hub software, stop the application server.
2.
3.
Connect to the Operational Reference Store schema that you are upgrading.
4.
Set ACTIVE_UPGRADE_IND to '1' in the passive environment. Run the following command:
update C_REPOS_ZDT_STATUS set ACTIVE_UPGRADE_IND = 1;
BEGIN
cmxzdt.v_zdt_ind:= -1;
END;
/
commit;
5.
Turn off replication replay on the passive environment. Run the following command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.stop_replication_replay(out_error_message => out_error_msg,
out_return_code => out_return_code);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg =>
'||substr(out_error_msg,1,250));
END;
/
6.
Clean up the schema changes from the previous upgrade. Run the following command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.cleanup_obsolete_objects(out_error_message => out_error_msg,
out_return_code => out_return_code);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg =>
'||substr(out_error_msg,1,250));
END;
/
Removes all columns and tables that were backward compatible removed from the passive environment
during previous upgrade based on C_REPOS_MET_VIRTUAL_CHANGE.
7.
If you are upgrading the MDM Hub software, stop all GoldenGate process on the passive environment.
CMXZDT packages become not valid during upgrade due to schema changes and are not recompiled at
the end of the upgrade process. If GoldenGate processes are running at during the upgrade, CMXZDT
packages cannot be recompiled. Run the following command:
DECLARE
out_error_msg
18
VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.configure_ggs_event_replicat( cmxzdt.zdt_local );
cmxzdt.stop_event_queue( out_error_msg, out_return_code );
dbms_output.put_line('out_return_code => ' || out_return_code || ' out_error_msg
=> ' || SUBSTR( out_error_msg, 1, 250 ));
END;
/
8.
If you are upgrading the MDM Multidomain Edition software, perform the following upgrade steps:
1.
2.
3.
For more information about upgrading the MDM Multidomain Edition software, see the Informatica MDM
Multidomain Edition Upgrade Guide.
9.
If you are upgrading the MDM Hub software, set the CM_DIRTY_IND to 0 and backfill the base objects
with anonymous blocks. Run the following command:
BEGIN
generate_cmxzdt_temp;
FOR bo_list IN (
SELECT rp.table_name
FROM c_repos_table rp, user_tables ut1
WHERE rp.table_name = ut1.table_name
AND rp.type_ind = 1
ORDER BY rp.table_name
) LOOP
cmxzdt.add_backfill_task(
in_procedure_name => 'HFKM'
, in_table_name
=> bo_list.table_name
, in_usage_type
=> 'B'
, at_seq
=> 1
);
END LOOP;
COMMIT;
END;
/
10.
If you are upgrading the ORS schema, run the Metadata Manager command line utility to apply the
changelist.
The utility applies my_implementation_upgrade.xml, removes the gender code, and adds trust to the
do_not_call_flag column.
11.
If you are upgrading the ORS schema or applying an EBF or hotfix, populate the backfill table
C_REPOS_ZDT_BACKFILL_TASK to indicate that trust backfill is required for this upgrade on
C_CUSTOMER. The Zero Downtime process does not replicate table
C_REPOS_ZDT_BACKFILL_TASK. The following example shows a command for trust backfill for
C_CUSTOMER that affects write and read activities, and has a sequence of 1:
exec CMXZDT.add_backfill_task('TRUST_BACKFILL','C_CUSTOMER','B', 1);
COMMIT;
In the command, use the data in the repository metadata.
12.
Run the backfill batch job for each base object. You can run the batch backfill job from the Hub Console
or use the ExecuteBatchBackfillAll or ExecuteBatchBackfill SIF API to run the backfill batch job. The
ExecuteBatchBackfillAll SIF API runs the backfill batch job for all base objects and the
ExecuteBatchBackfill SIF API runs the backfill batch job for a specified base object.
To use the MDM Hub Console to run the backfill for a base object, perform the following steps:
a.
19
b.
From the Batch Viewer navigation pane, select the base object that you want to backfill.
If the backfill batch job does not appear in the batch viewer for the base object, select Batch Viewer
> Refresh.
c.
To backfill only dirty records, enable the For dirty records only check box.
d.
To use an API to run the backfill batch job for a base objects, perform the following steps:
a.
b.
To run the backfill all records, set the dirtyOnlyInd parameter to false. Default is false.
c.
To run the backfill dirty records only, set the dirtyOnlyInd parameter to true.
d.
13.
If you are upgrading the ORS schema and the MDM Hub is changing data or reloading data during the
upgrade, disable regular GoldenGate mapping for C_AGREEMENT and change the mapping to table
C_AGREEMENT_XREF_NEW_FROM_A.
a.
Turn off mapping for the entire C_AGREEMENT base object and all related tables by using
cmxzdt.disable_bo_replication ('C_AGREEMENT'). Run the following command:
BEGIN
cmxzdt.disable_bo_replication ('C_AGREEMENT');
commit;
END;
/
b.
20
END;
/
14.
If you are upgrading the ORS schema and the MDM Hub is changing data or reloading data during the
upgrade, start the reload of data to C_AGREEMENT from C_AGREEMENT_XREF. You do not need to
wait for the data to reload before you proceed to step 15.
15.
16.
a.
b.
c.
If you are upgrading the MDM Hub software, start event queue processes on the passive environment.
Run the following command:
DECLARE
out_error_msg
VARCHAR2(32000);
out_return_code INT;
BEGIN
CMXZDT.CONFIGURE_GGS_EVENT_REPLICAT(CMXZDT.ZDT_LOCAL);
cmxzdt.start_event_queue( out_error_msg, out_return_code );
dbms_output.put_line('out_return_code => ' || out_return_code || ' out_error_msg
=> ' || SUBSTR( out_error_msg, 1, 250 ));
END;
/
17.
If you are upgrading the MDM Hub software, remap the columns for GoldenGate to put the foreign key
into a CHAR(14) column. Run the following command:
BEGIN
cmxzdt.configure_ggs_replicat(in_env_type
=> cmxzdt.zdt_local,
in_remap_mode => 1);
END;
/
18.
Process data changes from the active environment. Run the following command to turn replication replay
on:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.start_replication_replay(in_env_type => cmxzdt.zdt_local,
out_error_message => out_error_msg,
out_return_code => out_return_code);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg =>
'||substr(out_error_msg,1,250));
END;
/
19.
Detect completion of replication catch-up in the passive environment. Run the following command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.wait_replay_catchup(in_timeout_minutes => 5,
out_error_message => out_error_msg,
out_return_code => out_return_code);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg =>
'||substr(out_error_msg,1,250));
END;
/
21
20.
Send a message from the passive environment to the active environment to disallow batch processes on
the active environment. Run the following command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.disable_all_batch(in_affected_zdt_env
in_timeout_minutes
out_error_message
out_return_code
=>
=>
=>
=>
cmxzdt.zdt_source,
30,
out_error_msg,
out_return_code);
out_error_msg =>
Changes would be required to the batch scheduling and batch control script to detect this condition and
not attempt new jobs. This can be controlled based on the flag on environment A in
C_REPOS_ZDT_STATUS.batch_disabled_ind. Any subsequent invocation of batch jobs from the active
environment will result in an error. The job scheduler should be updated accordingly.
21.
Enable writeable SIF services on the passive environment. Run the following command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.enable_all_write_sif(in_affected_zdt_env
in_timeout_minutes
out_error_message
out_return_code
=>
=>
=>
=>
cmxzdt.zdt_target,
5,
out_error_msg,
out_return_code);
If you are upgrading the MDM Hub software, start the application server.
23.
Synchronize sequences. This step ensures that the target environment is updated from all sequence
changes to the source. This resets the high water mark of all user sequences. This is required because
the target sequences are not updated through replication. When replication is switched over between
environments, the synchronization of sequences ensures that new sequence values on the target are
higher than on the source. Run the following command to synchronize sequences:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.synchronize_sequences(out_error_message => out_error_msg,
out_return_code => out_return_code);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg =>
'||substr(out_error_msg,1,250));
END;
/
24.
Use a remote shell script command to redirect services to the passive environment.
The passive environment is live for read and write services.
25.
Disable writeable SIF services on the active environment. Run the following command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.disable_all_write_sif(in_affected_zdt_env => cmxzdt.zdt_source,
in_timeout_minutes => 5,
22
Complete the replication processing in the passive environment. Run the following command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.stop_replication(out_error_message => out_error_msg,
out_return_code => out_return_code,
in_timeout_minutes => 60);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg =>
'||substr(out_error_msg,1,250));
END;
/
This call returns when all data is replicated to the passive environment.
27.
If you are upgrading the ORS schema and the MDM Hub is changing data or reloading data during the
upgrade, process the delta on C_AGREEMENT.
The implementation resource custom writes this to handle the data that came from the active
environment after you reloaded the passive environment.
28.
If you are upgrading the ORS schema or applying an EBF or hotfix, run backfill on dirty records for each
base object. You can run the batch backfill job from the Hub Console or you can optionally use the
ExecuteBatchBackfillAll or ExecuteBatchBackfill SIF API to run the backfill batch job. The
ExecuteBatchBackfillAll SIF API runs the backfill batch job for all base objects and the
ExecuteBatchBackfill SIF API runs the backfill batch job for a specified base object.
To use the MDM Hub Console to run the backfill for a base object, perform the following steps:
a.
b.
From the Batch Viewer navigation pane, select the base object that you want to backfill.
If the backfill batch job does not appear in the batch viewer for the base object, select Batch Viewer
> Refresh.
c.
Enable the For dirty records only check box to select the records that have a CM_DIRTY_IND
value of 1.
d.
To use an API to run the backfill batch job for a base objects, perform the following steps:
a.
b.
Set the dirtyOnlyInd parameter to true to run the backfill on dirty records only.
c.
Ensure you comment out the rowidObjectTable element in the API request.
The following code sample shows an ExecuteBatchBackfill request to backfill the dirty records only
in the C_BO_TRUST base object:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:urn="urn:siperian.api">
<soapenv:Header/>
<soapenv:Body>
<urn:ExecuteBatchBackfill>
<urn:username>admin</urn:username>
<urn:password>
<urn:password>admin</urn:password>
23
</urn:password>
<urn:orsId>localhost-orclsnl-UTSOURCE</urn:orsId>
<urn:asynchronousOptions>
<urn:isAsynchronous>false</urn:isAsynchronous>
</urn:asynchronousOptions>
<urn:tableName>C_BO_TRUST</urn:tableName>
<!--urn:rowidObjectTable>?</urn:rowidObjectTable-->
<urn:dirtyOnlyInd>true</urn:dirtyOnlyInd>
</urn:ExecuteBatchBackfill>
</soapenv:Body>
</soapenv:Envelope>
Note: Use the ExecuteBatchBackfillAll SIF API to backfill all base objects instead of a specified
base object.
29.
If you are upgrading the MDM Hub software, run HFKM backfill for all data replayed from the
GoldenGate logs. You do not need to run STRP, Trust, or Revalidate Base Object backfill. Run the
following command:
DECLARE
out_error_msg
VARCHAR2(32000);
out_return_code
INT;
BEGIN
cmxzdt.backfill_batch_all(in_dirty_only_ind => 1,
in_user_name=> 'admin',
out_error_message=> out_error_msg,
out_return_code=> out_return_code);
dbms_output.put_line('out_return_code => ' || out_return_code || ' out_error_msg
=> ' || SUBSTR( out_error_msg, 1, 250 ));
COMMIT;
END;
/
Note: JIT Backfill for services is active while this is running. The locks are batch row level locks. Also,
backfill batch can be executed per base object from the Batch View in the MDM Hub console.
30.
Enable batch services on the passive environment. Run the following command:
Sample SQL:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.enable_all_batch(in_affected_zdt_env => cmxzdt.zdt_target,
in_timeout_minutes => 5,
out_error_message => out_error_msg,
out_return_code => out_return_code);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg =>
'||substr(out_error_msg,1,250));
END;
/
31.
If you are applying an EBF or hotfix, or upgrading the ORS schema or MDM Hub software, remove
backfill tasks now that all data is clean to ensure that no more batch or API backfills run. The absence of
backfill tasks allows other batch jobs to run. Run the following command:
Delete from c_repos_zdt_backfill_task;
COMMIT;
32.
If you are upgrading the ORS schema and any user data foreign keys changed during the upgrade, run
foreign key validation. Run the ExecuteBatchValidateFKRelationships SIF API for each base object.
Any violations that came from the active environment after the lookup data is updated are detected.
33.
24
If you are upgrading the ORS schema, fix the violations. If the violations are not severe, you can fix the
violations after you complete the upgrade. Contact customer support if you have violations that you are
not able to fix.
34.
If you are upgrading the MDM Hub software, stop all GoldenGate processes on the passive environment
and the active environment:
a.
From the GoldenGate command line, run the following command to stop all GoldenGate processes
on the passive environment, the target, and remove processes and trail files:
GGSCI (hostname) 1> dblogin userid USER password "Password"
GGSCI (hostname) 1> stop *
GGSCI (hostname) 1> delete * -- hit 'y' when Prompted for n/y
GGSCI (hostname) 1> DELETE TRACETABLE [SCHEMA_NAME].GGS_EVENT_TRACE
GGSCI (hostname) 1> DELETE CHECKPOINTTABLE [SCHEMA_NAME].GGS_EVENT_CHECKPOINT
GGSCI (hostname) 1> DELETE CHECKPOINTTABLE [SCHEMA_NAME].GGS_CHECKPOINT
GGSCI (hostname) 1> shell del <ggsdir>\dirprm\*env* <ggsdir>\dirprm\*def*
<ggsdir>\dirrpt\* <ggsdir>\dirdat\enva\* <ggsdir>\dirdat\envb\*
b.
If you are upgrading the MDM Hub Store, remove all processes and trail files on the active
environment. Run the following command:
GGSCI (hostname) 1> dblogin userid USER password "Password"
GGSCI (hostname) 1> stop *
GGSCI (hostname) 1> delete * -- hit 'y' when Prompted for n/y
GGSCI (hostname) 1> DELETE TRACETABLE [SCHEMA_NAME].GGS_EVENT_TRACE
GGSCI (hostname) 1> DELETE CHECKPOINTTABLE [SCHEMA_NAME].GGS_EVENT_CHECKPOINT
GGSCI (hostname) 1> shell del <ggsdir>\dirprm\*env* <ggsdir>\dirprm\*def*
<ggsdir>\dirrpt\* <ggsdir>\dirdat\enva\* <ggsdir>\dirdat\envb\*
35.
If you are upgrading the MDM Hub software, remove all temporary procedures and packages used for
the backfills. Run the following command:
DECLARE
PROCEDURE unregister_table(
prowid_table VARCHAR2
, ptable
VARCHAR2
)
AS
sql_text VARCHAR2(2000);
BEGIN
debug_print(
' Start to unregister a table: ' || ptable ||
' rowid_table ' || prowid_table
);
FOR cc2 IN (
SELECT k.rowid_key_constraint, k.key_type_str, kc.rowid_column
, kc.rowid_parent_column
FROM c_repos_key_constraint k
, c_repos_key_constraint_col kc
, c_repos_column c
WHERE k.rowid_key_constraint = kc.rowid_key_constraint
AND kc.rowid_column = c.rowid_column
AND c.rowid_table = prowid_table
) LOOP
debug_print(
' Start to deprecate constraints : ' || cc2.rowid_key_constraint ||
' ' || cc2.rowid_column || ' rowid_table ' || prowid_table
);
sql_text :=
'DELETE c_repos_key_constraint_col ' ||
'WHERE rowid_column = ''' || cc2.rowid_column || '''';
debug_print( sql_text );
EXECUTE IMMEDIATE sql_text;
'''';
sql_text :=
'DELETE c_repos_key_constraint ' ||
'WHERE rowid_key_constraint = ''' || cc2.rowid_key_constraint ||
debug_print( sql_text );
25
26
36.
Mark the passive environment as the source to set up for the replication switch. Run the following
command:
update c_repos_zdt_status set REPLICATION_TARGET_IND = 0;
COMMIT;
37.
Remove history from the ZDT event queue on the passive environment. Run the following command:
delete from C_REPOS_ZDT_EVENT_QUEUE;
delete from C_REPOS_ZDT_REPLICAT_EXCEPTION;
update C_REPOS_ZDT_ENV_STATE set state = NULL, state_ts = NULL, state_desc = NULL,
updated_by=NULL, update_date=NULL;
drop table GGS_EVENT_CHECKPOINT;
drop table GGS_EVENT_TRACE;
drop table GGS_CHECKPOINT;
COMMIT;
38.
39.
Configure sequences for the passive environment to be even. Run the following command:
40.
Deploy and start the event queue on the passive environment. Run the following command:
exec cmxzdt.configure_sequences;
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
CMXZDT.CONFIGURE_GGS_EVENT_REPLICAT(CMXZDT.zdt_local);
CMXZDT.CONFIGURE_GGS_EVENT_EXTRACT(CMXZDT.zdt_local);
CMXZDT.START_EVENT_QUEUE(out_error_message => out_error_msg,
out_return_code => out_return_code);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg =>
'||substr(out_error_msg,1,250));
END;
/
41.
Deploy new replication baseline parameter files from the passive environment to the active environment.
Run the following command:
BEGIN
CMXZDT.CONFIGURE_GGS_EXTRACT(CMXZDT.zdt_local);
END;
/
42.
Start extract and pump on the passive environment, which is now the source. Run the following
command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
cmxzdt.start_replication_extract(in_env_type => cmxzdt.zdt_local,
out_error_message => out_error_msg,
out_return_code => out_return_code);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg => '||
substr(out_error_msg,1,250));
END;
/
27
43.
Get the current SCN from the passive environment. Run the following command:
SQL-CMX_ORS_B> select current_scn from v$database;
CURRENT_SCN
----------2880593
44.
Export the passive environment using Data Pump with the SCN. Run the following command:
C:\> expdp ors_name/pass@tnsname DIRECTORY=DUMP_DIR
DUMPFILE=mrm_backup_envb_after_upgrade.dmp LOGFILE=mrm_backup_after_upgrade.log
PARALLEL=8 job_name=EXPORT_AFTER_UPGRADE flashback_scn=2880593
45.
If you are upgrading the hardware or non-MDM software, perform the upgrade on the active
environment.
2.
Drop and create the active environment. Close all the connections, such as SQLPlus, TOAD, Application
Server that are connected to the active environment and then drop the schema in active environment.
Run the following command:
Drop schema A - using system user (sqlplus system/password@tnsname)
SQL> drop user envA cascade;
Create schema A - using system user (sqlplus system/password@tnsname)
SQL> @mk_cmx_ors_user; -- supply the schema name as A
3.
Recreate the Operational Reference Store from the export of the passive environment. Run the following
command to import the passive environment Operational Reference Store:
C:\> impdp ors_name/pass@tnsname
DUMPFILE=export_dir: mrm_backup_envb_after_upgrade.dmp
LOGFILE=export_dir: mrm_restore_from_envb.log CONTENT=ALL
REMAP_SCHEMA=fromuser:touser PARALLEL=8 job_name=RESTORE_ENVB
Note: In this step RMAN duplicate could also be used as an alternative. After the database is duplicated,
the SCN to be used to start replication can be obtained from the alert.log of the line. Run the following
command:
RESETLOGS after incomplete recovery UNTIL CHANGE 2880593
4.
Re-compile the packages, stored procedures, and views. Run the following commands:
28
5.
6.
On the active environment, clean C_REPOS_ZDT_ENV_STATE table and history information. Run the
following command:
update C_REPOS_ZDT_ENV_STATE set state = NULL, state_ts = NULL, state_desc = NULL,
updated_by=NULL, update_date=NULL;
delete from C_REPOS_ZDT_EVENT_QUEUE;
delete from C_REPOS_ZDT_REPLICAT_EXCEPTION;
drop table GGS_EVENT_CHECKPOINT;
drop table GGS_EVENT_TRACE;
drop table GGS_CHECKPOINT;
commit;
7.
Configure sequences on the active environment to be odd. Run the following command:
exec cmxzdt.configure_sequences;
8.
9.
Deploy and start event queues on the active environment, which is the new target. Run the following
command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
BEGIN
CMXZDT.CONFIGURE_GGS_EVENT_REPLICAT(CMXZDT.zdt_local);
CMXZDT.CONFIGURE_GGS_EVENT_EXTRACT(CMXZDT.zdt_local);
CMXZDT.START_EVENT_QUEUE(out_error_message => out_error_msg,
out_return_code => out_return_code);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg => '||
substr(out_error_msg,1,250));
END;
/
29
10.
Deploy new replication baseline parameter files from the active environment to the passive environment.
Run the following command:
BEGIN
CMXZDT.CONFIGURE_GGS_REPLICAT(CMXZDT.zdt_local);
END;
/
11.
Start replication replay on the active environment. Use the SCN you obtained in Upgrade Steps
Controlled from the Passive Environment on page 18. Run the following command:
DECLARE
out_error_msg VARCHAR2(32000);
out_return_code INT;
begin
cmxzdt.start_replication_replay(in_env_type => cmxzdt.zdt_local,
out_error_message => out_error_msg,
out_return_code => out_return_code,in_after_csn
=> <SCN>);
dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg => '||
substr(out_error_msg,1,250));
end;
/
30
CHAPTER 3
Troubleshooting
This chapter includes the following topics:
31
32
Chapter 3: Troubleshooting
Index
G
GoldenGate
replication tool 8
supported versions 8
M
MDM Hub
supported versions 8
MDM Hub Upgrade with Zero Downtime
overview 9
T
Troubleshooting
executing batch jobs with backfill tasks enabled 31
message type enhancement 31
Troubleshooting (continued)
registered backfill tasks 31
reset matches on target 31
Z
ZDT
overview 8
prerequisites 8
ZDT readiness cycle
copying the passive environment to the active environment 15
identifying data issues 10
steps controlled from the active environment 15
steps controlled from the passive environment 10
ZDT upgrade cycle
copying the passive environment to the active environment 28
steps controlled from the active environment 28
steps controlled from the passive environment 18
Zero Downtime See ZDT
33