Note: Before proceeding, make certain the SharePlex demonstration objects are installed. See Pre-work for the demonstrations.
In this demonstration, you will use a supplied transformation procedure to have SharePlex replicate data from two separate source tables and apply it to one target table.
Note: In this demonstration, the demonstration objects are assumed to be in the schema named demo. Substitute the actual schema, if different.
Perform the following steps to prepare the objects:
If you ran previous demonstrations, do the following:
On the source and target, run sp_ctrl and issue the following command to shut down sp_cop.
sp_ctrl (source)shutdown
sp_ctrl (target)shutdown
On the source and target, TRUNCATE the od_employee and od_salary tables.
SQL> truncate table demo.od_employee;
SQL> truncate table demo.od_salary;
On the target, grant the user who owns the demonstration objects the system privilege to execute the sp_cr package, which was installed in the SharePlex schema when SharePlex was first installed.
SQL>grant execute on sp_cr touser_name
On the target, log into SQL*Plus as the user who owns the SharePlex demonstration objects, then run the transform.sql script from the util sub-directory of the SharePlex product directory. This installs transformation routines named od_transform_employee_insert and od_transform_employee_update. You are prompted for:
Perform the following steps to configure SharePlex:
On the target, open the transformation.SID file (where SID is the ORACLE_SID of the target database) in a text editor. This file is located in the data sub-directory in the SharePlex variable-data directory.
Note: Post checks this file to determine if there is a transformation procedure that it must call instead of posting the operation to the database.
Create the following entries in the transformation.SID file.
Separate each column with at least a few spaces or a tab character.
demo.od_employee |
I |
demo.od_transform_employee_insert |
demo.od_employee |
U |
demo.od_transform_employee_update |
demo.od_salary |
I |
demo.od_transform_employee_insert |
demo.od_salary |
U |
demo.od_transform_employee_update |
Note: The components of each entry are as follows, in the order they must appear:
|
On the source, create a configuration file named od.transform that replicates the od_salary and od_employee tables.
sp_ctrl(source)>create config od_transform
In the text editor, build your configuration file based on the following template.
datasource:o.r.dbid |
|
|
demo.od_salary |
"DEMO"."OD_SALARY" |
target_system@o.target_SID |
demo.od_employee |
"DEMO"."OD_EMPLOYEE" |
target_system@o.target_SID |
Perform the following steps to activate and start replication:
On the source, activate the configuration.
Confirm that the configuration activated successfully. The name od_transform should appear under File Name, and the word Active should appear under State.
sp_ctrl(source)>list config
On the source, log in as the demo schema owner, then execute the od_add_emps procedure to populate the od_employee and od_salary tables. Use an IN parameter of 10 to create 50 new employees in the od_sales_emp_data table.
dbname# call od_add_emps(10);
Perform the following steps to view the transformed data:
In SQL*Plus, select all rows from od_sales_emp_data.
View the transformed data. You should see the following results:
SharePlex gets its replication instructions from “configurations,” which are user-defined specifications that tell SharePlex what to do. For each group of objects that you want to replicate, you create a configuration file.
Configurations reside on the source system and define:
To create the demonstration configuration:
Create a replication configuration named sample_config by issuing the create config command in sp_ctrl on the source system. This opens the default text editor, which is vi for Linux systems.
Refer to Template 1 below as you construct your configuration.
Template 1: Basic demonstration configuration sample_config
datasource:r.source_DB | ||
"qarun"."basic_c127" | "splex"."basic_c127" | 10.250.14.105@r.sp_ad |
On the first non-commented line of the file, type the following, leaving no space between any of the items.
(Substitute the PostgreSQL database name of the source instance for source_databasename.) This tells SharePlex where to find the table whose data will be replicated. The r. tells Share- Plex that PostgreSQL data is being replicated.
On the next line, enter the owner name (splex) and table name (demo_src) of the source table, separating the two items with a dot (.) but no spaces. Using the owner’s name with a table name ensures that SharePlex replicates the correct table, since different tables in different schemas in a database could have the same name.
In the second column, enter the owner name (splex) and table name (demo_dest) of the target table, separating the two items with a dot (.) but no spaces.
Type a few spaces or a tab to create a third column. Do not press Enter.
In the third column, type the following items with no space between them. This creates the routing map for your configuration, telling SharePlex where to put the replicated data.
Example:
sysB@r.databasename
[OPTIONAL] To view the configuration, issue the view config command in sp_ctrl on the source system:
Activate the configuration in sp_ctrl on the source system. Configuration names are case-sensitive.
To confirm that your configuration is active, type the following sp_ctrl command on the source system to display a list of all configurations. The sample_config configuration should appear under “File Name,” and the word “Active” should appear under “State.”
Tip: If your configuration activation fails, use the view config sample_config command in sp_ctrl to view the file. Compare it to Template 1 and make sure all of the information you entered is correct. For example, check for extra spaces that are not supposed to be there, or for missing components, such as the r. before the database name.
To correct mistakes in the configuration file:
Note: To change an active configuration, you must copy it to a new file first with the copy config command, and then edit and activate the copy.
Note: Before proceeding, make certain the SharePlex demonstration objects are installed.
In this demonstration, you will create and activate a replication configuration, load data to the source table, and then confirm that the data was replicated successfully to the target table. You will also repair a table that is out of synchronization.
Note: In this demonstration, the demonstration objects are assumed to be in the schema named demo. Substitute the actual schema, if different.
Perform these steps on the source system:
Run sp_ctrl .
Issue the following command to create a configuration file named sample_config that replicates the sample_department, sample_salary, sample_timesheet, and sample_employee tables to target tables of the same names on the target system..
sp_ctrl(source)>create config sample_config
In the text editor, build your configuration file based on the following template. Allow no spaces between the characters in a component (source specification, target specification, routing map), and place at least one space between each component.
# sample_config configuration file | ||
datasource:r.source_databasename | ||
"demo"."sample_department" |
"demo"."sample_department" |
target_system@r.target_databasename |
"demo"."sample_salary" | "demo"."sample_salary" |
target_system@r.target_databasename |
"demo"."sample_timesheet" | "demo"."sample_timesheet" | target_system@r.target_databasename |
"demo"."sample_employee" | "demo"."sample_employee" | target_system@r.target_databasename |
where:
In sp_ctrl, verify that the configuration file will activate successfully.
sp_ctrl(source)>verify config sample_config
An example of a config file for PostgreSQL to PostgreSQL replication:
# data2k configuration file | ||
datasource:r.source_databasename | ||
"demo"."data2k" | "demo"."data2k" | target_system@r.target_databasename |
An example of a config file for PostgreSQL to Oracle replication:
# data2k configuration file | ||
datasource:r.source_databasename | ||
"demo"."data2k" | "demo"."data2k" | target_system@o.target_databasename |
Perform these steps on the source system. When you activate a configuration, SharePlex is ready to capture transactional changes that are made to the specified source data.
Activate the configuration.
sp_ctrl(source)>activate config sample_config
Note: Configuration names are case-sensitive.
Confirm that the configuration activated successfully. The name config sample_config should appear under File Name, and the word Active should appear under State.
sp_ctrl(source)>list config
Notes:
|
Fujitsu Enterprise PostgreSQL
Fujitsu PostgreSQL contains a customized ODBC driver designed to run with the shared libraries supplied by Fujitsu PostgreSQL. In order to ensure the proper configuration, you must create a symbolic link to ensure that the correct libraries are found at runtime.
Issue Description:
If you attempt to run the pg_setup program prior to creating the symbolic link, pg_setup will fail with the following error message:
Error: [unixODBC]invalid connection option "target_server"
To create a symbolic link:
To ensure that the proper library gets loaded, first locate the path to the directory where the Fujitsu PostgreSQL libraries are installed (for example /opt/fsepv95server64/lib). Then create a symbolic link in the SharePlex OPTDIR/lib/hooks directory pointing to the libpq.so.5 library in the Fujitsu PostgreSQL library directory. For example:
cd /opt/splex/lib/hooks
ln –s /opt/fsepv95server64/lib/libpq.so.5
Run the PG Setup utility for PostgreSQL (pg_setup) to establish a user account, schema, and tables for use by SharePlex.
ODBCSYSINI – Specifies the directory containing the odbcinst.ini file.
Example: export ODBCSYSINI=/path/to/odbc/
Note: If neither variable is defined, SharePlex defaults to using its internal ODBC ini files located at: /var/odbc.
Provide a DSN (data source name).
Connection Type on Linux | What to do |
---|---|
DSN |
If you have a DSN defined, and you want to use it for the SharePlex connection, copy or link the ODBC files in which that DSN is defined (odbc.ini and odbcinst.ini) to the odbc subdirectory of the SharePlex variable-data directory. This prevents connection errors when the SharePlex processes connect to the database. If you do not have a DSN defined but want to use one, you can create it in the template files provided in the odbc subdirectory. |
See the following examples of the sample odbc.ini and odbcinst.ini files, see the example below:
Review the following requirements to ensure that the setup succeeds.
(Symfoware only) If the person who is running the setup utility is not a Fujitsu Enterprise PostgreSQL owner, set the environment variable LD_LIBRARY_PATH to include the path to the lib subdirectory in the Fujitsu Enterprise PostgreSQL installation directory. The LD_LIBRARY_PATH is set in the .bash_profile file of the Fujitsu Enterprise PostgreSQL owner.
Example:
export LD_LIBRARY_PATH= /opt/symfoserver64/lib:$LD_LIBRARY_PATH
If you do not set this path, the following error occurs:
symbol lookup error: /opt/fsepv95client64/odbc/lib/psqlodbca.so: undefined symbol: PQconnectdbParams
You might need to grant usage/privileges on the target schema and tables to the SharePlex user, as shown in the following example:
Log in as the schema owner, then issue the following commands:
grant usage on schema schema_name to user_name;
grant all privileges on all tables in schema schema_name to user_name;
For Google Cloud database, grant the following privileges if a user wants to change the owner of a table in replication:
alter user splex_user createdb createrole login;
create role role_name;
grant role_name to splex_user;
Follow the below instructions to run the PG setup for PostgreSQL:
Run the pg_setup program from the bin subdirectory of the SharePlex product directory.
Important! If you installed the SharePlex instance on any port other than the default of 2100, use the -p option to specify the port number. For example, in the following command the port number is 9400.
$ /users/splex/bin> pg_setup -p9400
Table 14: Setup prompts and responses
Prompt | Response |
---|---|
Enter the PostgreSQL DSN name: |
Enter a DSN. |
Is DB hosted over "Azure Single Server"? |
Enter "n" for a database hosted on the platform other than "Azure single server". NOTE: Ensure Admin users have the below mentioned roles before initiating setup- On-Prem DB: superuser AWS hosted DB: rds_superuser Azure hosted DB: azure_pg_admin |
Enter the PostgreSQL Administrator name : |
Enter the name of the PostgreSQL Administrator. This user will perform the work on the SharePlex account. |
Enter the password for the Administrator account : |
Enter the password of the Administrator. |
Enter the database name: |
Enter the name of the database that you want to contain the SharePlex tables and other objects for use by SharePlex. You can enter the name of a new or existing database. |
Database name database does not exist. Would you like to create it? [y] : |
If this prompt is displayed, the specified database does not exist. Press Enter to have the setup utility create it for you. |
Would you like to create a new SharePlex user [y]: |
Press Enter to accept the default to create a new SharePlex database user account and schema of the same name in the specified database, or enter n to use an existing SharePlex account. |
Enter the name of the new SharePlex user: Enter the name of the existing SharePlex user: |
One of these prompts is displayed depending on whether you elected to create a new user or use an existing user. Enter the name of the SharePlex user. NOTE: Enter the user name in lowercase letters only. |
Enter the password of the SharePlex user : |
Enter the password of the SharePlex user account. |
Re-enter the password for the SharePlex user : |
This prompt is only shown if you created a new user. Enter the SharePlex password again. |
Will this database be used as a source? [n] : |
Enter Y to use the DB connection for a source. You will see the below prompts only for the DB connection for the source. Enter N to use the DB connection for a target. |
Enter the replication slot name? [test_slot] : |
Enter the replication slot name. NOTE: Replication slot test_slot will be created in database after successful config activation. |
Enter the default tablespace for use by SharePlex [pg_default] : | Enter the default tablespace by SharePlex |
Enter the index tablespace for use by SharePlex [pg_default] : | Enter the index tablespace by SharePlex |
Do you want Logical replication? [n] : |
This prompt is displayed only for on-premise hosted PostgreSQL database. Enter "y" to perform logical replication. Enter "n" to perform physical replication. Setup will now install SharePlex objects. |
A successful setup terminates with a message similar to the following:
Completed SharePlex for PostgreSQL database configuration
SharePlex User name: splexab
Database name: testdb
-- The datasource identifier in the SharePlex configuration is 'r.testdb' --
Important! Applicable only for source configuration: SharePlex holds the WAL logs when configuration is not active. In SharePlex 11.0, when pg_setup is executed, it creates a replication slot. From SharePlex 11.1 onwards, slot is created while activating configuration. This replication slot maintains the latest LSN value of the WAL records that Capture has received and processed. Also, it holds all the WAL files from getting removed or archived, starting from the stored LSN in this slot. In SharePlex 11.1 onwards, the replication slots are dropped while deactivating the configuration. If SharePlex is shut down without deactivating the config file, then run the pg_cleansp utility to drop the slot. This utility also deletes slot names present in connections.yaml from the installation of version 11.0. The following steps need to be performed if you do not want to run pg_cleansp:
|
When the database name contains a hyphen, dot, or plus (-, ., or +) special characters, then remove these characters. Append the _<count> value to the identifier, where the count depends on the datasource identifier existing in the connections.yaml file.
Example:
For the database name aaa.db, the datasource identifier will be r.aaadb_1.
For the database name aaa+db, the datasource identifier will be r.aaadb_2, as r.aaadb_1 already points to the aaa.db database.
If the database does not contain any special characters but its entry exists in the connections.yaml file, append _<count> to its identifier.
Example:
If the database name is aaadb_1 and its entry exists in the connections.yaml file, and the database name is different, the identifier will become r.aaadb_1_1.
If the database name does not contain a hyphen, dot, or plus character, then the database name is the same as the datasource identifier.
You can configure SharePlex to support the PostgreSQL database on the Azure platform using the below steps:
Note: While performing DML operations in bulk for PostgreSQL PaaS (Azure), a performance slowness issue is observed.
Table 15: Setup Prompts and Responses
Prompt | Response |
---|---|
Enter the PostgreSQL DSN name or connection string [] : |
Enter the PostgreSQL DSN name or a connection string that connects to the PostgreSQL database system. Example: pslazpgdb02 |
Is DB hosted over "Azure Single Server"? |
Enter "Y" only when PostgreSQL DB is hosted over 'Azure Single Server'. |
Enter the PostgreSQL Administrator name : |
Enter the name of the PostgreSQL Administrator. This user will perform the setup work on the SharePlex account and schema. Example: PostgreSQL |
Enter the password for the Administrator account: |
Enter the password of the Administrator. |
Enter the replication target database name : |
Enter the target database name on which replication needs to be performed. Example: sp_mk |
Would you like to create a new SharePlex user? Enter the name of the existing SharePlex user: |
N (If you want to create a user, enter “y”)
Enter the name of the SharePlex user. |
Enter the password of the SharePlex user: |
Enter the password of the SharePlex user account. |
Re-enter the password for the SharePlex user: |
This prompt is only shown if you created a new user. Enter the SharePlex password again. |
A successful setup terminates with a message similar to the following:
Completed SharePlex for PostgreSQL database configuration
SharePlex User name: postgres@pslazpgdb02.postgres.database.azure.com
Database name: sp_mk
The data source identifier in the SharePlex configuration is 'r.sp_mk' –
© 2025 Quest Software Inc. ALL RIGHTS RESERVED. Termini di utilizzo Privacy Cookie Preference Center