Você está na página 1de 33

Informatica MDM Multidomain Edition for

Oracle (Version 10.1.0)

Zero Downtime (ZDT) Upgrade


Guide

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 1: Introduction to Zero Downtime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8


Zero Downtime Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Prerequisites for Zero Downtime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

Chapter 2: Upgrade with Zero Downtime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9


Upgrade with Zero Downtime Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Readiness Steps Controlled from the Passive Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Readiness Steps Controlled from the Active Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Transfer the Previous Load Table Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Upgrade Steps Controlled from the Passive Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Upgrade Steps Controlled from the Active Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

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:

Access all of your Informatica resources in one place.

Review your support cases.

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 Product Availability Matrixes


Product Availability Matrixes (PAMs) indicate the versions of operating systems, databases, and other types
of data sources and targets that a product release supports. You can access the PAMs on the Informatica My
Support Portal at https://mysupport.informatica.com.

Informatica Web Site


You can access the Informatica corporate web site at https://www.informatica.com. The site contains
information about Informatica, its background, upcoming events, and sales offices. You will also find product
and partner information. The services area of the site includes important information about technical support,
training and education, and implementation services.

Informatica How-To Library


As an Informatica customer, you can access the Informatica How-To Library at
https://mysupport.informatica.com. The How-To Library is a collection of resources to help you learn more
about Informatica products and features. It includes articles and interactive demonstrations that provide
solutions to common problems, compare features and behaviors, and guide you through performing specific
real-world tasks.

Informatica Knowledge Base


As an Informatica customer, you can access the Informatica Knowledge Base at
https://mysupport.informatica.com. Use the Knowledge Base to search for documented solutions to known
technical issues about Informatica products. You can also find answers to frequently asked questions,
technical white papers, and technical tips. If you have questions, comments, or ideas about the Knowledge
Base, contact the Informatica Knowledge Base team through email at KB_Feedback@informatica.com.

Informatica Support YouTube Channel


You can access the Informatica Support YouTube channel at http://www.youtube.com/user/INFASupport. The
Informatica Support YouTube channel includes videos about solutions that guide you through performing
specific tasks. If you have questions, comments, or ideas about the Informatica Support YouTube channel,
contact the Support YouTube team through email at supportvideos@informatica.com or send a tweet to
@INFASupport.

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.

Informatica Global Customer Support


You can contact a Customer Support Center by telephone or through the Online Support.
Online Support requires a user name and password. You can request a user name and password at
http://mysupport.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

Introduction to Zero Downtime


This chapter includes the following topics:

Zero Downtime Overview, 8

Prerequisites for Zero Downtime, 8

Zero Downtime Overview


Zero Downtime (ZDT) is an upgrade process that you can use to upgrade the Informatica MDM Hub
hardware or software while providing uninterrupted access to the MDM Hub. Batch and Services Integration
Framework (SIF) user processes can run during the ZDT upgrade process.
If you upgrade from a pre-9.5.0 version of MDM Multidomain Edition, the ZDT upgrade process consists of a
readiness cycle and an upgrade cycle. The ZDT readiness cycle is similar to the ZDT upgrade cycle.
However, the ZDT readiness cycle does not change the schema and does not migrate the data. The
readiness cycle is a separate cycle from the upgrade cycle because the combined readiness and upgrade
cycles may produce too many GoldenGate logs to replay.
If you upgrade from a post-9.5.0 version of MDM Multidomain Edition, the ZDT upgrade process only consist
of the upgrade cycle.
ZDT uses a duplicated passive environment to perform the upgrade while letting the active environment
provide for user processing. GoldenGate is the tool that provides replication from the active environment to
the passive environment.
The ZDT upgrade process upgrades the passive environment so that there is no impact to the active
environment. ZDT provides multiple interfaces to allow switching between environments and to allow for
communication between the environments. Any change made to the MDM Hub during the upgrade does not
impact the ability to replicate changes from the active environment. Backfill mechanisms handle any impact
to the MDM Hub metadata caused by the upgrade.

Prerequisites for Zero Downtime


