EDB Clone Schema v12
EDB Clone Schema is an extension module for Advanced Server that allows you to copy a schema and its database objects from a local or remote database (the source database) to a receiving database (the target database).
The source and target databases can be the same physical database, or different databases within the same database cluster, or separate databases running under different database clusters on separate database server hosts.
Use the following functions with EDB Clone Schema:
- localcopyschema. This function makes a copy of a schema and its database objects from a source database back into the same database (the target), but with a different schema name than the original. Use this function when the original source schema and the resulting copy are to reside within the same database. See localcopyschema for information on the
localcopyschema
function. - localcopyschema_nb. This function performs the same purpose as
localcopyschema
, but as a background job, thus freeing up the terminal from which the function was initiated. This is referred to as a non-blocking function. See localcopyschema_nb for information on thelocalcopyschema_nb
function. - remotecopyschema. This function makes a copy of a schema and its database objects from a source database to a different target database. Use this function when the original source schema and the resulting copy are to reside in two, separate databases. The separate databases can reside in the same, or in different Advanced Server database clusters. See remotecopyschema for information on the
remotecopyschema
function. - remotecopyschema_nb. This function performs the same purpose as
remotecopyschema
, but as a background job, thus freeing up the terminal from which the function was initiated. This is referred to as a non-blocking function. See remotecopyschema_nb for information on theremotecopyschema_nb
function. - process_status_from_log. This function displays the status of the cloning functions. The information is obtained from a log file that must be specified when a cloning function is invoked. See process_status_from_log for information on the
process_status_from_log
function. - remove_log_file_and_job. This function deletes the log file created by a cloning function. This function can also be used to delete a job created by the non-blocking form of the function. See remove_log_file_and_job for information on the
remove_log_file_and_job
function.
The database objects that can be cloned from one schema to another are the following:
- Data types
- Tables including partitioned tables, excluding foreign tables
- Indexes
- Constraints
- Sequences
- View definitions
- Materialized views
- Private synonyms
- Table triggers, but excluding event triggers
- Rules
- Functions
- Procedures
- Packages
- Comments for all supported object types
- Access control lists (ACLs) for all supported object types
The following database objects cannot be cloned:
- Large objects (Postgres
LOBs
andBFILEs
) - Logical replication attributes for a table
- Database links
- Foreign data wrappers
- Foreign tables
- Event triggers
- Extensions (For cloning objects that rely on extensions, see the third bullet point in the following limitations list.)
- Row level security
- Policies
- Operator class
In addition, the following limitations apply:
- EDB Clone Schema is supported on Advanced Server only when a dialect of
Compatible with Oracle
is specified on the Advanced ServerDialect
dialog during installation, or when the--redwood-like
keywords are included during a text mode installation or cluster initialization. - The source code within functions, procedures, triggers, packages, etc., are not modified after being copied to the target schema. If such programs contain coded references to objects with schema names, the programs may fail upon invocation in the target schema if such schema names are no longer consistent within the target schema.
- Cross schema object dependencies are not resolved. If an object in the target schema depends upon an object in another schema, this dependency is not resolved by the cloning functions.
- For remote cloning, if an object in the source schema is dependent upon an extension, then this extension must be created in the public schema of the remote database before invoking the remote cloning function.
- At most, 16 copy jobs can run in parallel to clone schemas, whereas each job can have at most 16 worker processes to copy table data in parallel.
- Queries being run by background workers cannot be cancelled.
The following section describes how to set up EDB Clone Schema on the databases.
Setup Process
Several extensions along with the PL/Perl language must be installed on any database to be used as the source or target database by an EDB Clone Schema function.
In addition, some configuration parameters in the postgresql.conf
file of the database servers may benefit from some modification.
The following is the setup instructions for these requirements.
Installing Extensions and PL/Perl
The following describes the steps to install the required extensions and the PL/Perl language.
These steps must be performed on any database to be used as the source or target database by an EDB Clone Schema function.
Step 1: The following extensions must be installed on the database:
postgres_fdw
dblink
adminpack
pgagent
Ensure that pgAgent is installed before creating the pgagent
extension. On Linux, you can use the edb-asxx-pgagent
RPM package where xx
is the Advanced Server version number to install pgAgent. On Windows, use StackBuilder Plus to download and install pgAgent.
The previously listed extensions can be installed by the following commands if they do not already exist: