Haven't tried this but may be worth testing. You can do import with exclude=index and then second import only for indexes with remap tablespace. - Mayen On Mar 3, 2015, at 4:03 AM, John Dunn <JDunn@xxxxxxxxx<mailto:JDunn@xxxxxxxxx>> wrote: Thanks for all your suggestions. I think what I will do is use alter index to move the indexes after the import. Seems simpler! Thanks again John From: Alexey B. Danchenkov [mailto:dabron@xxxxxxxxxxx] Sent: 02 March 2015 19:05 To: Kim Berg Hansen; John Dunn Cc: oracle-l@xxxxxxxxxxxxx<mailto:oracle-l@xxxxxxxxxxxxx> Subject: RE: Relocate indexes during datapump import Actually, that is the reason why I have advised Jogn about using Data Pump API for this purpose ;) ________________________________ Date: Mon, 2 Mar 2015 19:53:51 +0100 Subject: Re: Relocate indexes during datapump import From: kibeha@xxxxxxxxx<mailto:kibeha@xxxxxxxxx> To: JDunn@xxxxxxxxx<mailto:JDunn@xxxxxxxxx> CC: dabron@xxxxxxxxxxx<mailto:dabron@xxxxxxxxxxx>; oracle-l@xxxxxxxxxxxxx<mailto:oracle-l@xxxxxxxxxxxxx> Interesting difference (maybe) between command line impdp and dbms_datapump. Take a look at TRANSFORM: DBMS_DATAPUMP.METADATA_TRANSFORM ( handle IN NUMBER, name IN VARCHAR2, value IN VARCHAR2, object_type IN VARCHAR2 DEFAULT NULL); Command line version for impdp: TRANSFORM = transform_name:value[:object_type] The command line has the optional object_type corresponding to the optional function parameter. Now look at REMAP: DBMS_DATAPUMP.METADATA_REMAP ( handle IN NUMBER, name IN VARCHAR2, old_value IN VARCHAR2, value IN VARCHAR2, object_type IN VARCHAR2 DEFAULT NULL); The function has the same optional object_type as TRANSFORM, but that does not exist in command line: REMAP_TABLESPACE=source_tablespace:target_tablespace It may not be quite comparable, as function METADATA_REMAP handles the functionality of several METADATA_* parameters of impdp. But still a bit funny that the functionality of remapping tablespaces for a specific object type seems to be available in datapump, but only when using the API and not the command line? You might just for fun try in a test environment to do REMAP_TABLESPACE=from_tablespace:to_tablespace:INDEX and see if it works even if undocumented ;-) (Don't get your hopes high - it's a long shot...) Alternatively consider if you can use the DBMS_DATAPUMP api? If you need it to be scriptable, couldn't you as alternative to scripting a call to impdp, instead script a call to sqlplus executing a DBMS_DATAPUMP anonymous block? That would give you the option to use all of the functionality of the API. If that's not an option for some reason, I guess the alternative would be two impdp jobs - one that uses EXCLUDE=index without remap tablespace and then one that uses INCLUDE=index and has REMAP_TABLESPACE. Regards Kim Berg Hansen http://dspsd.blogspot.com kibeha@xxxxxxxxx<mailto:kibeha@xxxxxxxxx> @kibeha On Mon, Mar 2, 2015 at 4:17 PM, John Dunn <JDunn@xxxxxxxxx<mailto:JDunn@xxxxxxxxx>> wrote: Thanks for the quick response. Can I do the same using the command line impdp command? I am struggling to find an example of that. John From: Alexey B. Danchenkov [mailto:dabron@xxxxxxxxxxx<mailto:dabron@xxxxxxxxxxx>] Sent: 02 March 2015 14:17 To: John Dunn; oracle-l@xxxxxxxxxxxxx<mailto:oracle-l@xxxxxxxxxxxxx> Subject: RE: Relocate indexes during datapump import Hi John, Yes, it is possible to relocate indexes separately to a different tablespace using Data Pump. For example, you can use a PL/SQL code which uses Data Pump API. This sample code moves only indexes from OLDTABLESPACE' to NEWTABLESPACE: DECLARE hd NUMBER; BEGIN hd := DBMS_DATAPUMP.OPEN(operation => 'IMPORT',job_mode => 'FULL',remote_link => NULL,job_name => 'DDD',version => 'COMPATIBLE' ); DBMS_DATAPUMP.ADD_FILE( handle => hd, filename => 'dumpfile.dmp', directory => 'EXPDIR', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE ); DBMS_DATAPUMP.ADD_FILE( handle => hd, filename => 'logfile.log', directory => 'EXPDIR', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE ); DBMS_DATAPUMP.SET_PARAMETER( handle => hd, name => 'REUSE_DATAFILES', value => 0 ); DBMS_DATAPUMP.SET_PARAMETER( handle => hd, name => 'SKIP_UNUSABLE_INDEXES', value => 0 ); DBMS_DATAPUMP.METADATA_REMAP ( handle => hd, name => 'REMAP_TABLESPACE', old_value => 'OLDTABLESPACE', value => 'NEWTABLESPACE', object_type => 'INDEX' ); DBMS_DATAPUMP.SET_PARAMETER( handle => hd, name => 'TABLE_EXISTS_ACTION', value => 'SKIP' ); DBMS_DATAPUMP.START_JOB(handle => hd); END; / cheers, Alexey Danchenkov ________________________________ From: JDunn@xxxxxxxxx<mailto:JDunn@xxxxxxxxx> To: oracle-l@xxxxxxxxxxxxx<mailto:oracle-l@xxxxxxxxxxxxx> Subject: Relocate indexes during datapump import Date: Mon, 2 Mar 2015 14:04:38 +0000 During a datapump import is it possible to relocate indexes to a separate tablespace? Or I do I need to do that before doing the original export? John