Oracle impdb和expdb命令使用详解

1、创建目录

    查询目录:
    SELECT * FROM dba_directories;
    创建目录:
    create directory dump_dir as 'D:\backup';       

2、给命名空间授权

    GRANT READ,WRITE ON DIRECTORY DUMP_DIR to geobase;

3、impdb和expdb命令语法

#2、expdp导出

2.1、按用户导出
expdp system/system@orcl directory=bakdir dumpfile=psp_base_db_20150818.dmp schemas=psp_base_db logfile=psp_base_db.log

2.2、按表名导出
expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;

2.3、按查询条件导出
expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';

2.4、按表空间导出
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;

2.5、导出整个数据库
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;

#3、impdp导入
3.1、 按用户导入

impdp 用户名/密码 DIRECTORY=数据库目录 DUMPFILE=dmp文件 SCHEMAS=表空间;

3.2、改变表的表空间

impdp 用户名/密码 DIRECTORY=数据库目录 DUMPFILE=dmp文件 REMAP_TABLESPACE=导出库表空间:当前表空间;

3.3、改变导出导入的用户名

impdp 用户名/密码 DIRECTORY=数据库目录 DUMPFILE=dmp文件  REMAP_SCHEMAS=导出库用户名:当前用户名;

3.4、导入整个数据库

impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;

3.5、追加数据

impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system 
table_exists_action=replace

常见问题处理办法

错误号 错误描述 解决办法
ora-39171 作业出现可恢复的等待 处理办法见下面说明
出现上面的问题,有两个原因: 
1、表空间大小不够,或者设置了自动扩充,但是自动扩充的大小不够大。 
2、表空间足够大,但是表空间的block不够,因为oracle 的dba(data block address)是32 bits的,其中block id占了22bits,file id占了10bits,所以datafile能达到的最大size就是2^22*db_block_size也就是4194304*db_block_size,4k的blocksize那么它的datafile max size就是16G,8k的blocksize那么它的datafile max size就是32G。
针对第一个问题,解决方法: 
ALTER DATABASE  DATAFILE 'D:/database/XXX.DBF' AUTOEXTEND    ON NEXT 20G MAXSIZE UNLIMITED; 
针对第二个问题,解决方法: 
alter tablespace tablespaceName add datafile 'D:/database/XXX01.DBF' size 30G; 
对表空间大小进行修改 ALTER DATABASE DATAFILE '数据文件' AUTOEXTEND   ON NEXT xxG MAXSIZE UNLIMITED;

参考文章:
ORACLE expdp/impdp详解(原创)
oracle impdp 变动用户、表空间(ORA-00959:表空间不存在)

你可能感兴趣的:(Oracle)