概要:
因项目需要,通常需要将生产库下的部分数据抽取并恢复到测试库上
本文主要介绍数据泵导入导出的几种情况以及错误处理
案例环境:
rhel-server-6.5-x86_64
oracle 11.2.0.4.0
一、数据泵导出
a、按用户导出
b、按表导出
b1、全表导出
b2、按查询条件导出表
二、数据泵导入c、按表空间导出
a、导入到具体用户
a1、按用户导入,不改变schema
a2、按用户导入,改变schema
b、导入表
b1、导入表,不改变schema
b2、导入表,改变schema
c、导入表空间
源数据库:
1、首先查看数据泵目录
- SQL> set lines 200
- SQL> col DIRECTORY_PATH for a80
- SQL> select * from dba_directories;
- OWNER DIRECTORY_NAME DIRECTORY_PATH
- ------------------------------ ------------------------------ --------------------------------------------------------------------------------
- SYS SUBDIR /u01/app/oracle/product/11204/db/demo/schema/order_entry//2002/Sep
- SYS SS_OE_XMLDIR /u01/app/oracle/product/11204/db/demo/schema/order_entry/
- SYS LOG_FILE_DIR /u01/app/oracle/product/11204/db/demo/schema/log/
- SYS MEDIA_DIR /u01/app/oracle/product/11204/db/demo/schema/product_media/
- SYS DATA_FILE_DIR /u01/app/oracle/product/11204/db/demo/schema/sales_history/
- SYS XMLDIR /u01/app/oracle/product/11204/db/rdbms/xml
- SYS ORACLE_OCM_CONFIG_DIR /u01/app/oracle/product/11204/db/ccr/hosts/localhost.localdomain/state
- SYS DATA_PUMP_DIR /u01/app/oracle/admin/orcl/dpdump/
- SYS ORACLE_OCM_CONFIG_DIR2 /u01/app/oracle/product/11204/db/ccr/state
- 9 rows selected.
- SQL>
此处,我们数据泵目录选用DATA_PUMP_DIR ,其对应的目录路径为 /u01/app/oracle/admin/orcl/dpdump/ 当然此处也可以新建数据泵的directory,命令如下:
- SQL> create directory dump_test as'/dump/test';
- Directory created.
2、赋权限(数据泵导入导出时的执行用户 对上面选用的数据泵目录要有读写权限)
- SQL> grant read,write on directory DATA_PUMP_DIR to hr;
- Grant succeeded.
3、数据泵导出
3.1>按用户导出
a>首先查看需要导出的用户所在的表空间,以及该用户下的表在初始化时占用表空间的大小(换算为MB)此处以HR用户为例:
- SQL> SELECT ds.tablespace_name,
- 2 SUM(ds.initial_extent) / 1024 / 1024 as initial_extent
- 3 FROM DBA_SEGMENTS ds
- 4 WHERE ds.owner IN ( --查看账户状态为open的用户HR
- 5 SELECT du.username
- 6 FROM DBA_USERS du
- 7 WHERE du.account_status = 'OPEN'
- 8 and du.username = 'HR')
- 9 GROUP BY ds.tablespace_name
- 10 ORDER BY initial_extent desc;
- TABLESPACE_NAME INITIAL_EXTENT
- ------------------------------ --------------
- EXAMPLE 1.5625
- USERS .0625
- SQL>
b>在表空间数量较多的情况下,可以用以下语句查看表在初始化时占用表空间的总大小:
- SQL> SELECT SUM(ds.initial_extent) / 1024 / 1024 as initial_extent
- 2 FROM DBA_SEGMENTS ds
- 3 WHERE ds.owner IN ( --查看账户状态为open的用户HR
- 4 SELECT du.username
- 5 FROM DBA_USERS du
- 6 WHERE du.account_status = 'OPEN'
- 7 and du.username = 'HR');
- INITIAL_EXTENT
- --------------
- 1.625
- SQL>
c>查看表空间对应的数据文件大小上面a、b、c三个步骤查到的结果,在目标库规划存储空间大小和建表空间初始大小时作为参考条件。
- SQL> set lines 200
- SQL> col FILE_NAME for a50
- SQL> col TOTAL_SPACE for a20
- SQL> select tablespace_name, file_id, file_name,
- 2 round(bytes/(1024*1024),0)||' MB' total_space,AUTOEXTENSIBLE
- 3 from dba_data_files
- 4 order by tablespace_name;
- TABLESPACE_NAME FILE_ID FILE_NAME TOTAL_SPACE AUT
- ------------------------------ ---------- -------------------------------------------------- -------------------- ---
- EXAMPLE 5 /oradata/orcl/example01.dbf 313 MB YES
- SYSAUX 2 /oradata/orcl/sysaux01.dbf 520 MB YES
- SYSTEM 1 /oradata/orcl/system01.dbf 750 MB YES
- TEST_TBS 6 /oradata/orcl/test_tbs.dbf 30 MB YES
- UNDOTBS1 3 /oradata/orcl/undotbs01.dbf 90 MB YES
- USERS 4 /oradata/orcl/users01.dbf 5 MB YES
- 6 rows selected.
- SQL>
d> expdp按用户导出(schemas=hr)
结果如下:
- $ expdp hr/hr directory=DATA_PUMP_DIR dumpfile=hr.dmp logfile=hr.log schemas=hr
- Export: Release 11.2.0.4.0 - Production on Sun Jul 3 21:38:06 2016
- Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
- Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Starting "HR"."SYS_EXPORT_SCHEMA_01": hr/******** directory=DATA_PUMP_DIR dumpfile=hr.dmp logfile=hr.log schemas=hr
- Estimate in progress using BLOCKS method...
- Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
- Total estimation using BLOCKS method: 448 KB
- Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
- Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
- Processing object type SCHEMA_EXPORT/TABLE/TABLE
- Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
- Processing object type SCHEMA_EXPORT/TABLE/COMMENT
- Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
- Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
- Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
- Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
- Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
- Processing object type SCHEMA_EXPORT/VIEW/VIEW
- Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
- Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
- Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
- . . exported "HR"."COUNTRIES" 6.367 KB 25 rows
- . . exported "HR"."DEPARTMENTS" 7.007 KB 27 rows
- . . exported "HR"."EMPLOYEES" 16.80 KB 107 rows
- . . exported "HR"."JOBS" 6.992 KB 19 rows
- . . exported "HR"."JOB_HISTORY" 7.054 KB 10 rows
- . . exported "HR"."LOCATIONS" 8.273 KB 23 rows
- . . exported "HR"."REGIONS" 5.476 KB 4 rows
- Master table "HR"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
- ******************************************************************************
- Dump file set for HR.SYS_EXPORT_SCHEMA_01 is:
- /u01/app/oracle/admin/orcl/dpdump/hr.dmp
- Job "HR"."SYS_EXPORT_SCHEMA_01" successfully completed at Sun Jul 3 21:39:19 2016 elapsed 0 00:01:09
3.2>按表导出
3.2.1>全表导出
结果如下:
- expdp hr/hr directory=DATA_PUMP_DIR dumpfile=tab.dmp logfile=tab.log tables=hr.employees,hr.departments
- Export: Release 11.2.0.4.0 - Production on Sun Jul 3 21:51:45 2016
- Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
- Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Starting "HR"."SYS_EXPORT_TABLE_01": hr/******** directory=DATA_PUMP_DIR dumpfile=tab.dmp logfile=tab.log tables=hr.employees,hr.departments
- Estimate in progress using BLOCKS method...
- Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
- Total estimation using BLOCKS method: 128 KB
- Processing object type TABLE_EXPORT/TABLE/TABLE
- Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
- Processing object type TABLE_EXPORT/TABLE/COMMENT
- Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
- Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
- Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
- Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
- Processing object type TABLE_EXPORT/TABLE/TRIGGER
- Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
- . . exported "HR"."DEPARTMENTS" 7.007 KB 27 rows
- . . exported "HR"."EMPLOYEES" 16.80 KB 107 rows
- Master table "HR"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
- ******************************************************************************
- Dump file set for HR.SYS_EXPORT_TABLE_01 is:
- /u01/app/oracle/admin/orcl/dpdump/tab.dmp
- Job "HR"."SYS_EXPORT_TABLE_01" successfully completed at Sun Jul 3 21:52:05 2016 elapsed 0 00:00:17
3.2.2>按查询条件导出表
结果如下:
- $ expdp hr/hr directory=DATA_PUMP_DIR dumpfile=condition.dmp logfile=condition.log tables=hr.employees query=\' WHERE DEPARTMENT_ID\=\10\'
- Export: Release 11.2.0.4.0 - Production on Sun Jul 3 22:06:09 2016
- Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
- Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Starting "HR"."SYS_EXPORT_TABLE_01": hr/******** directory=DATA_PUMP_DIR dumpfile=condition.dmp logfile=condition.log tables=hr.employees query=' WHERE DEPARTMENT_ID=10'
- Estimate in progress using BLOCKS method...
- Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
- Total estimation using BLOCKS method: 64 KB
- Processing object type TABLE_EXPORT/TABLE/TABLE
- Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
- Processing object type TABLE_EXPORT/TABLE/COMMENT
- Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
- Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
- Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
- Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
- Processing object type TABLE_EXPORT/TABLE/TRIGGER
- Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
- . . exported "HR"."EMPLOYEES" 9.320 KB 1 rows
- Master table "HR"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
- ******************************************************************************
- Dump file set for HR.SYS_EXPORT_TABLE_01 is:
- /u01/app/oracle/admin/orcl/dpdump/condition.dmp
- Job "HR"."SYS_EXPORT_TABLE_01" successfully completed at Sun Jul 3 22:06:25 2016 elapsed 0 00:00:14
3.4>按表空间导出
以example表空间为例
结果如下:
- expdp hr/hr directory=DATA_PUMP_DIR dumpfile=tablespace.dmp logfile=tablespace.log TABLESPACES=example;
- Export: Release 11.2.0.4.0 - Production on Sun Jul 3 22:14:26 2016
- Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
- Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Starting "HR"."SYS_EXPORT_TABLESPACE_01": hr/******** directory=DATA_PUMP_DIR dumpfile=tablespace.dmp logfile=tablespace.log TABLESPACES=example
- Estimate in progress using BLOCKS method...
- Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
- Total estimation using BLOCKS method: 448 KB
- Processing object type TABLE_EXPORT/TABLE/TABLE
- Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
- Processing object type TABLE_EXPORT/TABLE/COMMENT
- Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
- Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
- Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
- Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
- Processing object type TABLE_EXPORT/TABLE/TRIGGER
- Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
- . . exported "HR"."COUNTRIES" 6.367 KB 25 rows
- . . exported "HR"."DEPARTMENTS" 7.007 KB 27 rows
- . . exported "HR"."EMPLOYEES" 16.80 KB 107 rows
- . . exported "HR"."JOBS" 6.992 KB 19 rows
- . . exported "HR"."JOB_HISTORY" 7.054 KB 10 rows
- . . exported "HR"."LOCATIONS" 8.273 KB 23 rows
- . . exported "HR"."REGIONS" 5.476 KB 4 rows
- Master table "HR"."SYS_EXPORT_TABLESPACE_01" successfully loaded/unloaded
- ******************************************************************************
- Dump file set for HR.SYS_EXPORT_TABLESPACE_01 is:
- /u01/app/oracle/admin/orcl/dpdump/tablespace.dmp
- Job "HR"."SYS_EXPORT_TABLESPACE_01" successfully completed at Sun Jul 3 22:15:04 2016 elapsed 0 00:00:36
4、将源数据库出的文件传到目标数据库
4.1>首先查看目标端据库的数据泵目录
- SQL> set lines 200
- SQL> col DIRECTORY_PATH for a80
- SQL> select * from dba_directories;
- OWNER DIRECTORY_NAME DIRECTORY_PATH
- ------------------------------ ------------------------------ --------------------------------------------------------------------------------
- SYS XMLDIR /u01/app/oracle/product/11204/db/rdbms/xml
- SYS ORACLE_OCM_CONFIG_DIR /u01/app/oracle/product/11204/db/ccr/hosts/ggs2/state
- SYS DATA_PUMP_DIR /u01/app/oracle/admin/hankey/dpdump/
- SYS ORACLE_OCM_CONFIG_DIR2 /u01/app/oracle/product/11204/db/ccr/state
- SQL>
4.2>在源端,通过scp命令或者其他工具传送文件到目标端,此处使用scp命令
- $ pwd
- /u01/app/oracle/admin/orcl/dpdump
- $ ls
- condition.dmp condition.log export.log full.dmp full.log hr.dmp hr.log tab.dmp tablespace.dmp tablespace.log tab.log
- $ scp * 10.10.10.10:/u01/app/oracle/admin/hankey/dpdump/
- The authenticity of host '10.10.10.10 (10.10.10.10)' can't be established.
- RSA key fingerprint is 42:41:f4:75:62:6d:17:2c:e8:79:c1:05:97:82:41:7b.
- Are you sure you want to continue connecting (yes/no)? yes
- Warning: Permanently added '10.10.10.10' (RSA) to the list of known hosts.
- oracle@10.10.10.10's password:
- condition.dmp 100% 176KB 176.0KB/s 00:00
- condition.log 100% 1613 1.6KB/s 00:00
- export.log 100% 2056 2.0KB/s 00:00
- full.dmp 100% 151MB 21.6MB/s 00:07
- full.log 100% 105KB 104.5KB/s 00:00
- hr.dmp 100% 488KB 488.0KB/s 00:00
- hr.log 100% 2325 2.3KB/s 00:00
- tab.dmp 100% 224KB 224.0KB/s 00:00
- tablespace.dmp 100% 404KB 404.0KB/s 00:00
- tablespace.log 100% 2079 2.0KB/s 00:00
- tab.log 100% 1658 1.6KB/s 00:00
- $
目标端(实例名为hankey)
5、进入目标端的数据泵目录,切换用户到root,查看文件并修改权限和目标端数据库一致
6、查看需要目标数据库存在的表空间
- $ su - root
- Password:
- # cd /u01/app/oracle/admin/hankey/dpdump
- # chown oracle:oinstall *
- # ls -la
- total 156580
- drwxr-x---. 2 oracle oinstall 4096 Jul 4 01:00 .
- drwxr-x---. 5 oracle oinstall 4096 Jun 19 20:26 ..
- -rw-r-----. 1 oracle oinstall 180224 Jul 4 01:00 condition.dmp
- -rw-r--r--. 1 oracle oinstall 1613 Jul 4 01:00 condition.log
- -rw-r-----. 1 oracle oinstall 116 Jun 19 20:39 dp.log
- -rw-r--r--. 1 oracle oinstall 2056 Jul 4 01:00 export.log
- -rw-r-----. 1 oracle oinstall 158691328 Jul 4 01:00 full.dmp
- -rw-r--r--. 1 oracle oinstall 107013 Jul 4 01:00 full.log
- -rw-r-----. 1 oracle oinstall 499712 Jul 4 01:00 hr.dmp
- -rw-r--r--. 1 oracle oinstall 2325 Jul 4 01:00 hr.log
- -rw-r-----. 1 oracle oinstall 229376 Jul 4 01:00 tab.dmp
- -rw-r-----. 1 oracle oinstall 413696 Jul 4 01:00 tablespace.dmp
- -rw-r--r--. 1 oracle oinstall 2079 Jul 4 01:00 tablespace.log
- -rw-r--r--. 1 oracle oinstall 1658 Jul 4 01:00 tab.log
- #
- SQL> select name from v$tablespace;
- NAME
- ------------------------------
- SYSTEM
- SYSAUX
- UNDOTBS1
- TEMP
- USERS
参考步骤3.1对比源数据库和目标数据库表空间差异,发现,目标端无EXAMPLE,所以在目标端创建EXAMPL 表空间 ,
参考源数据库估算,这里初始大小设置为300M,允许扩展数据文件,在需要扩展时,则分配给数据文件的下一个磁盘空间量的大小为50M
- SQL> create tablespace EXAMPLE
- 2 datafile '/oradata/hankey/example01.dbf' size 300M
- 3 autoextend on next 50M;
- Tablespace created.
- SQL>
附:若创建不合适,需要删除表空间的话,执行以下语句,然后重新创建即可。
- SQL> drop tablespace example including contents and datafiles cascade constraints;
7、数据泵导入
7.1>导入到具体用户
7.1.1>按用户导入,不改变schema
对应步骤3.1按用户导出的文件
首先创建需要导入的用户hr
执行导入命令
- SQL> create user hr identified by hr;
- User created.
- SQL> grant connect,resource to hr;
- Grant succeeded.
结果如下:
- $ impdp \'/ as sysdba\' directory=DATA_PUMP_DIR dumpfile=hr.dmp logfile=imhr.log SCHEMAS=hr;
- Import: Release 11.2.0.4.0 - Production on Mon Jul 4 21:00:46 2016
- Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
- Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Master table "SYS"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
- Starting "SYS"."SYS_IMPORT_SCHEMA_01": "/******** AS SYSDBA" directory=DATA_PUMP_DIR dumpfile=hr.dmp logfile=imhr.log SCHEMAS=hr
- Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
- Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
- Processing object type SCHEMA_EXPORT/TABLE/TABLE
- Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
- . . imported "HR"."COUNTRIES" 6.367 KB 25 rows
- . . imported "HR"."DEPARTMENTS" 7.007 KB 27 rows
- . . imported "HR"."EMPLOYEES" 16.80 KB 107 rows
- . . imported "HR"."JOBS" 6.992 KB 19 rows
- . . imported "HR"."JOB_HISTORY" 7.054 KB 10 rows
- . . imported "HR"."LOCATIONS" 8.273 KB 23 rows
- . . imported "HR"."REGIONS" 5.476 KB 4 rows
- Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
- ORA-39083: Object type OBJECT_GRANT failed to create with error:
- ORA-01917: user or role 'OE' does not exist
- Failing sql is:
- GRANT REFERENCES ON "HR"."COUNTRIES" TO "OE"
- ORA-39083: Object type OBJECT_GRANT failed to create with error:
- ORA-01917: user or role 'OE' does not exist
- Failing sql is:
- GRANT SELECT ON "HR"."COUNTRIES" TO "OE"
- ORA-39083: Object type OBJECT_GRANT failed to create with error:
- ORA-01917: user or role 'OE' does not exist
- Failing sql is:
- GRANT SELECT ON "HR"."JOB_HISTORY" TO "OE"
- ORA-39083: Object type OBJECT_GRANT failed to create with error:
- ORA-01917: user or role 'OE' does not exist
- Failing sql is:
- GRANT REFERENCES ON "HR"."EMPLOYEES" TO "OE"
- ORA-39083: Object type OBJECT_GRANT failed to create with error:
- ORA-01917: user or role 'OE' does not exist
- Failing sql is:
- GRANT SELECT ON "HR"."EMPLOYEES" TO "OE"
- ORA-39083: Object type OBJECT_GRANT failed to create with error:
- ORA-01917: user or role 'OE' does not exist
- Failing sql is:
- GRANT SELECT ON "HR"."JOBS" TO "OE"
- ORA-39083: Object type OBJECT_GRANT failed to create with error:
- ORA-01917: user or role 'OE' does not exist
- Failing sql is:
- GRANT SELECT ON "HR"."LOCATIONS" TO "OE"
- ORA-39083: Object type OBJECT_GRANT failed to create with error:
- ORA-01917: user or role 'OE' does not exist
- Failing sql is:
- GRANT REFERENCES ON "HR"."LOCATIONS" TO "OE"
- ORA-39083: Object type OBJECT_GRANT failed to create with error:
- ORA-01917: user or role 'OE' does not exist
- Failing sql is:
- GRANT SELECT ON "HR"."DEPARTMENTS" TO "OE"
- Processing object type SCHEMA_EXPORT/TABLE/COMMENT
- Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
- ORA-31684: Object type PROCEDURE:"HR"."ADD_JOB_HISTORY" already exists
- ORA-31684: Object type PROCEDURE:"HR"."SECURE_DML" already exists
- Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
- Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
- Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
- Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
- Processing object type SCHEMA_EXPORT/VIEW/VIEW
- ORA-31684: Object type VIEW:"HR"."EMP_DETAILS_VIEW" already exists
- Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
- Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
- Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
- Job "SYS"."SYS_IMPORT_SCHEMA_01" completed with 15 error(s) at Mon Jul 4 21:00:55 2016 elapsed 0 00:00:07
发现有报错,从报错信息来看,是因为赋权限时找不到名为OE的用户,实际此时hr用户的数据已经完全导入,若就希望在执行时候不报错误,那么继续往下走
通过语句查看目标库确实无OE用户
- select username from dba_users;
所以,创建oe用户:
因上述导入报错,但实际hr用户数据已经导入,若要重新完全导入,首先删除hr用户。
- SQL> create user oe identified by oe;
- User created.
- SQL> grant connect,resource to oe;
- Grant succeeded.
- SQL>
重新创建用户
- SQL> drop user hr cascade;
重新执行导入语句:
- SQL> create user hr identified by hr;
- User created.
- SQL> grant connect,resource to hr;
- Grant succeeded.
- SQL>
结果如下:
- $ impdp \'/ as sysdba\' directory=DATA_PUMP_DIR dumpfile=hr.dmp logfile=imhr.log SCHEMAS=hr;
导入成功后,可自行连接hr用户验证核对源库和目标库的数据。
- Import: Release 11.2.0.4.0 - Production on Mon Jul 4 21:43:25 2016
- Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
- Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Master table "SYS"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
- Starting "SYS"."SYS_IMPORT_SCHEMA_01": "/******** AS SYSDBA" directory=DATA_PUMP_DIR dumpfile=hr.dmp logfile=imhr.log SCHEMAS=hr
- Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
- Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
- Processing object type SCHEMA_EXPORT/TABLE/TABLE
- Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
- . . imported "HR"."COUNTRIES" 6.367 KB 25 rows
- . . imported "HR"."DEPARTMENTS" 7.007 KB 27 rows
- . . imported "HR"."EMPLOYEES" 16.80 KB 107 rows
- . . imported "HR"."JOBS" 6.992 KB 19 rows
- . . imported "HR"."JOB_HISTORY" 7.054 KB 10 rows
- . . imported "HR"."LOCATIONS" 8.273 KB 23 rows
- . . imported "HR"."REGIONS" 5.476 KB 4 rows
- Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
- Processing object type SCHEMA_EXPORT/TABLE/COMMENT
- Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
- Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
- Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
- Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
- Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
- Processing object type SCHEMA_EXPORT/VIEW/VIEW
- Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
- Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
- Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
- Job "SYS"."SYS_IMPORT_SCHEMA_01" successfully completed at Mon Jul 4 21:43:33 2016 elapsed 0 00:00:06
7.1.2>按用户导入,改变schema
首先,目标端新建用户,如下,创建名为buzhengjing的用户
执行导入语句,注意REMAP_SCHEMA=hr:buzhengjing,参数中冒号的前半部分为源数据库的SCHEMA,后半部分为目标数据库要导入的SCHEMA,即新建的用户
- SQL> create user buzhengjing identified by buzhengjing;
- User created.
- SQL> grant connect,resource to buzhengjing;
- Grant succeeded.
- SQL>
执行结果如下
- $ impdp \'/ as sysdba\' directory=DATA_PUMP_DIR dumpfile=hr.dmp logfile=imbzj.log REMAP_SCHEMA=hr:buzhengjing
- Import: Release 11.2.0.4.0 - Production on Tue Jul 5 22:00:02 2016
- Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
- Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Master table "SYS"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
- Starting "SYS"."SYS_IMPORT_FULL_01": "/******** AS SYSDBA" directory=DATA_PUMP_DIR dumpfile=hr.dmp logfile=imbzj.log REMAP_SCHEMA=hr:buzhengjing
- Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
- Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
- Processing object type SCHEMA_EXPORT/TABLE/TABLE
- Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
- . . imported "BUZHENGJING"."COUNTRIES" 6.367 KB 25 rows
- . . imported "BUZHENGJING"."DEPARTMENTS" 7.007 KB 27 rows
- . . imported "BUZHENGJING"."EMPLOYEES" 16.80 KB 107 rows
- . . imported "BUZHENGJING"."JOBS" 6.992 KB 19 rows
- . . imported "BUZHENGJING"."JOB_HISTORY" 7.054 KB 10 rows
- . . imported "BUZHENGJING"."LOCATIONS" 8.273 KB 23 rows
- . . imported "BUZHENGJING"."REGIONS" 5.476 KB 4 rows
- Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
- Processing object type SCHEMA_EXPORT/TABLE/COMMENT
- Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
- Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
- Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
- Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
- Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
- Processing object type SCHEMA_EXPORT/VIEW/VIEW
- Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
- Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
- Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
- Job "SYS"."SYS_IMPORT_FULL_01" successfully completed at Tue Jul 5 22:02:08 2016 elapsed 0 00:00:06
7.2>导入表
用到步骤3.2按表导出的数据文件
7.2.1>导入表,不改变schema
导入表到同名用户下,由于上一步骤已导入数据,所以此处删除hr用户并重新创建。
- SQL> drop user hr cascade;
重新创建用户
- SQL> create user hr identified by hr;
- User created.
- SQL> grant connect,resource to hr;
- Grant succeeded.
- SQL>
执行导入命令
执行结果:
- $ impdp \'/ as sysdba\' directory=DATA_PUMP_DIR dumpfile=tab.dmp logfile=imtab.log
从报错信息看,是导入完数据后,创建外键约束和触发器失败。当然,数据已经完全导入。
- Import: Release 11.2.0.4.0 - Production on Mon Jul 4 22:16:03 2016
- Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
- Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Master table "SYS"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
- Starting "SYS"."SYS_IMPORT_FULL_01": "/******** AS SYSDBA" directory=DATA_PUMP_DIR dumpfile=tab.dmp logfile=imtab.log
- Processing object type TABLE_EXPORT/TABLE/TABLE
- Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
- . . imported "HR"."DEPARTMENTS" 7.007 KB 27 rows
- . . imported "HR"."EMPLOYEES" 16.80 KB 107 rows
- Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
- Processing object type TABLE_EXPORT/TABLE/COMMENT
- Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
- Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
- Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
- Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
- ORA-39083: Object type REF_CONSTRAINT failed to create with error:
- ORA-00942: table or view does not exist
- Failing sql is:
- ALTER TABLE "HR"."EMPLOYEES" ADD CONSTRAINT "EMP_JOB_FK" FOREIGN KEY ("JOB_ID") REFERENCES "HR"."JOBS" ("JOB_ID") ENABLE
- ORA-39083: Object type REF_CONSTRAINT failed to create with error:
- ORA-00942: table or view does not exist
- Failing sql is:
- ALTER TABLE "HR"."DEPARTMENTS" ADD CONSTRAINT "DEPT_LOC_FK" FOREIGN KEY ("LOCATION_ID") REFERENCES "HR"."LOCATIONS" ("LOCATION_ID") ENABLE
- Processing object type TABLE_EXPORT/TABLE/TRIGGER
- ORA-39082: Object type TRIGGER:"HR"."SECURE_EMPLOYEES" created with compilation warnings
- ORA-39082: Object type TRIGGER:"HR"."SECURE_EMPLOYEES" created with compilation warnings
- ORA-39082: Object type TRIGGER:"HR"."UPDATE_JOB_HISTORY" created with compilation warnings
- ORA-39082: Object type TRIGGER:"HR"."UPDATE_JOB_HISTORY" created with compilation warnings
- Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
- Job "SYS"."SYS_IMPORT_FULL_01" completed with 6 error(s) at Mon Jul 4 22:16:07 2016 elapsed 0 00:00:03
- SQL> select table_name from user_tables;
- TABLE_NAME
- ------------------------------
- DEPARTMENTS
- EMPLOYEES
- SQL> select count(*) from DEPARTMENTS;
- COUNT(*)
- ----------
- 27
- SQL> select count(*) from EMPLOYEES;
- COUNT(*)
- ----------
- 107
- SQL>
此错误可以忽略,但对于强迫症来说,哦,不,对于一个处事风格严谨的人来说,不容许有一个错误出现,才叫完美,那么,接着走。毫无疑问,上一步骤已导入数据,所以继续删除hr用户并重新创建。
- SQL> drop user hr cascade;
重新创建用户
若要不报错,可以在导出命令中加一个参数exclude,过滤掉constraint(约束)、TRIGGER(触发器)、grant(赋权限)
- SQL> create user hr identified by hr;
- User created.
- SQL> grant connect,resource to hr;
- Grant succeeded.
- SQL>
注意,因为导出的单个表,难免会存在和其他未导出的表存在关联的情况,而这种做法并不是将错误无视并跳过,因为这些对数据导入完整性没有影响,都是在导入完成后进行的。我们可以避免在导出过程中报错,然后根据需要手动建立constraint(约束)、TRIGGER(触发器)和grant(赋权限)等操作,而多数情况下,对于单个表,后续并不需要操作这些的。
执行导入命令
- $ impdp \'/ as sysdba\' directory=DATA_PUMP_DIR dumpfile=tab.dmp logfile=imtab.log tables=hr.employees,hr.departments exclude=constraint,trigger,grant
7.2.2> 导入表,改变schema
- Import: Release 11.2.0.4.0 - Production on Tue Jul 5 00:36:29 2016
- Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
- Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Master table "SYS"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded
- Starting "SYS"."SYS_IMPORT_TABLE_01": "/******** AS SYSDBA" directory=DATA_PUMP_DIR dumpfile=tab.dmp tables=hr.employees,hr.departments exclude=constraint,trigger,grant
- Processing object type TABLE_EXPORT/TABLE/TABLE
- Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
- . . imported "HR"."DEPARTMENTS" 7.007 KB 27 rows
- . . imported "HR"."EMPLOYEES" 16.80 KB 107 rows
- Processing object type TABLE_EXPORT/TABLE/COMMENT
- Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
- Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
- Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
- Job "SYS"."SYS_IMPORT_TABLE_01" successfully completed at Tue Jul 5 00:36:33 2016 elapsed 0 00:00:03
创建一个新的正经的用户zhengjing
执行导入命令,注意用参数REMAP_SCHEMA改变schema,参数exclude的使用同上一步骤
- SQL> create user zhengjing identified by zhengjing;
- User created.
- SQL> grant connect,resource to zhengjing;
- Grant succeeded.
- SQL>
- $ impdp \'/ as sysdba\' directory=DATA_PUMP_DIR dumpfile=tab.dmp logfile=imtab.log REMAP_SCHEMA=hr:zhengjing exclude=constraint,trigger,grant
- Import: Release 11.2.0.4.0 - Production on Tue Jul 5 01:00:13 2016
- Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
- Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Master table "SYS"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
- Starting "SYS"."SYS_IMPORT_FULL_01": "/******** AS SYSDBA" directory=DATA_PUMP_DIR dumpfile=tab.dmp REMAP_SCHEMA=hr:zhengjing exclude=constraint,trigger,grant
- Processing object type TABLE_EXPORT/TABLE/TABLE
- Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
- . . imported "ZHENGJING"."DEPARTMENTS" 7.007 KB 27 rows
- . . imported "ZHENGJING"."EMPLOYEES" 16.80 KB 107 rows
- Processing object type TABLE_EXPORT/TABLE/COMMENT
- Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
- Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
- Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
- Job "SYS"."SYS_IMPORT_FULL_01" successfully completed at Tue Jul 5 01:00:17 2016 elapsed 0 00:00:03
7.3>导入表空间
对应步骤3.4的按表空间导出文件
首先在目标端查看有哪些表在使用example表空间以及其所属用户
因之前演示中创建了许多用户,为避免上述导入的数据干扰产生嫌疑,此处删除这几个用户,当然用户下对应的表也将跟着一起被干掉。
- SQL> set lines 200
- SQL> select dt.owner, dt.table_name, dt.tablespace_name, dt.status
- 2 from dba_tables dt
- 3 where lower(dt.tablespace_name) = 'example';
- OWNER TABLE_NAME TABLESPACE_NAME STATUS
- ------------------------------ ------------------------------ ------------------------------ --------
- BUZHENGJING DEPARTMENTS EXAMPLE VALID
- BUZHENGJING REGIONS EXAMPLE VALID
- BUZHENGJING LOCATIONS EXAMPLE VALID
- BUZHENGJING JOBS EXAMPLE VALID
- BUZHENGJING EMPLOYEES EXAMPLE VALID
- BUZHENGJING JOB_HISTORY EXAMPLE VALID
- HR EMPLOYEES EXAMPLE VALID
- HR DEPARTMENTS EXAMPLE VALID
- HR JOB_HISTORY EXAMPLE VALID
- HR JOBS EXAMPLE VALID
- HR LOCATIONS EXAMPLE VALID
- OWNER TABLE_NAME TABLESPACE_NAME STATUS
- ------------------------------ ------------------------------ ------------------------------ --------
- HR REGIONS EXAMPLE VALID
- ZHENGJING EMPLOYEES EXAMPLE VALID
- ZHENGJING DEPARTMENTS EXAMPLE VALID
- 14 rows selected.
- SQL>
源库的example下存在hr用户,因而,目标库对应的hr用户也要存在。
- SQL> drop user BUZHENGJING cascade;
- drop user HR cascade;
- drop user ZHENGJING cascade;
- User dropped.
- SQL>
- User dropped.
- SQL>
- User dropped.
执行导入命令
- SQL> create user hr identified by hr;
- User created.
- SQL> grant connect,resource to hr;
- Grant succeeded.
执行结果如下
- $ impdp \'/ as sysdba\' directory=DATA_PUMP_DIR dumpfile=tablespace.dmp logfile=tsb.log TABLESPACES=example
查看报错信息,得知是由触发器的引起的,需要加上参数exclude=TRIGGER
- Import: Release 11.2.0.4.0 - Production on Tue Jul 5 01:36:23 2016
- Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
- Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Master table "SYS"."SYS_IMPORT_TABLESPACE_01" successfully loaded/unloaded
- Starting "SYS"."SYS_IMPORT_TABLESPACE_01": "/******** AS SYSDBA" directory=DATA_PUMP_DIR dumpfile=tablespace.dmp logfile=tsb.log TABLESPACES=example
- Processing object type TABLE_EXPORT/TABLE/TABLE
- Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
- . . imported "HR"."COUNTRIES" 6.367 KB 25 rows
- . . imported "HR"."DEPARTMENTS" 7.007 KB 27 rows
- . . imported "HR"."EMPLOYEES" 16.80 KB 107 rows
- . . imported "HR"."JOBS" 6.992 KB 19 rows
- . . imported "HR"."JOB_HISTORY" 7.054 KB 10 rows
- . . imported "HR"."LOCATIONS" 8.273 KB 23 rows
- . . imported "HR"."REGIONS" 5.476 KB 4 rows
- Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
- Processing object type TABLE_EXPORT/TABLE/COMMENT
- Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
- Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
- Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
- Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
- Processing object type TABLE_EXPORT/TABLE/TRIGGER
- ORA-39082: Object type TRIGGER:"HR"."SECURE_EMPLOYEES" created with compilation warnings
- ORA-39082: Object type TRIGGER:"HR"."SECURE_EMPLOYEES" created with compilation warnings
- ORA-39082: Object type TRIGGER:"HR"."UPDATE_JOB_HISTORY" created with compilation warnings
- ORA-39082: Object type TRIGGER:"HR"."UPDATE_JOB_HISTORY" created with compilation warnings
- Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
- Job "SYS"."SYS_IMPORT_TABLESPACE_01" completed with 4 error(s) at Tue Jul 5 01:36:28 2016 elapsed 0 00:00:04
在执行导入语句之前,清理并重建用户
执行导入语句
- SQL> drop user hr cascade;
- User dropped.
- SQL> create user hr identified by hr;
- User created.
- SQL> grant connect,resource to hr;
- Grant succeeded.
- SQL>
执行结果如下
- $ impdp \'/ as sysdba\' directory=DATA_PUMP_DIR dumpfile=tablespace.dmp logfile=tsb.log TABLESPACES=example exclude=TRIGGER
- Import: Release 11.2.0.4.0 - Production on Tue Jul 5 01:44:30 2016
- Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
- Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Master table "SYS"."SYS_IMPORT_TABLESPACE_01" successfully loaded/unloaded
- Starting "SYS"."SYS_IMPORT_TABLESPACE_01": "/******** AS SYSDBA" directory=DATA_PUMP_DIR dumpfile=tablespace.dmp logfile=tsb.log TABLESPACES=example exclude=TRIGGER
- Processing object type TABLE_EXPORT/TABLE/TABLE
- Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
- . . imported "HR"."COUNTRIES" 6.367 KB 25 rows
- . . imported "HR"."DEPARTMENTS" 7.007 KB 27 rows
- . . imported "HR"."EMPLOYEES" 16.80 KB 107 rows
- . . imported "HR"."JOBS" 6.992 KB 19 rows
- . . imported "HR"."JOB_HISTORY" 7.054 KB 10 rows
- . . imported "HR"."LOCATIONS" 8.273 KB 23 rows
- . . imported "HR"."REGIONS" 5.476 KB 4 rows
- Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
- Processing object type TABLE_EXPORT/TABLE/COMMENT
- Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
- Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
- Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
- Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
- Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
- Job "SYS"."SYS_IMPORT_TABLESPACE_01" successfully completed at Tue Jul 5 01:44:34 2016 elapsed 0 00:00:04