190 lines
4.8 KiB
Markdown
Executable File
190 lines
4.8 KiB
Markdown
Executable File
>Note based on [Data Pump API for PL/SQL (DBMS_DATAPUMP)](https://oracle-base.com/articles/misc/data-pump-api#schema-import)
|
|
>
|
|
# Import
|
|
## Schema import
|
|
`impdp` command line
|
|
```bash
|
|
impdp userid=superhero/***** \
|
|
dumpfile=MYDUMP:EMUSER.dmp logfile=MYDUMP:impo1.log \
|
|
remap_schema=EMUSER:APP_USER \
|
|
remap_tablespace=EM_DATA:APP_TS
|
|
```
|
|
|
|
`PL/SQL` block
|
|
```sql
|
|
declare
|
|
l_dp_handle number;
|
|
begin
|
|
-- Open a schema import job.
|
|
l_dp_handle := dbms_datapump.open(
|
|
operation => 'IMPORT',
|
|
job_mode => 'SCHEMA',
|
|
remote_link => NULL,
|
|
job_name => 'EMUSER_IMPORT',
|
|
version => 'LATEST');
|
|
|
|
-- Specify the schema to be imported.
|
|
dbms_datapump.metadata_filter(
|
|
handle => l_dp_handle,
|
|
name => 'SCHEMA_EXPR',
|
|
value => '= ''EMUSER''');
|
|
|
|
-- Specify the dump file name and directory object name.
|
|
dbms_datapump.add_file(
|
|
handle => l_dp_handle,
|
|
filename => 'EMUSER.dmp',
|
|
directory => 'MYDUMP');
|
|
|
|
-- Specify the log file name and directory object name.
|
|
dbms_datapump.add_file(
|
|
handle => l_dp_handle,
|
|
filename => 'impo1.log,
|
|
directory => 'MYDUMP',
|
|
filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);
|
|
|
|
-- Perform a REMAP_SCHEMA
|
|
dbms_datapump.metadata_remap(
|
|
handle => l_dp_handle,
|
|
name => 'REMAP_SCHEMA',
|
|
old_value => 'EMUSER',
|
|
value => 'APP_USER');
|
|
|
|
-- Perform a REMAP_TABLESPACE
|
|
dbms_datapump.metadata_remap(
|
|
handle => l_dp_handle,
|
|
name => 'REMAP_TABLESPACE',
|
|
old_value => 'EM_DATA',
|
|
value => 'APP_TS');
|
|
|
|
dbms_datapump.start_job(l_dp_handle);
|
|
|
|
dbms_datapump.detach(l_dp_handle);
|
|
end;
|
|
/
|
|
```
|
|
|
|
## Multiple schema import
|
|
`impdp` command line
|
|
```bash
|
|
impdp userid=superhero/***** \
|
|
dumpfile=MYDUMP:GREEDOPRD_%U.dmp logfile=MYDUMP:impo.log \
|
|
schemas=APP_USER,REPO_USER\
|
|
remap_schema=APP_USER:ALPHA,REPO_USER:OMEGA \
|
|
remap_tablespace=APP_TS:TS_ALPHA,REPO_TS:TS_OMEGA
|
|
```
|
|
|
|
`PL/SQL` block
|
|
```sql
|
|
declare
|
|
l_dp_handle number;
|
|
begin
|
|
-- Open a schema import job.
|
|
l_dp_handle := dbms_datapump.open(
|
|
operation => 'IMPORT',
|
|
job_mode => 'SCHEMA',
|
|
remote_link => NULL,
|
|
job_name => 'MULTIPLE_SCHEMAS_IMPORT',
|
|
version => 'LATEST');
|
|
|
|
-- Specify the schema to be imported.
|
|
dbms_datapump.metadata_filter(
|
|
handle => l_dp_handle,
|
|
name => 'SCHEMA_EXPR',
|
|
value => 'in (''APP_USER'',''REPO_USER'')');
|
|
|
|
-- Specify the dump file name and directory object name.
|
|
dbms_datapump.add_file(
|
|
handle => l_dp_handle,
|
|
filename => 'GREEDOPRD_%U.dmp',
|
|
directory => 'MYDUMP');
|
|
|
|
-- Specify the log file name and directory object name.
|
|
dbms_datapump.add_file(
|
|
handle => l_dp_handle,
|
|
filename => 'impo.log',
|
|
directory => 'MYDUMP',
|
|
filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);
|
|
|
|
-- Perform a REMAP_SCHEMA
|
|
dbms_datapump.metadata_remap(
|
|
handle => l_dp_handle,
|
|
name => 'REMAP_SCHEMA',
|
|
old_value => 'APP_USER',
|
|
value => 'ALPHA');
|
|
|
|
dbms_datapump.metadata_remap(
|
|
handle => l_dp_handle,
|
|
name => 'REMAP_SCHEMA',
|
|
old_value => 'REPO_USER',
|
|
value => 'OMEGA');
|
|
|
|
|
|
-- Perform a REMAP_TABLESPACE
|
|
dbms_datapump.metadata_remap(
|
|
handle => l_dp_handle,
|
|
name => 'REMAP_TABLESPACE',
|
|
old_value => 'APP_TS',
|
|
value => 'TS_ALPHA');
|
|
|
|
dbms_datapump.metadata_remap(
|
|
handle => l_dp_handle,
|
|
name => 'REMAP_TABLESPACE',
|
|
old_value => 'REPO_TS',
|
|
value => 'TS_OMEGA');
|
|
|
|
dbms_datapump.set_parallel(l_dp_handle,2);
|
|
|
|
dbms_datapump.start_job(l_dp_handle);
|
|
|
|
dbms_datapump.detach(l_dp_handle);
|
|
end;
|
|
/
|
|
```
|
|
|
|
# Export
|
|
## FULL database export
|
|
`expdp` command line
|
|
```bash
|
|
expdp userid=superhero/***** \
|
|
dumpfile=MYDUMP:GREEDOPRD_%U.dmp logfile=MYDUMP:GREEDOPRD.log \
|
|
full=Y \
|
|
flashback_time=systimestamp \
|
|
parallel=2
|
|
```
|
|
|
|
`PL/SQL` block
|
|
```sql
|
|
declare
|
|
l_dp_handle number;
|
|
begin
|
|
-- Open a full export job.
|
|
l_dp_handle := dbms_datapump.open(
|
|
operation => 'EXPORT',
|
|
job_mode => 'FULL',
|
|
remote_link => NULL,
|
|
job_name => 'GREEDOPRD_FULL_EXP',
|
|
version => 'LATEST');
|
|
|
|
-- Specify the dump file name and directory object name.
|
|
dbms_datapump.add_file(
|
|
handle => l_dp_handle,
|
|
filename => 'GREEDOPRD_%U.dmp',
|
|
directory => 'MYDUMP');
|
|
|
|
-- Specify the log file name and directory object name.
|
|
dbms_datapump.add_file(
|
|
handle => l_dp_handle,
|
|
filename => 'GREEDOPRD.log',
|
|
directory => 'MYDUMP',
|
|
filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);
|
|
|
|
dbms_datapump.set_parameter(l_dp_handle,'CLIENT_COMMAND','Full Consistent Data Pump Export with PARALLEL 2');
|
|
dbms_datapump.set_parameter(l_dp_handle,'FLASHBACK_TIME','SYSTIMESTAMP');
|
|
dbms_datapump.set_parallel(l_dp_handle,2);
|
|
|
|
dbms_datapump.start_job(l_dp_handle);
|
|
|
|
dbms_datapump.detach(l_dp_handle);
|
|
end;
|
|
/
|
|
``` |