Cloning a database for BRM is not merely a matter of making a copy of the database. Integration must be enforced so that all communication stays intact. In the following steps, we will walk through cloning from one BRM database (Source Machine) to a new database (Target Machine).
Clone database
Source – extract
- We will use the Oracle Data Pump Export with parameter files to write the BRM/IFW/JSA schemas to a dumpfile for transportation to the target.
- Disk space needs to be verified to make sure there is enough room for the dumpfiles. These steps are outlined in the The Into Blog to this series.
- On the source machine, run the following SQL to determine the directory object to which the dumpfile will be written. In this example we will write the dumpfile to DMPDIR=/export/home/oracle/tmp :
column directory_name format a40;
column directory_path format a50;
SELECT directory_name, directory_path FROM dba_directories order by directory_name;
DIRECTORY_NAME DIRECTORY_PATH
---------------------------------------- --------------------------------------------------
...
DMPDIR /export/home/oracle/tmp
...
Export the PIN schema using Oracle datapump export with a PARFILE
PARFILE settings explained
USERID=PINDEV2/PINDEV2
- Log in to the Oracle database.
SCHEMAS=PINDEV2
- Specifies that only the objects in the PINDEV2 schema are to be exported.
CONTENT=ALL
- Unloads both data and metadata.
DIRECTORY=DMPDIR
- Write the dumpfile to the path stored in the DMPDIR directory object, i.e. /export/home/oracle/tmp.
DUMPFILE=pin74_dev_clone.dmp
- Name of the dumpfile containing the exported data and metadata.
LOGFILE=pin74_dev_clone.log
REUSE_DUMPFILES=Y
- If the source database is 11G then you can specify REUSE_DUMPFILES=Y to overwrite the dumpfile. If the source database is 10G or lower, the data files must be managed using the O/S.
Perform the cloning
cd /export/home/oracle/cloning
vi options_exp_pindb.par
USERID=PINDEV2/PINDEV2
SCHEMAS=PINDEV2
CONTENT=ALL
DIRECTORY=DMPDIR
DUMPFILE=pin74_dev_clone.dmp
LOGFILE=pin74_dev_clone.log
#REUSE_DUMPFILES=Y
expdp PARFILE=options_exp_pindb.par
Export the IFW schema
vi options_exp_ifw.par
USERID=IFWDEV2/IFWDEV2
SCHEMAS=IFWDEV2
CONTENT=ALL
DIRECTORY=DMPDIR
DUMPFILE=ifw74_dev_clone.dmp
LOGFILE=ifw74_dev_clone.log
#REUSE_DUMPFILES=Y
expdp PARFILE=options_exp_ifw.par
Export the JSA schema
vi options_exp_jsa.par
USERID=JSADEV2/JSADEV2
SCHEMAS=JSADEV2
CONTENT=ALL
DIRECTORY=DMPDIR
DUMPFILE=jsa74_dev_clone.dmp
LOGFILE=jsa74_dev_clone.log
#REUSE_DUMPFILES=Y
expdp PARFILE=options_exp_jsa.par
Outputs of export
- Dumpfiles and logs are written to /export/home/oracle/tmp.
ls -l /export/home/oracle/tmp
total 305506
drwxr-xr-x 2 oracle dba 512 Jan 30 12:13 ./
drwxr-xr-x 35 oracle dba 2048 Jan 30 12:13 ../
-rw-r----- 1 oracle dba 6774784 Jan 30 12:20 ifw74_dev_clone.dmp
-rw-r--r-- 1 oracle dba 12485 Jan 30 12:20 ifw74_dev_clone.log
-rw-r----- 1 oracle dba 507904 Jan 30 12:18 jsa74_dev_clone.dmp
-rw-r--r-- 1 oracle dba 2420 Jan 30 12:18 jsa74_dev_clone.log
-rw-r----- 1 oracle dba 148963328 Jan 30 12:19 pin74_dev_clone.dmp
-rw-r--r-- 1 oracle dba 54548 Jan 30 12:19 pin74_dev_clone.log
Datapump compatibility issue: (10g to 11g)
- Datapump fails with the following errors when importing into an 11g database from a 10g export over a database link.
- This is a known issue (Doc ID 1062428.1) for which the solution is to apply the latest patch set to the 10g database, e.g.: 10.2.0.4 or 10.1.0.5.
ORA-39006: internal error
ORA-39113: Unable to determine database version
ORA-04052: error occurred when looking up remote object S YS .D BMS _UTI LI TY@<tns alias>
ORA-00604: error occurred at recursive S QL level 3
ORA-06544: PL/S QL: internal error, arguments: [55916], [], [], [], [], [], [], []
ORA-06553: PLS -801: internal error [55916]
ORA-02063: preceding 2 lines from <tns alias>
ORA-39097: Data Pump job encountered unexpected error -4052
ORA-39006: internal error
ORA-06512: at "S YS .D BMS _S YS _ERROR", line 79
ORA-06512: at "S YS .D BMS _D ATAPUMP", line 3444
ORA-06512: at "S YS .D BMS _D ATAPUMP", line 5233
ORA-06512: at line 2
- In this post, since we are importing from 10g to 11g, we will forgo the database link and simply SCP the dumpfile to the target server.
Copy the dumpfiles to the target
- Work on the target database server.
- On the target machine, run the following SQL to determine the directory to which the dumpfiles will be copied.
- In this example we will write the dumpfile to DMPDIR=/export/home/oracle/tmp
column directory_name format a40;
column directory_path format a50;
SELECT directory_name, directory_path FROM dba_directories order by directory_name;
DIRECTORY_NAME DIRECTORY_PATH
---------------------------------------- --------------------------------------------------
BRMREPORTS /home/oracle/BRMREPORTS
DATA_PUMP_DIR /opt/oracle/admin/pindb/dpdump/
DMPDIR /home/oracle/tmp
ORACLE_OCM_CONFIG_DIR /opt/oracle/product/11.2.0/dbhome/ccr/state
XMLDIR /ade/b/2125410156/oracle/rdbms/xml
cd /home/oracle/cloning/pindev3
scp oracle@sourcemachine:/export/home/oracle/tmp/*.dmp /home/oracle/tmp/.
ls -l /home/oracle/tmp
total 152584
-rw-r----- 1 oracle oinstall 6774784 Jan 30 13:30 ifw74_dev_clone.dmp
-rw-r----- 1 oracle oinstall 507904 Jan 30 13:30 jsa74_dev_clone.dmp
-rw-r----- 1 oracle oinstall 148963328 Jan 30 13:31 pin74_dev_clone.dmp
Create target schemas
The target schemas must be created in this order:
- PIN
- JSA
- IFW
Create pin schema
vi drop_pindb.sql
drop tablespace PINDEV3 INCLUDING CONTENTS;
drop tablespace PINDEV3X INCLUDING CONTENTS;
drop user PINDEV3 cascade;
purge DBA_RECYCLEBIN;
quit;
vi create_pindb.sql
create tablespace PINDEV3 datafile '/data1/oradata/pindb/PINDEV3.dbf' size 600M
reuse autoextend on next 200M maxsize 10G default
storage( initial 64K next 64K pctincrease 0);
create tablespace PINDEV3X datafile '/data1/oradata/pindb/PINDEV3X.dbf' size 400M
reuse autoextend on next 200M maxsize 10G default
storage( initial 64K next 64K pctincrease 0);
create user PINDEV3 identified by PINDEV3
default tablespace PINDEV3
temporary tablespace pintemp
quota unlimited on PINDEV3
quota unlimited on PINDEV3X;
grant dba to PINDEV3;
grant execute on dbms_lock to PINDEV3;
quit;
sqlplus "system/oracle as sysdba" @drop_pindb.sql
sqlplus "system/oracle as sysdba" @create_pindb.sql
Create JSA schema
vi drop_jsa.sql
drop user JSADEV3 cascade;
drop role ROLE_JSADEV3_SEL;
drop role ROLE_JSADEV3_ALL;
drop tablespace JSADEV3_DAT including contents and datafiles;
drop tablespace JSADEV3_IDX including contents and datafiles;
purge dba_recyclebin;
quit;
vi create_jsa.sqlClick here for an example 'create_jsa.sql' file
--------------------------------------------------------------------------------
-- jsaDEV3_tablespaces.sql
--------------------------------------------------------------------------------
create tablespace JSADEV3_DAT datafile '/data1/oradata/pindb/JSADEV3_DAT.dbf' size 10m autoextend on next 100m maxsize 10g;
create tablespace JSADEV3_IDX datafile '/data1/oradata/pindb/JSADEV3_IDX.dbf' size 5m autoextend on next 100m maxsize 10g;
--------------------------------------------------------------------------------
-- jsaDEV3_roles.sql
--------------------------------------------------------------------------------
create role ROLE_JSADEV3_SEL;
grant create session to ROLE_JSADEV3_SEL;
-- ------------------------------------------------------------
-- role: ROLE_JSADEV3_ALL
-- ------------------------------------------------------------
create role ROLE_JSADEV3_ALL;
grant connect to ROLE_JSADEV3_ALL;
grant create table to ROLE_JSADEV3_ALL;
grant create view to ROLE_JSADEV3_ALL;
grant create synonym to ROLE_JSADEV3_ALL;
grant create any index to ROLE_JSADEV3_ALL;
grant create sequence to ROLE_JSADEV3_ALL;
grant create cluster to ROLE_JSADEV3_ALL;
grant create database link to ROLE_JSADEV3_ALL;
grant alter session to ROLE_JSADEV3_ALL;
grant ROLE_JSADEV3_SEL to ROLE_JSADEV3_ALL;
-- ------------------------------------------------------------
-- user: jsa
-- ------------------------------------------------------------
create user JSADEV3 identified by JSADEV3
default tablespace JSADEV3_DAT
temporary tablespace TEMP
quota unlimited on JSADEV3_DAT
quota unlimited on JSADEV3_IDX;
grant ROLE_JSADEV3_ALL to JSADEV3 with admin option;
grant create public synonym to JSADEV3;
quit;
Create ifw schema
vi drop_ifw.sqlClick here for an example 'drop_ifw.sql' file
drop user IFWDEV3 cascade;
drop role IFWDEV3_ROLE_SEL;
drop role IFWDEV3_ROLE_ALL;
drop tablespace AGGREGATE_IFWDEV3_TS_1_DAT including contents and datafiles;
drop tablespace AGGREGATE_IFWDEV3_TS_1_IDX including contents and datafiles;
drop tablespace IFWDEV3_TS_1_DAT including contents and datafiles;
drop tablespace IFWDEV3_TS_1_IDX including contents and datafiles;
drop tablespace IFWDEV3_TS_2_DAT including contents and datafiles;
drop tablespace IFWDEV3_TS_2_IDX including contents and datafiles;
drop tablespace IFWDEV3_TS_3_DAT including contents and datafiles;
drop tablespace IFWDEV3_TS_3_IDX including contents and datafiles;
drop tablespace IFWDEV3_TS_4_DAT including contents and datafiles;
drop tablespace IFWDEV3_TS_4_IDX including contents and datafiles;
purge dba_recyclebin;
quit;
vi create_ifw.sqlClick here for an example 'create_ifw.sql' file
-- ------------------------------------------------------------
-- tablespaces: aggregate
-- ------------------------------------------------------------
create tablespace AGGREGATE_IFWDEV3_TS_1_DAT datafile '/data1/oradata/pindb/AGGREGATE_IFWDEV3_TS_1_DAT.dbf' size 5m autoextend on next 200m maxsize 10g;
create tablespace AGGREGATE_IFWDEV3_TS_1_IDX datafile '/data1/oradata/pindb/AGGREGATE_IFWDEV3_TS_1_IDX.dbf' size 10m autoextend on next 200m maxsize 10g;
-- ------------------------------------------------------------
-- tablespaces: integrate
-- ------------------------------------------------------------
create tablespace IFWDEV3_TS_1_DAT datafile '/data1/oradata/pindb/IFWDEV3_TS_1_DAT.dbf' size 25m autoextend on next 200m maxsize 10g;
create tablespace IFWDEV3_TS_1_IDX datafile '/data1/oradata/pindb/IFWDEV3_TS_1_IDX.dbf' size 15m autoextend on next 200m maxsize 10g;
create tablespace IFWDEV3_TS_2_DAT datafile '/data1/oradata/pindb/IFWDEV3_TS_2_DAT.dbf' size 200m autoextend on next 200m maxsize 10g;
create tablespace IFWDEV3_TS_2_IDX datafile '/data1/oradata/pindb/IFWDEV3_TS_2_IDX.dbf' size 200m autoextend on next 200m maxsize 10g;
create tablespace IFWDEV3_TS_3_DAT datafile '/data1/oradata/pindb/IFWDEV3_TS_3_DAT.dbf' size 200m autoextend on next 200m maxsize 10g;
create tablespace IFWDEV3_TS_3_IDX datafile '/data1/oradata/pindb/IFWDEV3_TS_3_IDX.dbf' size 200m autoextend on next 200m maxsize 10g;
create tablespace IFWDEV3_TS_4_DAT datafile '/data1/oradata/pindb/IFWDEV3_TS_4_DAT.dbf' size 200m autoextend on next 200m maxsize 10g;
create tablespace IFWDEV3_TS_4_IDX datafile '/data1/oradata/pindb/IFWDEV3_TS_4_IDX.dbf' size 200m autoextend on next 200m maxsize 10g;
-- ------------------------------------------------------------
-- role: IFWDEV3_ROLE_SEL
-- ------------------------------------------------------------
create role IFWDEV3_ROLE_SEL;
grant create session to IFWDEV3_ROLE_SEL;
grant role_jsa_sel to IFWDEV3_ROLE_SEL;
grant role_jsa_all to IFWDEV3_ROLE_SEL;
-- ------------------------------------------------------------
-- role: IFWDEV3_ROLE_ALL
-- ------------------------------------------------------------
create role IFWDEV3_ROLE_ALL;
grant connect to IFWDEV3_ROLE_ALL;
grant IFWDEV3_ROLE_SEL to IFWDEV3_ROLE_ALL;
-- ------------------------------------------------------------
-- user: integrate
-- ------------------------------------------------------------
create user IFWDEV3 identified by IFWDEV3
default tablespace IFWDEV3_TS_1_DAT
temporary tablespace TEMP
quota unlimited on IFWDEV3_TS_1_DAT
quota unlimited on IFWDEV3_TS_1_IDX
quota unlimited on IFWDEV3_TS_2_DAT
quota unlimited on IFWDEV3_TS_2_IDX
quota unlimited on IFWDEV3_TS_3_DAT
quota unlimited on IFWDEV3_TS_3_IDX
quota unlimited on IFWDEV3_TS_4_DAT
quota unlimited on IFWDEV3_TS_4_IDX
quota unlimited on AGGREGATE_IFWDEV3_TS_1_DAT
quota unlimited on AGGREGATE_IFWDEV3_TS_1_IDX;
grant IFWDEV3_ROLE_ALL to IFWDEV3 with admin option;
grant create public synonym to IFWDEV3;
grant drop public synonym to IFWDEV3;
grant create view to IFWDEV3;
grant create sequence to IFWDEV3;
grant create table to IFWDEV3;
grant create any index to IFWDEV3;
grant create procedure to IFWDEV3;
quit;
Pipeline Synonyms
- Typically the synonyms are public but this will not work if more than one Pipeline instance is set up on a database.
- By default, the scripts for JSA and IFW will create public synonyms. These will need to be adjusted if public synonyms cannot be used.
IFW Synonyms
vi IFW_synonyms.sqlClick here for an example 'IFW_synonyms.sql' File
——————————————————————————–
– select ‘create public synonym ‘ || object_name || ‘ for ‘ || object_name || ‘;’
– from user_objects
– where object_type in ( ‘TABLE’, ‘SEQUENCE’, ‘VIEW’ )
– order by object_type;
– ============================================================
– SEQUENCES
– ============================================================
create public synonym IFW_SEQ_AGGREGATION for IFW_SEQ_AGGREGATION;
create public synonym IFW_SEQ_CALENDAR for IFW_SEQ_CALENDAR;
create public synonym IFW_SEQ_CLASS for IFW_SEQ_CLASS;
create public synonym IFW_SEQ_CLASSCON for IFW_SEQ_CLASSCON;
create public synonym IFW_SEQ_DAYCODE for IFW_SEQ_DAYCODE;
create public synonym IFW_SEQ_DISCOUNTCONFIG for IFW_SEQ_DISCOUNTCONFIG;
create public synonym IFW_SEQ_DISCOUNTMODEL for IFW_SEQ_DISCOUNTMODEL;
create public synonym IFW_SEQ_DISCOUNTSTEP for IFW_SEQ_DISCOUNTSTEP;
create public synonym IFW_SEQ_FIELD_ID for IFW_SEQ_FIELD_ID;
create public synonym IFW_SEQ_RATEPLAN for IFW_SEQ_RATEPLAN;
create public synonym IFW_SEQ_PRICEMODEL for IFW_SEQ_PRICEMODEL;
create public synonym IFW_SEQ_NO for IFW_SEQ_NO;
create public synonym IFW_SEQ_NETWORKMODEL for IFW_SEQ_NETWORKMODEL;
create public synonym IFW_SEQ_GROUPING_CNF for IFW_SEQ_GROUPING_CNF;
create public synonym IFW_SEQ_GROUPING for IFW_SEQ_GROUPING;
create public synonym IFW_SEQ_GRANTED_DISCOUNT for IFW_SEQ_GRANTED_DISCOUNT;
create public synonym IFW_SEQ_GEOMODEL for IFW_SEQ_GEOMODEL;
create public synonym IFW_SEQ_GENERIC for IFW_SEQ_GENERIC;
create public synonym IFW_SEQ_ZONEMODEL for IFW_SEQ_ZONEMODEL;
create public synonym IFW_SEQ_TIMEZONE for IFW_SEQ_TIMEZONE;
create public synonym IFW_SEQ_TIMEMODEL for IFW_SEQ_TIMEMODEL;
create public synonym IFW_SEQ_TIMEINTERVAL for IFW_SEQ_TIMEINTERVAL;
create public synonym IFW_SEQ_SYSTEMBRAND for IFW_SEQ_SYSTEMBRAND;
create public synonym IFW_SEQ_SPECIALDAYRATE for IFW_SEQ_SPECIALDAYRATE;
create public synonym IFW_SEQ_SEMAPHORE for IFW_SEQ_SEMAPHORE;
create public synonym IFW_SEQ_SCENARIO for IFW_SEQ_SCENARIO;
create public synonym IFW_SEQ_DISCOUNTTRIGGER for IFW_SEQ_DISCOUNTTRIGGER;
create public synonym IFW_SEQ_DISCOUNTRULE for IFW_SEQ_DISCOUNTRULE;
create public synonym IFW_SEQ_DISCOUNTMASTER for IFW_SEQ_DISCOUNTMASTER;
create public synonym IFW_SEQ_DISCOUNTCONDITION for IFW_SEQ_DISCOUNTCONDITION;
create public synonym IFW_SEQ_DISCOUNTBALIMPACT for IFW_SEQ_DISCOUNTBALIMPACT;
create public synonym IFW_SEQ_CONTENTPROVIDER for IFW_SEQ_CONTENTPROVIDER;
create public synonym IFW_SEQ_CONDITION for IFW_SEQ_CONDITION;
create public synonym IFW_SEQ_CLASSITEM for IFW_SEQ_CLASSITEM;
create public synonym IFW_SEQ_MODELSELECTOR for IFW_SEQ_MODELSELECTOR;
create public synonym IFW_SEQ_SELECTORRULE for IFW_SEQ_SELECTORRULE;
create public synonym IFW_SEQ_SELECTORDETAIL for IFW_SEQ_SELECTORDETAIL;
create public synonym IFW_SEQ_SELECTORBLOCK for IFW_SEQ_SELECTORBLOCK;
create public synonym IFW_SEQ_CHANGESET for IFW_SEQ_CHANGESET;
create public synonym IFW_SEQ_CSAUDIT for IFW_SEQ_CSAUDIT;
– ============================================================
– TABLES
– ============================================================
create public synonym IC_DAILY for IC_DAILY;
create public synonym IC_DAILY_ALTERNATE for IC_DAILY_ALTERNATE;
create public synonym IFW_AGGREGATION for IFW_AGGREGATION;
create public synonym IFW_ALIAS_MAP for IFW_ALIAS_MAP;
create public synonym IFW_APN_GROUP for IFW_APN_GROUP;
create public synonym IFW_APN_MAP for IFW_APN_MAP;
create public synonym IFW_CALENDAR for IFW_CALENDAR;
create public synonym IFW_CLASS for IFW_CLASS;
create public synonym IFW_CLASSCON for IFW_CLASSCON;
create public synonym IFW_CLASSCON_LNK for IFW_CLASSCON_LNK;
create public synonym IFW_CLASSITEM for IFW_CLASSITEM;
create public synonym IFW_CLASS_LNK for IFW_CLASS_LNK;
create public synonym IFW_CONDITION for IFW_CONDITION;
create public synonym IFW_CURRENCY for IFW_CURRENCY;
create public synonym IFW_DAYCODE for IFW_DAYCODE;
create public synonym IFW_DESTINDESC for IFW_DESTINDESC;
create public synonym IFW_STANDARD_ZONE for IFW_STANDARD_ZONE;
create public synonym IFW_SPLITTING_TYPE for IFW_SPLITTING_TYPE;
create public synonym IFW_SPECIALDAY_LNK for IFW_SPECIALDAY_LNK;
create public synonym IFW_SPECIALDAYRATE for IFW_SPECIALDAYRATE;
create public synonym IFW_SOCIALNUMBER for IFW_SOCIALNUMBER;
create public synonym IFW_SLA for IFW_SLA;
create public synonym IFW_SERVICE_MAP for IFW_SERVICE_MAP;
create public synonym IFW_SERVICECLASS for IFW_SERVICECLASS;
create public synonym IFW_SERVICE for IFW_SERVICE;
create public synonym IFW_USAGECLASS_MAP for IFW_USAGECLASS_MAP;
create public synonym IFW_USAGECLASS for IFW_USAGECLASS;
create public synonym IFW_UOM_MAP for IFW_UOM_MAP;
create public synonym IFW_UOM for IFW_UOM;
create public synonym IFW_TRUNK_CNF for IFW_TRUNK_CNF;
create public synonym IFW_TRUNK for IFW_TRUNK;
create public synonym IFW_TIMEZONE for IFW_TIMEZONE;
create public synonym IFW_TIMEMODEL_LNK for IFW_TIMEMODEL_LNK;
create public synonym IFW_TIMEMODEL for IFW_TIMEMODEL;
create public synonym IFW_ZONEMODEL for IFW_ZONEMODEL;
create public synonym IFW_USC_GROUP for IFW_USC_GROUP;
create public synonym IFW_USAGETYPE for IFW_USAGETYPE;
create public synonym IFW_TIMEINTERVAL for IFW_TIMEINTERVAL;
create public synonym IFW_TAXGROUP for IFW_TAXGROUP;
create public synonym IFW_TAXCODE for IFW_TAXCODE;
create public synonym IFW_TAX for IFW_TAX;
create public synonym IFW_TAM for IFW_TAM;
create public synonym IFW_SYSTEM_BRAND for IFW_SYSTEM_BRAND;
create public synonym IFW_SWITCH for IFW_SWITCH;
create public synonym IFW_DICTIONARY for IFW_DICTIONARY;
create public synonym IFW_DISCARDING for IFW_DISCARDING;
create public synonym IFW_DISCOUNTDETAIL for IFW_DISCOUNTDETAIL;
create public synonym IFW_DISCOUNTMASTER for IFW_DISCOUNTMASTER;
create public synonym IFW_DISCOUNTMODEL for IFW_DISCOUNTMODEL;
create public synonym IFW_DISCOUNTRULE for IFW_DISCOUNTRULE;
create public synonym IFW_DISCOUNTSTEP for IFW_DISCOUNTSTEP;
create public synonym IFW_EDRC_DESC for IFW_EDRC_DESC;
create public synonym IFW_EDRC_FIELD for IFW_EDRC_FIELD;
create public synonym IFW_EXCHANGE_RATE for IFW_EXCHANGE_RATE;
create public synonym IFW_GLACCOUNT for IFW_GLACCOUNT;
create public synonym IFW_GROUPING for IFW_GROUPING;
create public synonym IFW_GROUPING_CNF for IFW_GROUPING_CNF;
create public synonym IFW_HOLIDAY for IFW_HOLIDAY;
create public synonym IFW_ICPRODUCT for IFW_ICPRODUCT;
create public synonym IFW_ICPRODUCT_CNF for IFW_ICPRODUCT_CNF;
create public synonym IFW_ICPRODUCT_RATE for IFW_ICPRODUCT_RATE;
create public synonym IFW_ISCRIPT for IFW_ISCRIPT;
create public synonym IFW_MAP_GROUP for IFW_MAP_GROUP;
create public synonym IFW_NETWORKMODEL for IFW_NETWORKMODEL;
create public synonym IFW_NOPRODUCT for IFW_NOPRODUCT;
create public synonym IFW_NOPRODUCT_CNF for IFW_NOPRODUCT_CNF;
create public synonym IFW_NOSP for IFW_NOSP;
create public synonym IFW_NO_BILLRUN for IFW_NO_BILLRUN;
create public synonym IFW_PIPELINE for IFW_PIPELINE;
create public synonym IFW_POI for IFW_POI;
create public synonym IFW_POIAREA_LNK for IFW_POIAREA_LNK;
create public synonym IFW_PRICEMODEL for IFW_PRICEMODEL;
create public synonym IFW_POIAREA_LNK for IFW_POIAREA_LNK;
create public synonym IFW_PRICEMODEL for IFW_PRICEMODEL;
create public synonym IFW_QUEUE for IFW_QUEUE;
create public synonym IFW_RATEADJUST for IFW_RATEADJUST;
create public synonym IFW_RATEPLAN for IFW_RATEPLAN;
create public synonym IFW_RATEPLAN_CNF for IFW_RATEPLAN_CNF;
create public synonym IFW_RATEPLAN_VER for IFW_RATEPLAN_VER;
create public synonym IFW_RESOURCE for IFW_RESOURCE;
create public synonym IFW_REVENUEGROUP for IFW_REVENUEGROUP;
create public synonym IFW_RSC_GROUP for IFW_RSC_GROUP;
create public synonym IFW_RULE for IFW_RULE;
create public synonym IFW_RULEITEM for IFW_RULEITEM;
create public synonym IFW_RULESET for IFW_RULESET;
create public synonym IFW_RULESETLIST for IFW_RULESETLIST;
create public synonym IFW_RUM for IFW_RUM;
create public synonym IFW_RUMGROUP for IFW_RUMGROUP;
create public synonym IFW_RUMGROUP_LNK for IFW_RUMGROUP_LNK;
create public synonym IFW_SCENARIO for IFW_SCENARIO;
create public synonym IFW_SEGMENT for IFW_SEGMENT;
create public synonym IFW_SEGRATE_LNK for IFW_SEGRATE_LNK;
create public synonym IFW_SEGZONE_LNK for IFW_SEGZONE_LNK;
create public synonym IFW_REF_MAP for IFW_REF_MAP;
create public synonym IFW_DBVERSION for IFW_DBVERSION;
create public synonym IFW_DUPLICATECHECK for IFW_DUPLICATECHECK;
create public synonym IFW_DSCTRIGGER for IFW_DSCTRIGGER;
create public synonym IFW_IMPACT_CAT for IFW_IMPACT_CAT;
create public synonym IFW_SEQCHECK for IFW_SEQCHECK;
create public synonym IFW_DSCMDL_VER for IFW_DSCMDL_VER;
create public synonym IFW_GEO_MODEL for IFW_GEO_MODEL;
create public synonym IFW_GEOAREA_LNK for IFW_GEOAREA_LNK;
create public synonym IFW_NETWORKOPER for IFW_NETWORKOPER;
create public synonym IFW_ICPRODUCT_GRP for IFW_ICPRODUCT_GRP;
create public synonym IFW_USC_MAP for IFW_USC_MAP;
create public synonym IFW_PRICEMDL_STEP for IFW_PRICEMDL_STEP;
create public synonym IFW_GEO_ZONE for IFW_GEO_ZONE;
create public synonym IFW_SEQLOG_OUT for IFW_SEQLOG_OUT;
create public synonym IFW_DSCMDL_CNF for IFW_DSCMDL_CNF;
create public synonym IFW_DSCCONDITION for IFW_DSCCONDITION;
create public synonym IFW_DSCBALIMPACT for IFW_DSCBALIMPACT;
create public synonym IFW_RSC_MAP for IFW_RSC_MAP;
create public synonym IFW_LERG_DATA for IFW_LERG_DATA;
create public synonym IFW_RSC_MAP for IFW_RSC_MAP;
create public synonym IFW_LERG_DATA for IFW_LERG_DATA;
create public synonym IFW_SEQLOG_IN for IFW_SEQLOG_IN;
create public synonym IFW_CSSTATE for IFW_CSSTATE;
create public synonym IFW_CHANGESET for IFW_CHANGESET;
create public synonym IFW_CSLOCK for IFW_CSLOCK;
create public synonym IFW_CSAUDIT for IFW_CSAUDIT;
create public synonym IFW_CSREFERENCE for IFW_CSREFERENCE;
create public synonym IFW_CIBER_OCC for IFW_CIBER_OCC;
create public synonym IFW_MODEL_SELECTOR for IFW_MODEL_SELECTOR;
create public synonym IFW_SELECTOR_RULESET for IFW_SELECTOR_RULESET;
create public synonym IFW_SELECTOR_RULE for IFW_SELECTOR_RULE;
create public synonym IFW_SELECTOR_RULE_LNK for IFW_SELECTOR_RULE_LNK;
create public synonym IFW_SELECTOR_DETAIL for IFW_SELECTOR_DETAIL;
create public synonym IFW_SELECTOR_BLOCK_LNK for IFW_SELECTOR_BLOCK_LNK;
create public synonym IFW_SELECTOR_BLOCK for IFW_SELECTOR_BLOCK;
– ============================================================
– VIEWS
– ============================================================
create public synonym IFW_ZONE for IFW_ZONE;
– ============================================================
– PROCEDURES
– ============================================================
create or replace public synonym PROC_CHECK_IDX_DUPCHK for PROC_CHECK_IDX_DUPCHK;
create or replace public synonym PROC_CREATE_IDX_DUPCHK for PROC_CREATE_IDX_DUPCHK;
create or replace public synonym PROC_DROP_IDX_DUPCHK for PROC_DROP_IDX_DUPCHK;
JSA Synonyms
vi JSA_Synonyms.sql
...
--------------------------------------------------------------------------------
-- $Log: JSA_Synonyms.sql,v $
-- Revision 1.1 2002/02/04 10:28:19
-- Remove public synonyms from create script.
--
--------------------------------------------------------------------------------
-- ============================================================
-- SEQUENCES
-- ============================================================
create public synonym JSA_SEQ_USER_ID for JSA_SEQ_USER_ID;
create public synonym JSA_SEQ_MODULE_ID for JSA_SEQ_MODULE_ID;
create public synonym JSA_SEQ_USERGROUP_ID for JSA_SEQ_USERGROUP_ID;
create public synonym JSA_SEQ_BULLETINBOARD_ID for JSA_SEQ_BULLETINBOARD_ID;
-- ============================================================
-- TABLES
-- ============================================================
create public synonym JSA_BULLETINBOARD for JSA_BULLETINBOARD;
create public synonym JSA_USER for JSA_USER;
create public synonym JSA_USERGROUP for JSA_USERGROUP;
create public synonym JSA_MODULE for JSA_MODULE;
create public synonym JSA_USERRIGHT for JSA_USERRIGHT;
create public synonym JSA_GROUPRIGHT for JSA_GROUPRIGHT;
create public synonym JSA_GROUPUSER for JSA_GROUPUSER;
create public synonym JSA_CONFIG for JSA_CONFIG;
Import the data using Oracle datapump import with a PARFILE
PARFILE settings explained
USERID=system/oracle
- Log in to the Oracle database.
DUMPFILE=DMPDIR:pin74_dev_clone.dmp
- DMPDIR specifies the Oracle directory object where the dumpfile is located.
- Filename specifies the dumpfile (exported and copied from the source database).
LOGFILE=DMPDIR:pin74_dev_import.log
- DMPDIR specifies the Oracle directory object where the logfile is created.
- Filename is the name of the logfile.
REMAP_TABLESPACE=PIN74SRC:PINDEV3
- Source tablespace PIN74SRC becomes target tablespace PINDEV3.
REMAP_SCHEMA=PIN74SRC2:PINDEV3
- Source schema PIN74SRC becomes target schema PINDEV3.
EXCLUDE=USER
- Do not re-create the USER PINDEV3, since it’s created in the SQL above.
TRANSFORM=OID:n
- Prevent ORA-02304 errors by using new object IDs in the target database – do not use the same object IDs that were used in the source database.
- To retain the object IDs used in the source database, use TRANSFORM=OID:y
PIN schema
cd /home/oracle/cloning/pindev3
vi options_imp_pindb.par
USERID=system/oracle
DUMPFILE=DMPDIR:pin74_dev_clone.dmp
LOGFILE=DMPDIR:pin74_dev_import.log
CONTENT=ALL
REMAP_TABLESPACE=PIN74SRC:PINDEV3
REMAP_TABLESPACE=PIN74SRCX:PINDEV3X
REMAP_SCHEMA=PIN74SRC2:PINDEV3
TRANSFORM=OID:n
EXCLUDE=USER
impdp PARFILE=options_imp_pindb.par
JSA schema
vi options_imp_jsa.par
USERID=system/oracle
DUMPFILE=DMPDIR:jsa74_dev_clone.dmp
LOGFILE=DMPDIR:jsa74_dev_import.log
CONTENT=ALL
TRANSFORM=OID:n
EXCLUDE=USER
REMAP_SCHEMA=JSA74BA2:JSADEV3
REMAP_TABLESPACE=JSA74BA2:JSADEV3
REMAP_TABLESPACE=JSA74BA2X:JSADEV3X
impdp PARFILE=options_imp_jsa.par
IFW schema
vi options_imp_ifw.par
USERID=system/oracle
DUMPFILE=DMPDIR:ifw74_dev_clone.dmp
LOGFILE=DMPDIR:ifw74_dev_clone.log
CONTENT=ALL
SCHEMAS=IFW74BA2
TRANSFORM=OID:n
EXCLUDE=USER
REMAP_SCHEMA=IFW74BA2:IFWDEV3
impdp PARFILE=options_imp_ifw.par
Connectivity
/etc/hosts
- Ensure there is an entry for the target database server in the /etc/hosts file.
vi /etc/hosts
#
# Internet host table
#
::1 localhost
127.0.0.1 localhost
10.32.64.224 targetmachine
tnsnames.ora
- Ensure the target database service names are mapped to connect descriptors in the tnsnames.ora:
vi $ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /opt/oracle/oracle/product/11g/client/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
PINDB11G =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = targetmachine)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = pindb)
)
)
tnsping PINDB11G
TNS Ping Utility for Solaris: Version 11.2.0.1.0 - Production on 30-JAN-2014 20:43:05
Copyright (c) 1997, 2009, Oracle. All rights reserved.
Used parameter files:
/opt/oracle/oracle/product/11g/client/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.32.64.225)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = pindb)))
OK (10 msec)
Point DM_ORACLE to the appropriate shared library
- Link to dm_oracle10g.so if the target database is Oracle 10g
- Link to dm_oracle11g.so if the target database is Oracle 11g
Note
- If you are cloning from a 32-bit environment into a 64-bit environment, by default the Oracle 11g 32-bit libraries are not installed when Oracle database is installed on the 64-bit machine. The Oracle 32-bit libraries will therefor need to be installed into the 64-bit environment.
vi $PIN_HOME/sys/dm_oracle/pin.conf
# - dm dm_sm_obj ${PIN_HOME}/sys/dm_oracle/dm_dm_oracle10g${LIBRARYEXTENSION}
- dm dm_sm_obj ${PIN_HOME}/sys/dm_oracle/dm_oracle11g${LIBRARYEXTENSION}
Extras
- The following script will automate the import sequence described above, and report preliminary results and Oracle errors:
vi import_brm_schemas.shClick here for an example 'import_brm_schemas.sh' file
#!/bin/bash
echo "START========================================================================================================"
rm /home/oracle/tmp/*.log
echo "--------------------------------------------------------------------------------------------------- PINDB"
sqlplus "system/oracle as sysdba" @drop_pindb.sql
sqlplus "system/oracle as sysdba" @create_pindb.sql
impdp PARFILE=options_imp_pindb.par
echo "--------------------------------------------------------------------------------------------------- IFW"
sqlplus "system/oracle as sysdba" @drop_ifw.sql
sqlplus "system/oracle as sysdba" @create_ifw.sql
sqlplus "system/oracle as sysdba" @create_ifw_roles.sql
impdp PARFILE=options_imp_ifw.par
echo "--------------------------------------------------------------------------------------------------- JSA"
sqlplus "system/oracle as sysdba" @drop_jsa.sql
sqlplus "system/oracle as sysdba" @create_jsa.sql
sqlplus "system/oracle as sysdba" @create_jsa_roles.sql
impdp PARFILE=options_imp_jsa.par
echo "--------------------------------------------------------------------------------------------------- quick test"
echo 'select count(*) from account_t;' | sqlplus "pindev3/pindev3"
echo 'select count(*) from ifw_discountmodel;' | sqlplus "ifwdev3/ifwdev3"
echo 'select count(*) from jsa_user;' | sqlplus "jsadev3/jsadev3"
echo ">>>>>---------------------------------------------------------------------------------------------- /home/oracle/tmp/pin_import.log"
grep "ORA-" /home/oracle/tmp/pin_import.log
echo ""
echo ">>>>>---------------------------------------------------------------------------------------------- /home/oracle/tmp/ifw_import.log"
grep "ORA-" /home/oracle/tmp/ifw_import.log
echo ""
echo ">>>>>---------------------------------------------------------------------------------------------- /home/oracle/tmp/jsa_import.log"
grep "ORA-" /home/oracle/tmp/jsa_import.log
echo ""
echo ""
echo "END========================================================================================================"
chmod +x ./import_brm_schemas.sh
./import_brm_schemas.sh
This marks the end of our cloning blog series. If you are interested an even faster, less manual way to clone a BRM environment, we have an automated “push-button” solution that might help your needs. Contact info@ssglimited.com for more information!