Merge Repositories
You can use the Merge Repository Wizard in the Administration Tool to merge Oracle BI repositories.
You can merge repositories in binary Oracle BI repository (RPD) format, or MDS XML format. There are three types of merges:
-
Full merges are typically used during development processes, when there are two different repositories that need to be merged. The Administration Tool provides a three-way merge feature that lets you merge two repositories that have both been derived from a third, original repository. Full merges can also be used to import objects from one repository into another.
-
Patch merges are used when you're applying the differential between two versions of the same repository. For example, you might want to use a patch merge to apply changes from the development version of a repository to your production repository, or to upgrade your Oracle BI Applications repository.
By default, the
patchrpd
utility's merge functionality uses patch mode. If you want to set up the Merge Repository Wizard to match thepatchrpd
utility's default merge functionality, then you must set up the Merge Repository Wizard to run in patch mode. -
Multiuser development merges are used when you're publishing changes to projects using a multiuser development environment, see About the Multiuser Development Merge Process.
See Merge Rules to learn how repository objects are merged.
This section contains the following topics:
Perform Full Repository Merges
You can use the Administration Tool to merge different repositories.
This section describes how to use the full (standard) repository merge feature in the Administration Tool.
This section contains the following topics:
About Full Repository Merges
The merge process typically involves three versions of an Oracle BI Repository: the original repository, modified repository, and current repository.
The original repository is the original repository (the parent repository), while the modified and current repository are the two repositories to merge. The current repository is the one open in the Administration Tool.
During the merge process, the Administration Tool compares the original repository with the modified repository and the original repository with the current repository. Conflicts occur when there are unresolved changes resulting from the two comparisons. For example, a conflict occurs if you rename object A to B in the modified repository, but you rename object A to C in the current repository.
The Merge Repository feature lets you decide on an object-by-object basis which changes you want to keep in the final merged repository. If there are no conflicts, merging is automatic.
There are two types of full merge:
-
Common Parent. This merge, also called a three-way merge, is useful when you've a common parent repository and two derived repositories. There is a parent (original) repository, and two derived repositories. After the merge, a fourth merged repository is created.
The example shown in the figure below assumes you're merging binary Oracle BI (RPD) repositories, but you can also perform this type of merge with MDS XML repositories.
-
No Common Parent
A merge when the objects don't have a common parent is also called a two-way merge. Use a two-way merge when to import objects from one repository to another repository. To perform a merge of objects with no common parent use a three-way merge in the Administration Tool with a blank repository as the original repository.
The example shown in the image below, you're merging binary Oracle BI (RPD) repositories. You can also perform this type of merge with MDS XML repositories.
Perform Full Repository Merges With a Common Parent
Learn how to use the Administration Tool to perform a full repository merge with a common parent.
Use this approach when you've an original parent repository and would like to merge the changes made to objects in two modified repository versions, current and modified. Objects that don't exist in the current repository are created as new objects.
Merge Strategies Reference
Use the table to help with merge decisions when merging repositories with a common parent.
The table lists and describes the elements in the Define Merge Strategies screen.
Element | Description |
---|---|
Conflicts table |
The Conflicts table includes the following columns:
For objects with properties that are modified in each repository, a sub-table (grid) is displayed with details of the changed properties. The grid includes the following columns:
|
Show qualified names |
When selected, shows fully qualified names for objects in the decision table, for example, "Paint"..."Month Year Ago fact". When the Show qualified names option is selected, some of the object names can be too long to fit into the cells of the decision table. Use the mouse to hover over the truncated name to see the full name of the object or property. Alternatively, you can manually resize columns, or double click the column separator to expand the column to the width of the object name. |
Set Default Decisions |
When clicked, allows you to choose how the Administration Tool resolves conflicts. Use this option when you don't want to set each conflict's decision manually. Select All if you want the Administration Tool to resolve all unresolved and resolved conflicts, that is conflicts for which you've already specified decisions. If you choose this option, then the Administration Tool checks the conflict decisions that you've already specified and changes them if necessary. Select Only undecided if you want the Administration Tool to resolve only the unresolved conflicts. That is, to assign decisions to all conflicts for which you haven't specified decisions. When you select this option, the Administration Tool preserves the conflict decisions that you've already specified. |
Check consistency of the merged Oracle BI repository file |
When selected, runs a consistency check before saving the merged file. |
Hide object views |
Select this option to hide the tree panels in the dialog. The tree panels show the affected objects for the row selected in the conflicts decision table. Hiding the tree panels can improve the performance of the Define Merge Strategies screen. |
Save Decisions to File |
Saves a file containing interim changes in the Repository subdirectory so that you can stop work on the merge and continue it later. After saving the changes (decisions), close the Merge repositories dialog by clicking Cancel. If there are a large number of decisions, you can save time by saving the merge decisions to a CSV file, opening the file in Excel or a text editor, and then modifying the merge decisions manually. Then, you can load the updated merge decisions file in the Define Merge Strategies screen, or include the decision file as an argument in |
Load Decision File |
Loads the saved decisions file from the Repository subdirectory so that you can continue processing a repository merge. This option is especially useful for resolving conflicts after running an automated patch merge using |
Find by Name or Type |
Searches by an object Name and Type such as Initialization Block. |
Find Again |
Searches again for the most recent Find value. |
View Change Statistics |
Shows statistics for this merge, such as the number of objects deleted from the Modified repository, the number of objects that were changed in both repositories, and so on. |
Details |
Shows the text in the read-only text box below the decision table in a separate window. |
View Original/Modified/ Current repository |
Shows properties for the affected object in the selected repository. |
Perform Full Repository Merges Without a Common Parent
Learn how to use the Administration Tool to perform a full repository merge without a common parent.
Use this method when you want to import objects from one repository, the modified repository, into another, the current repository.
In the repository you choose to define as current, make sure that the Presentation layer references any Physical layer or Business Model and Mapping layer objects that you want to keep. Objects like business models, databases, and connection pools in the current repository that aren't referenced by any Presentation layer objects are discarded during the merge. If necessary, you might want to add a placeholder subject area that references the objects before you perform the merge to ensure the desired objects are kept. See Merge Rules to learn which objects are retained or discarded during the merge process.
Perform Patch Merges
You can use the patch merge to generate an XML patch file that contains only the changes made to a repository.
This patch can be then applied to the old (original) version of the repository to create the new version.
This merge method is very useful for development-to-production scenarios, and can also be used for Oracle BI Applications customers to upgrade their repository.
This section explains how to generate a patch that contains the differences between two repositories, and then apply the patch to a repository file.
This section contains the following topics:
About Patch Merges
In a patch merge, you create a patch that contains the differences between the current repository and the original repository.
You apply the patch file to the modified repository. Differences between the current and original repository must exist in matching existing projects in both repositories.
In a development-to-production scenario, you've an original parent repository, a current repository that contains the latest development changes, and a modified repository that's the deployed copy of the original repository.
To generate a patch, you open the current repository and select the original repository, then create the patch.
To apply the patch, you open the modified repository and select the original repository, then apply the patch.
In an Oracle BI Applications repository upgrade scenario, the current repository is the latest version of the repository shipped by Oracle, and the original repository is the original repository shipped by Oracle. The modified repository is the one that contains the changes you made to the original repository.
Generate a Repository Patch
Use the Administration Tool to generate a patch that contains the differences between two repositories.
If changes are made using projects, you must add metadata changes to an existing project. Changes made to a new project are lost during the patch merge process.
See Equalize Objects.
- In the Administration Tool, open the current Oracle Analytics Server repository in offline mode. In other words, open the updated repository that contains the changes you want to put in the patch.
- Select File, then select Compare.
- Select the original Oracle Analytics Server repository. Select Repository from the submenu to select a binary Oracle BI repository file in RPD file format, or select XML to select a set of MDS XML documents.
- In the Open Offline dialog, enter the repository password and click OK.
- It's a good practice to equalize your changes to clean up underlying object IDs before generating a patch.
- In the Compare repositories dialog, review the changes between the repositories. Then, click Create Patch.
- In the Create Patch dialog, enter a name for the patch file, for example, my_patch.xml, and click Save.
If the patch contains passwords, such as connection pool passwords, the patch file is encrypted using the repository password from the current repository. The current repository password effectively becomes the patch file password. You might need to supply this patch file password when applying the patch, if it's different from the repository password for the original repository.
You can also generate a patch at the command line using the comparerpd
utility. See Comparing Repositories Using comparerpd.
Apply a Repository Patch
Use the Administration Tool to apply a patch that contains the differences between two repositories.
You can apply patches from a larger multiuser repository to a smaller subset extract repository. In this case, only the changes in the subset are applied from the patch.
Use patchrpd to Apply a Patch
You can apply a patch using the patchrpd utility.
Use patchrpd
when you want to patch repositories on Linux systems where the Administration Tool isn't available. The patchrpd
utility is available on both Windows and Linux systems. You can only run patchrpd
with binary Oracle BI repositories in RPD format.
Unlike the Administration Tool patch feature, patchrpd
provides an option to apply default decisions for conflicts automatically. patchrpd
also provides the capability to save all conflicts to a decision file so that you can examine the results and determine whether additional manual changes are needed. See Using Patchrpd to Automate the Patch Process.
Patchrpd
also provides the ability to select the set of merge rules to apply. By default, the merge rules for patches are used, but you can optionally select to use the full (upgrade) merge rules or the multiuser development merge rules.
The arguments for all passwords, including the modified_rpd_password, original_rpd_password, and patch_file_password, are optional. If you don't provide password arguments, you're prompted to enter any required passwords when you run the command. To minimize the risk of security breaches, Oracle recommends that you don't provide password arguments either on the command line or in scripts. The password arguments are supported for backward compatibility only. For scripting purposes, you can send the password through standard input.
Provide the full path names to all files, including the repository files and the XML patch file, if they're located in a different directory.
The location of the patchrpd
utility is:
BI_DOMAIN/bitools/bin
Syntax
The patchrpd
utility takes the following parameters:
patchrpd [-P modified_rpd_password] -C modified_rpd_pathname [-Q original_rpd_password] -G original_rpd_pathname [-S patch_file_password] -I patch_file_pathname [-S patch_file_2_password -I patch_file_2_pathname ...] [-D input_decision_file_pathname] -O output_rpd_pathname [-V output_decision_file_pathname] [-E] [-M mode] [-R] [-A] [-U] [-N] [-8]
Where:
-P
modified_rpd_password is the repository password for the modified repository, also called the customer or customized repository.
-C
modified_rpd_pathname is the name and location of the modified repository.
-Q
original_rpd_password is the repository password for the original repository.
-G
original_rpd_pathname is the name and location of the original repository.
-S
patch_file_password is the password for the patch file. The patch file password is the same as the password for the current repository. You only need to supply the patch file password when the patch file contains passwords for objects, such as connection pool passwords, and when the patch file password is different from the original repository password.
-I
patch_file_pathname is the name and location of the XML patch file you want to apply. You can apply multiple patches by including multiple -I
arguments with paired -S
arguments, as needed.
-D
input_decision_file_pathname is the name and location of a decision file in CSV format that you want to use to affect the behavior of this patch merge. This argument is optional.
-O
output_rpd_pathname is the name and location of the Oracle BI repository output file you want to generate.
-V
output_decision_file_pathname is an optional argument that lets you generate a CSV format decision file. The decision file shows all the conflicts from the merge. In other words, the decision file lists the decisions that would have been displayed in the Define Merge Strategy screen of the Merge Wizard in the Administration Tool. The decision file provides a record of all items that could be influenced by user input. This argument must be used in conjunction with the -U
argument.
-E
is an optional argument that enables you to skip the equalize step.
-M
mode
is an optional argument that enables you to change the mode of the merge. By default, patchrpd
runs in patch mode, in which as many changes as possible are applied silently. To change this default, then for mode specify mud to use merge rules for multiuser development merges, or upgrade to use merge rules for full merges. See Merge Rules.
By default, the Administration Tool's merge functionality uses full merge. If you want to run the patchrpd
utility to match the Administration Tool's default merge functionality, then you must specify "upgrade" in the -M
mode
argument.
-R
is an optional argument that skips consistency checking for logical columns. This option can speed up the patch process when the patch file doesn't contain logical to physical column mappings.
-A
is an optional argument that can be used in multiuser development environments to skip subset patching and instead apply the patch using input repository files.
-U
is an optional argument that applies default decisions for conflicts automatically so that patchrpd
can finish successfully. If you don't include this parameter, patchrpd
displays a warning and exits if a conflict is detected.
-N
is an optional argument that's used to ignore all non-fatal errors. Examples of non-fatal errors are unresolved objects, duplicated objects, and broken or incorrect expressions.
-8
specifies UTF-8 encoding.
For example:
patchrpd -C customer.rpd -G original.rpd -I patch.xml -O patched.rpd -V decision.csv -U Give password for customer repository: my_modified_rpd_password Give password for original repository: my_original_rpd_password
This example applies a patch called patch.xml
to the customer.rpd repository, and then generates an output repository called patched.rpd and an output decision file called decision.csv.