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)并行进程parallelexpdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott33)按表名导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文件放到机器的定义的directory目录(select * from dba_directories),这是关键,先登录看你这个参数: DATA_PUMP_DIR,我的是:
DATA_PUMP_DIR ='D:\\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;