Windows下ORACLE数据泵expdp和impdp使用
一、基础环境
操作系统:Windows server 2008;
数据库版本:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
数据库工具:PL/SQL 12.0.7
实验内容:使用expdp/impdp快速数据迁移工具,将数据库复刻到其他机器,两台机器安装同版本数据库软件;
二、命令详解
a、expdp
关键字 说明 [ 默认值 ]
userid 用户名/口令,必须为第一个参数,且不能省略。
directory 用于转储文件和日志文件的目录对象。[ data_pump_dir]
dumpfile 指定目标转储文件名的列表 [expdat.dmp]
logfile 指定日志文件名 [export.log]。
schemas 要导出的方案的列表 [登录的方案,即 userid 的那个用户]。
tables 标识要导出的表的列表。例如, tables=hr.employees,sh.sales:sales_1995。
nologfile 不写入日志文件 [N]。
query 用于导出表的子集的谓词子句。例如, query=employees:"WHERE department_id > 10"。
reuse_dumpfiles 覆盖目标转储文件 (如果文件存在) [N]
compression 减少转储文件大小。有效的关键字值为: all, data_only, [matadata_only] 和 none。
content 指定要卸载的数据。[ ALL ] 即:元数据(表结构等)和数据。DATA_ONLY 即:仅导出数据不导出元数据(表结构)。 METADATA_ONLY 即:仅导出元数据(表结构等)不导出数据。
encryption 加密某个转储文件的一部分或全部。 有效的关键字值为: ALL 即:加密元数据(表结构等)和数据。 DATA_ONLY,即:仅加密数据部分,不加密元数据(表结构等)。ENCRYPTED_COLUMNS_ONLY, 即:仅加密列。METADATA_ONLY,即:仅加密元数据(表结构等)。NONE,即不加密元数据(表结构等)和数据。
encryption_algorithm 指定加密的方式。有效的关键字值为: [ AES128 ], AES192 和 AES256。
encryption_mode 生成加密密钥的方法。有效的关键字值为: dual, password和 [TRANSPARENT]。
encryption_password 用于在转储文件中创建加密数据的口令密钥。
network_link 源系统的远程数据库链接的名称。即dblink的名称,用于导出远程数据库。(性能受网络限制)
version 要导出的对象版本。有效的关键字值为: [COMPATIBLE], latest 或任何有效的数据库版本。在不同版本数据库导入导出数据时,必须指定此参数,否则会导入失败。
full 导出整个数据库 [N]。
estimate_only 计算作业估计值而不执行导出。
estimate 计算作业估计值。 有效的关键字值为: [blocks] 和 STATISTICS。
help 显示帮助消息 [N]。
b、impdp
关键字 说明 [ 默认值 ]
userid 用户名/口令,必须为第一个参数,且不能省略。
directory 用于转储文件, 日志文件和 SQL 文件的目录对象。[ data_pump_dir]
dumpfile 要从中导入的转储文件的列表,可以有多个。[expdat.dmp]
logfile 日志文件名 [import.log]
schemas 要导入的方案的列表。
encryption_password 用于访问转储文件中的加密数据的口令密钥。
full 导入源中的所有对象 [Y]
remap_schema 将一个方案中的对象加载到另一个方案。(修改用户名)
remap_tablespace 将表空间对象重新映射到另一个表空间。(修改表空间)
reuse_datafiles 如果表空间已存在, 则将其初始化 [N]。
tables 标识要导入的表的列表。
help 显示帮助消息 [N]。
三、实验过程
a、准备工作
1、使用有dba权限的Oracle数据库用户;
2、新建一个文件夹,用以存放导出文件和日志(D:\Dump);
3、执行SQL:create directory dump_dir as 'D:\dump';
4、在Oracle中建立目录,执行SQL:select * from dba_directories,查看目录已存在;
b、使用expdp导出
实验需要导出用户boliu218、密码123456的所有数据(含数据库机构及数据),在cmd窗口中执行expdp工具:EXPDP boliu218/123456 DIRECTORY=DUMP_DIR SCHEMAS=boliu218 DUMPFILE=boliu218_0720.dmp LOGFILE=boliu218_0720.log
expdp工具会显示相关信息并统计磁盘空间,开始执行,等待结束;如下图(这个图是我在网上找的):
c、使用impdp导入(在另外一台电脑上)
1、准备工作:
a、使用有dba权限的Oracle数据库用户;
b、新建一个文件夹,把导入文件复制进去(D:\Dump);
c、执行SQL:create directory dump_dir as 'D:\dump';
d、在Oracle中建立目录,执行SQL:select * from dba_directories,查看目录已存在;
e、查看用户的表空间,执行SQL:select distinct tablespace_name from all_tables where owner='boliu218',这里这个用户是在默认的“users”表空间,等下导入的数据也将放到“users”表空间;
f、执行SQL:SELECT tablespace_name,file_id,file_name,round(bytes / (1024 * 1024), 0) total_MB FROM dba_data_files ORDER BY tablespace_name,查看"users"表空间对应的数据库文件大小,Oracle默认的数据库文件最大32GB,如果要导入的数据比较大,剩余空间不够,就得先给表空间建立新的数据库文件,建立数据库文件的语句SQL:alter tablesapce users add datafile '文件绝对路径' size 4GB autoextend on next 500MB maxsize unlimited;如下图:
2、执行
在cmd窗口中执行impdp工具:IMPDP BOLIU218/123456 DIRECTORY=DUMP_DIR DUMPFILE=boliu218_0720.dmp,等待工具导入完成,如下图(这个图是在网上找的):
完成之后,就可以通过sql语句查询了。