You must identity the source system and target system, ensure the database software is on both systems,
install Oracle GoldenGate on both systems, and configure the MDM Hub Store databases for replication. For
instructions, see the Informatica MDM Zero Downtime Installation Guide.

CHAPTER 2

Upgrade with Zero Downtime


This chapter includes the following topics:

Upgrade with Zero Downtime Overview, 9

Readiness Steps Controlled from the Passive Environment, 10

Readiness Steps Controlled from the Active Environment, 15

Transfer the Previous Load Table Data, 17

Upgrade Steps Controlled from the Passive Environment, 18

Upgrade Steps Controlled from the Active Environment, 28

Upgrade with Zero Downtime Overview


Perform the readiness cycle and upgrade cycle to upgrade from a pre-9.5.0 version of MDM Hub to a
post-9.5.0 version of MDM Hub. You do not need to perform the readiness cycle if you only upgrade the
hardware, upgrade non-MDM software, upgrade the ORS schema, or apply an EBF or hotfix. You also do not
need to perform the readiness cycle if you upgrade from a post-9.5.0 version of MDM Multidomain Edition.
Zero Downtime readiness cycle
You must run the readiness cycle when you upgrade from a pre-9.5.0 version of the MDM Hub software
to a post-9.5.0 version. The readiness cycle contains the steps to identify the data issues that you must
resolve before proceeding to the Zero Downtime (ZDT) upgrade cycle. The readiness cycle does not
require backfill after completion.
You must complete the steps controlled from the passive environment before you proceed to the steps
controlled from the active environment. After the readiness cycle is complete, switch the environments to
make the passive environment the active environment.
Zero Downtime upgrade cycle
Run the steps for the ZDT upgrade cycle from a command line interface, such as shell scripts, or a
command-line job scheduler. The upgrade runs from a single flow of control to allow for almost complete
automation of the upgrade process.
The ZDT upgrade cycle procedure provides steps for messaging between the active environment and
passive environment, maintaining replication control, and integrating backfill.
If you upgrade from a pre-9.5.0 version of MDM Multidomain Edition, the Zero Downtime upgrade cycle
changes the schema data structure and migrates the data.

Readiness Steps Controlled from the Passive


Environment
If you upgrade from a pre-9.5.0 version of MDM Multidomain Edition, perform the readiness steps to identify
and resolve potential upgrade issues related to the 9.5.1 schema upgrade before you perform the upgrade
cycle.
Replication must be active from the active environment to the passive environment to ensure the systems are
synchronized.
The readiness steps are callable from the command line. Every step is dependent on the previous steps. The
commands cannot run until the previous step is complete.
1.

Disable read services to the passive environment.

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

Chapter 2: Upgrade with Zero Downtime

dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg =>


'||substr(out_error_msg,1,250));
END;
/
7.

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);

dbms_output.put_line('out_return_code => '||out_return_code||'


'||substr(out_error_msg,1,250));
END;
/

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);

dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg =>


'||substr(out_error_msg,1,250));
END;
/
10.

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,

Readiness Steps Controlled from the Passive Environment

11

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;
/
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);

dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg =>


'||substr(out_error_msg,1,250));
END;
/
13.

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

Chapter 2: Upgrade with Zero Downtime

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.

Set ACTIVE_UPGRADE_IND to 0 in the passive environment. Run the following command:


update C_REPOS_ZDT_STATUS set ACTIVE_UPGRADE_IND = 0;
BEGIN
cmxzdt.v_zdt_ind:= -1;
END;
/
COMMIT;

20.

Configure sequences for the passive environment to be even. Run the following command:
exec cmxzdt.configure_sequences;

Readiness Steps Controlled from the Passive Environment

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.

Resume batch jobs in the passive environment.


The passive environment is a fully functional source with API and batch services enabled.

14

Chapter 2: Upgrade with Zero Downtime

Readiness Steps Controlled from the Active


Environment
If you upgrade from a pre-9.5.0 version of MDM Multidomain Edition, prepare the active environment as the
target environment after you complete the readiness steps on the passive environment. Run the steps from
the active environment.
1.

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:

Using the system user. For example, sqlplus system/password@tnsname.


