Oracle11g expdp impdp使用

作者声明:本篇文章系本人依照真实部署过程原创,未经许可,谢绝转载。

先检查目录,目录的定义可以查询dba_directories表,导入导出需要使用一个已经存在的目录定义,并且拥有目录使用权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SQL> select owner,directory_name,directory_path from dba_directories;   

OWNER DIRECTORY_NAME DIRECTORY_PATH
---------- ------------------------------ --------------------------------------------------
SYS LOCAL_FTP_DIR /home/oracle/temp
SYS EXP_DIR /home/oracle/temp
SYS UTLLOBDIR /home/oracle/temp
SYS MYFILEPATH /home/oracle/temp/test
SYS D_OUTPUT /home/oracle/temp
SYS MY_DOCS /u01/app/oracle/
SYS XMLDIR /opt/ora11/product/11.2/rdbms/xml
SYS DMP_DIR /home/oracle
SYS DATA_PUMP_DIR /opt/ora11/admin/gnnt/dpdump/
SYS ORACLE_OCM_CONFIG_DIR /opt/ora11/product/11.2/ccr/state

也可以创建新目录

1
2
3
4
--创建DIRECTORY
create directory exp_dp as '/home/oracle/temp';
--授权目录使用给用户
Grant read,write on directory exp_dp to test;

确认数据库的字符集,确认导出端字符集和导入端字符集一致(NLS_CHARACTERSET 显示字符集为ZHS16GBK)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SQL> select * from nls_database_parameters;

PARAMETER VALUE
------------------------------ --------------------------------------------------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET ZHS16GBK
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 11.2.0.2.0

expdp 导出数据库用户为test的所有对象(前提test用户有exp_full_database权限imp_full_database权限)

–只导出数据库对象定义 使用 content=metadata_only
–CONTENT={ALL | DATA_ONLY | METADATA_ONLY} 有三个参数可以使用(所有 | 数据 | 定义)

1
expdp test/password schemas=test content=metadata_only directory=EXP_DIR  dumpfile=test.dmp  logfile=test.log ;

expdp 导出表按查询条件导出

1
2
3
4
5
6
7
8
9
10
11
12
13
vi file.exp
DUMPFILE=test.dmp
DIRECTORY=EXP_DIR
TABLES=
(
table1,table2
)
QUERY=
(
table1:"where id='40a581d1431efe890143227206922314'"
)
--保存文件
expdp test/password parfile=file.exp

impdp 导入数据库用户为test的所有对象(前提test用户有exp_full_database权限imp_full_database权限)

1
2
3
4
5
impdp test/password directory=EXP_DIR dumpfile=test.dmp logfile=test.log ;
--如果需要由test用户导入为 test2用户,可使用remap_schema
impdp test/password directory=EXP_DIR dumpfile=test.dmp logfile=test.log remap_schema=test:test2;
--两个数据库表空间不一致,可使用remap_schema
impdp test/password directory=EXP_DIR dumpfile=test.dmp logfile=test.log remap_tablespace=user:user2;