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:表空间不存在)