orcale数据库 expdp / impdp

expdp导出:

一、创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建。
create directory dpdata1 as 'd:\test\dump';
二、查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)
select * from dba_directories;

三、导出数据
1)按用户导
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
2)并行进程parallel
expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3
3)按表名导
expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;
4)按查询条件导
expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
5)按表空间导
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
6)导整个数据库
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;

impdp导入:

dmp文件放到机器的Oracle定义的directory目录(select * from dba_directories),这是关键,先登录Oracle看你这个参数: DATA_PUMP_DIR,我的是:
DATA_PUMP_DIR ='D:\oracle\product\10.2.0\admin\postdb\dpdump\';
你得把文件拷贝到此地,再运行impdp。
例如:impdp enterprise/enterprise@orcl    dumpfile=BAK20170818.DMP  logfile=123.log

关于错误的解决办法

ORA-39171: 作业出现可恢复的等待。
ORA-01658: 无法为表空间 ENTERPRISE 中的段创建 INITIAL 区

1.1,找出对应的表空间文件

SELECT tablespace_name, file_id, file_name, round(bytes / (1024 * 1024), 0) total_space FROM dba_data_files ORDER BY tablespace_name;

1.2,修改表空间大小

alter database datafile 'E:\ORACLE_TABLESPACES\ENTERPRISE_TBSPACE.DBF' auto extend on next 20g maxsize unlimited;

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 tablespace enterprise add datafile 'D:/database/XXX01.DBF' size 30G;

 

posted on 2017-08-31 09:38  顽固  阅读(247)  评论(0编辑  收藏  举报

导航