加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Oracle用exp导出部分表和expdp

(2016-04-28 10:22:16)
标签:

exp

expdp

imp

impdp

分类: IT

Oracle使用exp导出指定表或排除某几个表导出备份

Oracle10g之后提供了expdp impdp 导出导入命令,导出效率和速度较快,在本地服务器的情况下,可以使用此命令导出、导入数据,而且可以使用条件命令指定不导出某几个表。但是expdp在客户端导出的时候无法导出,通常要使用dblink 进行操作,太麻烦。那使用exp可以么?今日经过研究测试,可以使用exp命令指定导出某些表。

Expdp命令:

EXPDP system/**** DIRECTORY=zh0520 SCHEMAS=zh20150327 DUMPFILE=_EASBAK.DMP LOGFILE=_EASBAK.LOG

       比如系统数据库里面有5000个表,每天导出备份的时候,有几个表不用导出(因为某几个附件表或者图片表太大,通常每个表的大小超过10G,导出效率低)。方法如下:

一、生成exp参数文件

 sqlplus "/as sysdba"

        注:这里使用system用户也可。

  SQL>set heading off

  SQL>spool d:\databak\par.file

  SQL>select 'tables=('||chr(10) from dual;

  --排除几张表及系统用户

  SQL>select table_name||','  from dba_tables where owner in ('ZH20150526')  and table_name not in ('AAAAAA','BBBB','CCCC','DDDD');

  SQL>select ')' from dual;

  SQL>spool off

找到d:\databak\par.file 文件,打开,修改,将里面的sql语句删除。

Par.file文件的内容如下:

File=d:\databak\exp111.dmp

tables=(                                                                       

T_BAS_ELEMENTGROUP,

T_BAS_ELEMENTPROPERTY,

T_BAS_ELEMENTTYPE

log=d:\databak\exp111.log

 

执行导出:

exp zh20150526/zh20150526@zheas250 parfile=d:\databak\par.file

成功执行!

备注:Par.file 文件的内容里面的表,可以通过PLSQL Developer 等工具 执行语句:

select table_name||','  from dba_tables where owner in ('ZH20150526')  and table_name not in ('AAAAAA','BBBB','CCCC','DDDD');

然后复制到par.file文件里面。

 

导出日志文件exp111.log内容:

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

已导出ZHS16GBK 字符集和AL16UTF16 NCHAR 字符集

 

即将导出指定的表通过常规路径...

. . 正在导出表              T_BAS_ELEMENTGROUP导出了          11

. . 正在导出表           T_BAS_ELEMENTPROPERTY导出了        2470

. . 正在导出表               T_BAS_ELEMENTTYPE导出了          97

成功终止导出, 没有出现警告。

 

 

正常exp 导出的命令产生的日志文件通常如下:

exp tea/tea@tea buffer=409600 file=d:\databak\tea.dmp log=d:\databak\tea.log

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production

With the Partitioning, OLAP and Data Mining options

已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即将导出指定的用户...

. 正在导出 pre-schema 过程对象和操作

. 正在导出用户 TEA 的外部函数库名

. 导出 PUBLIC 类型同义词

. 正在导出专用类型同义词

. 正在导出用户 TEA 的对象类型定义

即将导出 TEA 的对象...

. 正在导出数据库链接

. 正在导出序号

. 正在导出簇定义

. 即将导出 TEA 的表通过常规路径...

. . 正在导出表              T_BAS_ELEMENTGROUP导出了          11

. . 正在导出表           T_BAS_ELEMENTPROPERTY导出了        2470

. . 正在导出表               T_BAS_ELEMENTTYPE导出了          97

. 正在导出同义词

. 正在导出视图

. 正在导出存储过程

. 正在导出运算符

. 正在导出引用完整性约束条件

. 正在导出触发器

. 正在导出索引类型

. 正在导出位图, 功能性索引和可扩展索引

. 正在导出后期表活动

. 正在导出实体化视图

. 正在导出快照日志

. 正在导出作业队列

. 正在导出刷新组和子组

. 正在导出维

. 正在导出 post-schema 过程对象和操作

. 正在导出统计信息

成功终止导出, 没有出现警告。

 

从两个exp命令对比看,后一个是完整导出数据库,前一个只是导出表和表的数据,至于数据里面的视图、触发器、索引等对象都没有导出。

 

IMP某个单表:

imp ttt/ttt file=d:\databak\exp.dmp tables=(zx_qm_shop_price_lst)

 

IMP语句:

imp system/xxx@xxx file=f:\1.dmp log=f:\1.log fromuser=DBUSRMKT touser=DBUSRMKT tables=(BPRICEGROUP,BPOPGROUP,BCHECKDETAIL,GOODSBASE_TJ) IGNORE=y rows=y INDEXES=N FEEDBACK=100000

 

导出表结构:

exp xjsc/xjsc@xjdb full=y rows=n file="d:\databak\biaojiegou.dmp" buffer=40960 log="d:\databak\biaojiegou.log"

 

使用sqlplus定时执行某语句:

sqlplus zheas/****@zheas254 @D:\databak\oracle\gongx.sql

 

EXPDP命令的导出导入步骤:

1、目录

create directory zheas254_150909 as 'D:\databak\zheas254_200150909';

查看目录:

select * from dba_directories;

3、导出数据库

EXPDP system/**** DIRECTORY=zh0520 SCHEMAS=zh20150327 DUMPFILE=_EASBAK.DMP LOGFILE=_EASBAK.LOG

4、建表空间和用户、授权

CREATE TABLESPACE EAS_D_zh20150527_STANDARD DATAFILE 'D:\oracledata\EAS_D_zh20150527_STANDARD.ORA' SIZE 2048M autoextend on;

CREATE TABLESPACE EAS_D_zh20150527_TEMP2 DATAFILE 'D:\oracledata\EAS_D_zh20150527_TEMP2.DBF' SIZE 1024M autoextend on;

CREATE TABLESPACE EAS_D_zh20150527_INDEX DATAFILE 'D:\oracledata\EAS_D_zh20150527_INDEX.ORA' SIZE 1024M autoextend on;

CREATE TEMPORARY TABLESPACE EAS_T_zh20150527_STANDARD TEMPFILE 'D:\oracledata\EAS_T_zh20150527_STANDARD.DBF' SIZE 1024M autoextend on;

 

 

create user zh20150527 identified by zh20150527 default tablespace EAS_D_zh20150527_STANDARD quota unlimited on EAS_D_zh20150527_STANDARD temporary tablespace EAS_T_zh20150527_STANDARD;

alter user zh20150527 quota unlimited on EAS_D_zh20150527_INDEX;

grant dba to zh20150527;

5、导入数据库(注意前后数据库用户名,丛0327导入到0510

impdp system/kingdee DIRECTORY=zheas254_150909 DUMPFILE=_EASBAK.DMP  REMAP_SCHEMA=zheas:zh20150527  REMAP_TABLESPACE=EAS_D_zheas_STANDARD:EAS_D_zh20150527_STANDARD

 

 

drop user zh20150526 cascade;




2020.11.03,oracle12C 导出和导入:

exp mgstest/*****@pdborcl  rows=y file="E:\mgs36\mgstest31.dmp" buffer=409600 log="E:\mgs36\mgstest31.log"


sqlplus system/*****@pdborcl

drop user mgstest cascade;

CREATE USER mgstest IDENTIFIED BY ***** DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;

GRANT CONNECT,RESOURCE TO mgstest;

grant all privileges to mgstest;



imp system/*****@pdborcl file=E:\mgs36\mgs14.dmp  log=E:\mgs36\mgs14imp.log fromuser=mgs touser=mgstest IGNORE=y rows=y

以上

0

阅读 收藏 喜欢 打印举报/Report
前一篇:商誉
后一篇:笑话连连
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有