Extract Index DDL from expdp

I recently wanted to drop the indexes during a load and recreate after.

There are several ways to do that, but this time since I had a schema export taken I wanted to extract from the dump file.

Here are the scripts files:

JDEPROD@proa1-/cloudfs/DBA/scripts$ cat expdp_JDE8_schemas.sh
export NOW=$(date +"%F_%H%M%S")
export ORACLE_SID=JDEPROD
export ORAENV_ASK=NO
. oraenv

echo "ORACLE HOME is: "$ORACLE_HOME
mv /cloudfs/DBA/scripts/JDE82_schemas_exp_*.* /cloudfs/DBA/scripts/old_dump

$ORACLE_HOME/bin/expdp \'/ as sysdba\' \
schemas=JDE,PRODDTA,PRODCTL,PD920 \
directory=DATA_PUMP_DIR \
CONTENT=METADATA_ONLY \
dumpfile=JDE82_schemas_exp_$NOW.dmp \
logfile=JDE82_schemas_exp_$NOW.log

mv /u01/app/oracle/admin/JDEPROD/dpdump/JDE82_schemas_exp_$NOW.* /cloudfs/DBA/scripts


$ cat 2_impdp_index_only.sh
export NOW=$(date +"%F_%H%M%S")
export ORACLE_SID=JDEPROD
export ORAENV_ASK=NO
. oraenv

echo "ORACLE HOME is: "$ORACLE_HOME

$ORACLE_HOME/bin/impdp \'/ as sysdba\' \
schemas=PRODCTL,PRODDTA \
directory=EXP_DIR \
CONTENT=METADATA_ONLY \
INCLUDE="INDEX" \
sqlfile=7_create_indexes.sql \
dumpfile=JDE82_schemas_exp_2017-07-06_122035.dmp \
logfile=JDE82_schemas_exp.log
JDEPROD@droa1-/cloudfs/DBA/scripts

Output in the 7_create_indexes.sql file:

$ cat 7_create_indexes.sql | more
-- CONNECT SYS
ALTER SESSION SET EVENTS '10150 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10904 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '25475 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10407 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '10851 TRACE NAME CONTEXT FOREVER, LEVEL 1';
ALTER SESSION SET EVENTS '22830 TRACE NAME CONTEXT FOREVER, LEVEL 192 ';
-- new object type path: SCHEMA_EXPORT/TABLE/INDEX/INDEX
-- CONNECT PRODDTA
CREATE UNIQUE INDEX "PRODDTA"."F0000194_0" ON "PRODDTA"."F0000194" ("SYEDUS", "SYEDBT", "SYEDTN", "SYEDLN")
PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE( PCTINCREASE 0)
TABLESPACE "PRODDTAI" PARALLEL 4 ;

ALTER INDEX "PRODDTA"."F0000194_0" NOPARALLEL;
CREATE UNIQUE INDEX "PRODDTA"."F00022_0" ON "PRODDTA"."F00022" ("UKOBNM")
PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE( PCTINCREASE 0)
TABLESPACE "PRODDTAI" PARALLEL 4 ;

ALTER INDEX "PRODDTA"."F00022_0" NOPARALLEL;
CREATE UNIQUE INDEX "PRODDTA"."F00023_0" ON "PRODDTA"."F00023" ("DNCTID", "DNSY", "DNORNN", "DNKCO", "DNDCT", "DNCTRY", "DNFY", "DNOBNM")
PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE( PCTINCREASE 0)
TABLESPACE "PRODDTAI" PARALLEL 4 ;

...

..





Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.