@update_javasp.sql
@grant_priv_to_proxy_role.sql
Note: You need to provide the TNS name, schema name, schema password, GoldenGate directory
name, and Operational Reference Store name.

Using a cmx_ors user. For example, sqlplus cmx_ors/!!cmx!!@tnsname.


@compile_all_sp.sql
@compile_all_views.sql

Granting DBA privileges to the user (sqlplus system/password@tnsname).


Grant dba to cmx_ors;
Commit;

4.

Restore ZDT status for the active environment.


Initial settings use disable batch and disable writeable SIF API. Run the following command:
delete from c_repos_zdt_status;
insert into C_REPOS_ZDT_STATUS
(REPLICATION_TARGET_IND, ACTIVE_UPGRADE_IND, CREATOR, CREATE_DATE
, GGS_HOME_PATH, REPLICAT_NUMBER, TRAIL_FILE_SIZE, DISCARD_FILE_SIZE
, ACCEPTABLE_LAG_MINUTES
, LAG_DETECTION_TOKEN
, LOCAL_ENVIRONMENT_NAME, LOCAL_SCHEMA_NAME, LOCAL_TRAIL_PATH, PUMP_RMTHOST,
PUMP_MGRPORT
, REMOTE_TRAIL_PATH, REMOTE_ENVIRONMENT_NAME, REMOTE_SCHEMA_NAME
, REGULAR_STREAM_ID, EVENT_QUEUE_ID, EXTRACT_PREFIX, REPLICAT_PREFIX
, BATCH_DISABLED_IND
, DEFAULT_TIMEOUT_MINUTES
, ROWID_ZDT_STATUS
, WRITE_SIF_API_DISABLED_IND

Readiness Steps Controlled from the Active Environment

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.

Check environment specific settings on the active environment.


Settings such as application server, and debug log may need to be reset now that schema resides on the
active environment.

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

Chapter 2: Upgrade with Zero Downtime

end;
/

Transfer the Previous Load Table Data


You can copy the data from the previous load table in the active environment to the previous load table in the
passive environment. The data in the previous load table is not transferred during the replication process. If
you do not replicate the previous load table, the first stage batch job that you run after the passive
environment becomes active might process all the data in the landing table. The names of the previous load
tables end in _PRL.
1.

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.

Open a command prompt and navigate to the GGS\dirprm directory.

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.

In the passive environment, open a command prompt and navigate to GGS\dirprm.

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.

Transfer the Previous Load Table Data

17

Upgrade Steps Controlled from the Passive


Environment
The upgrade cycle upgrades MDM Multidomain Edition. If you upgrade from a pre-9.5.0 version of MDM
Multidomain Edition, the upgrade cycle also migrates the schema to the post-9.5.0 data structure.
Replication must be active from the active environment to the passive environment to ensure the systems are
synchronized.
You can call the upgrade steps from the command line. Every step is dependent on the previous steps. The
commands cannot run until the previous step is complete.
Note: If you completed the readiness cycle, the passive environment is at the beginning of the readiness
cycle is now active environment.
1.

If you are upgrading the MDM Hub software, stop the application server.

2.

Disable read services to the passive environment.

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

Chapter 2: Upgrade with Zero Downtime

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.

Upgrade the Hub Store.

2.

Upgrade the Hub Server.

3.

Upgrade the Process Server.

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.

In the MDM Hub Console, open the Batch Viewer tool.

Upgrade Steps Controlled from the Passive Environment

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.

Run the backfill batch job.

To use an API to run the backfill batch job for a base objects, perform the following steps:
a.

Ensure the MDM Hub Server is running.

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.

Ensure you comment out the rowidObjectTable element in the 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>
</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>false</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.

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.

Create new mapping from C_AGREEMENT_XREF to C_AGREEMENT_XREF_NEW_FROM_A by


using cmxzdt.remap_table_replication ('C_AGREEMENT_XREF','
C_AGREEMENT_XREF_NEW_FROM_A'). The source and target tables must be the same for this
to work. The table C_AGREEMENT_XREF_NEW_FROM_A is automatically created by
cmxzdt.remap_table_replication procedure, which fails if such table exists already. Run the following
command:
BEGIN
cmxzdt.remap_table_replication ('C_AGREEMENT_XREF',
'C_AGREEMENT_XREF_NEW_FROM_A');
commit;

20

Chapter 2: Upgrade with Zero Downtime

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.

If you conduct user acceptance validation, perform the following steps:

16.

a.

Note the SCN for later flashback.

b.

Perform user acceptance validation.

c.

Flash back to the SCN noted in substep a.

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;
/

Upgrade Steps Controlled from the Passive Environment

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);

dbms_output.put_line('out_return_code => '||out_return_code||'


'||substr(out_error_msg,1,250));
END;
/

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);

dbms_output.put_line('out_return_code => '||out_return_code||' out_error_msg =>


'||substr(out_error_msg,1,250));
END;
/
22.

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

Chapter 2: Upgrade with Zero Downtime

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;
/
26.

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.

In the MDM Hub Console, open the Batch Viewer tool.

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.

Run the backfill batch job.

To use an API to run the backfill batch job for a base objects, perform the following steps:
a.

Ensure the MDM Hub Server is running.

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>

Upgrade Steps Controlled from the Passive Environment

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.

Chapter 2: Upgrade with Zero Downtime

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 );

Upgrade Steps Controlled from the Passive Environment

25

EXECUTE IMMEDIATE sql_text;


END LOOP;
sql_text :=
'DELETE c_repos_column ' ||
'WHERE rowid_table = ''' || prowid_table || '''';
debug_print( sql_text );
EXECUTE IMMEDIATE sql_text;
sql_text :=
'DELETE c_repos_table ' ||
'WHERE rowid_table = ''' || prowid_table || '''';
debug_print( sql_text );
EXECUTE IMMEDIATE sql_text;
COMMIT;
debug_print(' unregistered table: ' || prowid_table);
END unregister_table;
BEGIN
debug_print(' ============================================= ');
debug_print('==> Start to drop temporary ZDT objects');
debug_print('==> ');
FOR i IN (
SELECT DISTINCT u.object_type t, u.object_name n
FROM user_procedures u
WHERE object_name IN ( 'ZDT_C_REPOS_TASK_DATA_GET_XREF'
, 'GENERATE_CMXZDT_TEMP'
, 'CMXZDT_TEMP' )
) LOOP
debug_print( '==> Start to drop temporary ' || i.t || ' ' || i.n || '' );
EXECUTE IMMEDIATE 'drop ' || i.t || ' ' || i.n || '';
END LOOP;
debug_print( '==> ' );
debug_print( '==> End dropping temporary ZDT objects' );
debug_print( ' ============================================= ' );
debug_print( ' ============================================= ' );
debug_print( '==> Start to unregister deprecated tables ' );
debug_print( '==> ' );
FOR cc IN (
SELECT rowid_table, table_name
, SUBSTR( table_name, LENGTH( table_name ) - 3, 4 ) AS postfix
, SUBSTR( UPPER( table_name ), 1, LENGTH( table_name ) - 5 ) AS bo_name
FROM c_repos_table
WHERE type_ind = 14
AND ( ( table_name LIKE '%_HUID' ) OR
( table_name LIKE '%_HFKM' ) OR
( table_name LIKE '%_HMXR' )
)
) LOOP
debug_print(
' Start to unregister table : ' || cc.table_name ||
' rowid_table ' || cc.rowid_table
);
unregister_table( cc.rowid_table, cc.table_name );
END LOOP;
debug_print( '==> ' );
debug_print( '==> End unregistering deprecated tables ' );
debug_print( ' ============================================= ' );
debug_print( 'Changes are completed for all tables. ' );
END;
/

26

Chapter 2: Upgrade with Zero Downtime

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.

Set ACTIVE_UPGRADE_IND to 0 in the passive environment. Run the following command:


update C_REPOS_ZDT_STATUS set ACTIVE_UPGRADE_IND = 0;
BEGIN
cmxzdt.v_zdt_ind:= -1;
END;
/
COMMIT;

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;
/

Upgrade Steps Controlled from the Passive Environment

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.

Resume batch jobs in the passive environment.

Upgrade Steps Controlled from the Active


Environment
The active environment must be prepared after you complete the upgrade steps on the passive environment.
Run the steps from the active environment.
1.

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:

Using the system user. For example, sqlplus system/password@tnsname.


@update_javasp.sql
@grant_priv_to_proxy_role.sql
Note: You need to provide the TNS name, schema name, schema password, GoldenGate directory
name, and Operational Reference Store name.

Using a cmx_ors user. For example, sqlplus cmx_ors/!!cmx!!@tnsname.


@compile_all_sp.sql
@compile_all_views.sql

28

Chapter 2: Upgrade with Zero Downtime

Granting DBA privileges to the user (sqlplus system/password@tnsname).


Grant dba to cmx_ors;
Commit;

5.

Restore ZDT status for the active environment.


Initial settings use disable batch and disable writeable SIF API. Run the following command:
delete from c_repos_zdt_status;
insert into C_REPOS_ZDT_STATUS
(REPLICATION_TARGET_IND, ACTIVE_UPGRADE_IND, CREATOR, CREATE_DATE
, GGS_HOME_PATH, REPLICAT_NUMBER, TRAIL_FILE_SIZE, DISCARD_FILE_SIZE
, ACCEPTABLE_LAG_MINUTES
, LAG_DETECTION_TOKEN
, LOCAL_ENVIRONMENT_NAME, LOCAL_SCHEMA_NAME, LOCAL_TRAIL_PATH, PUMP_RMTHOST,
PUMP_MGRPORT
, REMOTE_TRAIL_PATH, REMOTE_ENVIRONMENT_NAME, REMOTE_SCHEMA_NAME
, REGULAR_STREAM_ID, EVENT_QUEUE_ID, EXTRACT_PREFIX, REPLICAT_PREFIX
, BATCH_DISABLED_IND
, DEFAULT_TIMEOUT_MINUTES
, ROWID_ZDT_STATUS
, WRITE_SIF_API_DISABLED_IND
)
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;

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.

Check environment specific settings on the active environment.


Settings such as application server, and debug log may need to be reset now that schema resides on the
active environment.

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;
/

Upgrade Steps Controlled from the Active Environment

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 2: Upgrade with Zero Downtime

CHAPTER 3

Troubleshooting
This chapter includes the following topics:

Registered Backfill Tasks, 31

Reset Matches on Target, 31

Message Type Enhancement, 31

Registered Backfill Tasks


The MDM Hub does not allow batch jobs to run in a target replication environment while backfill tasks are
registered. The MDM Hub does not allow batch jobs to run because of the high likelihood of locking conflicts
when backfill batch jobs are running concurrently with regular batch jobs. Once the backfill has completed
and the backfill tasks are de-registered, regular execution of batch jobs is enabled.
If you run batch jobs with backfill tasks enabled, an error occurs and the batch job fails.

Reset Matches on Target


The Reset Match logic is not replicated to the target environment. MET migration will not reset the match
table. You must do this using a script. Tokenize backfill does not impact the match table. After a matchrelated change list is applied, a change must be made to the target match rules in order to trigger Reset
Match.

Message Type Enhancement


The message type enhancement can set up GoldenGate and switch ZDT schema processes. The ZDT
schema process can switch from either the source environment or the target environment, though switching
from the target environment is preferred.
Use the message type enhancement for the following use cases:

31

Update remote tables.


Run the following command to update remote tables:
Target C_REPOS_ZDT_STATUS.ACTIVE_UPGRADE_IND will set to 1 from source.
begin
cmxzdt.send_event_message(in_type=>cmxzdt.zdt_execute, in_parameters=>'update
c_repos_zdt_status set active_upgrade_ind=1' );
end;
/
Call remote stored procedures.
Run the following command to generate extract processes and PRM files from the target environment:
begin
cmxzdt.send_event_message( in_type=>cmxzdt.zdt_execute, in_parameters=>'BEGIN
CMXZDT.CONFIGURE_GGS_EXTRACT(CMXZDT.zdt_local); END;' );
end;
/
The message type enhancement cannot run any logic that uses messages recursively.

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

Você também pode gostar