ORACLE数据库EXPDP/IMPDP常用参数
admin
2023-04-14 22:41:33
0

    本文主要介绍如何使用EXPDP/IMPDP也就是数据泵方式导入导出Oracle数据库。


导库权限管理

备份恢复数据库可以设置一个专门的用户赋予导出导入权限,导出:exp_full_database导入:imp_full_database权限。(本文后面使用的是system默认就有权限)

    查看scott是否有导入导出权限

select * from dba_role_privs where grantee='SCOTT';

    赋予scott用户导入导出权限

grant exp_full_database,imp_full_database to scott;

    回收scott导入导出权限

revoke select on dba_directories from scott;


directory管理

在介绍Oracle导入导出之前先介绍一下directory目录,directory主要用来指定存储路径。查看DBA_directories视图可以查看到目录信息。这里我也简单介绍一下directory目录的管理命令。

    创建名为zhanky的directory,对应的路径G:\zhanky

create or replace directory zhanky as 'G\zhanky';

    查看所有directory

select * from dba_directories;

    删除指定的directory

drop directory zhanky;


为了方便大家的理解,这里简单做了DIRECROEY和EXPDP/IMPDP的对应关系图,创建directory是为了在导入到处时引用。

ORACLE数据库EXPDP/IMPDP常用参数


前面讲解了导库前准备操作,首选需要确定导出用户要有exp_full_database权限(如果使用system或sys默认就有),导入用户需要imp_full_database权限。然后需要创建directory供存放备份文件。

开始进入正题了,导入导出的日常常用参数通过测试来了解。


EXPDP导出

常用日常备份,导出全库到zhanky目录中,备份文件命名zhanky.dmp,日志文件命名zhanky_out.log。

expdp system/manager@zhanky directory=zhanky dumpfile=zhanky.dmp logfile=zhanky_out.log full=y

DIRECTORY:用于转储文件和日志文件的目录对象。
DUMPFILE:指定导出备份文件的命名。
LOGFILE:指定导出备份日志的命名。里面记录了备份中的信息。
FULL:导出整个数据库 (默认是N,就是默认只会导出登录用户的所有数据)。


将sh和scott用户下除去sales和emp表以外百分之四十的数据导出到zhanky目录中,备份文件命名zhanky2.dmp。

expdp system/manager@zhanky directory=zhanky dumpfile=zhanky2.dmp schemas=sh,scott exclude=table:\"IN\(\'SALES\',\'EMP\'\)\" sample=40

SCHEMAS:要导出的方案的列表 [登录方案]。

EXCLUDE:排除特定对象类型。(表名要大写)

SAMPLE:要导出的数据的百分比。


将users和example表空间导出到zhanky目录中版本为11.2.0.1,导出使用两个进程备份,文件分别命名zhanky1.dmp、zhanky2.dmp。如果文件存在,直接覆盖目标转储文件。

expdp system/manager@zhanky directory=zhanky dumpfile=zhanky1.dmp,zhanky2.dmp tablespaces=users,example version=11.2.0.1 parallel=2 reuse_dumpfiles=y

TABLESPACES:标识要导出的表空间的列表。

VERSION:指定导出数据库的版本,一般用于高版本数据库的数据要导入到低版本数据库中时用到。

PARALLEL:更改当前作业的活动 worker 的数量。

REUSE_DUMPFILES:覆盖目标转储文件 (如果文件存在) [N]。


将sh.selas表中cust_id列值为987的数据导出到zhanky目录中,备份文件命名为zhanky3.dmp,备份任务名叫zhankycs

expdp system/manager@zhanky directory=zhanky dumpfile=zhanky3.dmp tables=sh.selas QUERY=selas:"where cust_id=987"  JOB_NAME=zhankycs

TABLES:标识要导出的表的列表。例如, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995。

QUERY:用于导出表的子集的谓词子句。例如, QUERY=employees:"WHERE department_id > 10"。

JOB_NAME:要创建的导出作业的名称。


更多导出参数可以通过 expdp -hlep获得



IMPDP导入

        IMPDP的大概过程:首先会验证用户名、密码、库等参数信息,然后创建表空间、用户、角色等,最后导入表、索引等对象。在这个步骤中创建表空间用户最重要,如果创建表空间或用户失败,那这个表空间或用户的数据在新库中就没了。创建用户失败的原因一般都是表空间不存在,所以表空间创建的是否成功事关重要。在导入过程自动创建表空间时会按照备份文件(也就是备份文件数据源库)中的参数信息。所有参数正确那么就可以出问题的地方就只有存储空间和路径了。所以我们只需要确认服务器空间是否足够和源库中数据文件的路径在服务器上是否存在。而单实例环境从windows导入到linux这种情况,路径肯定没法保证一致,所以建议在导入之前先创建表空间。一般如果是生产环境公司都会有创建表空间脚本。


常用日常恢复,将zhanky目录下zhanky.dmp备份文件中所有数据导入到zhanky库中导出日志命名为zhanky_in.log。

impdp system/manager@zhanky directory=zhanky dumpfile=zhanky.dmp logfile=zhanky_in.log full=y

DIRECTORY             供转储文件, 日志文件和 sql 文件使用的目录对象。

DUMPFILE              要从 (expdat.dmp) 中导入的转储文件的列表,
LOGFILE               日志文件名 (import.log)。

FULL                  从源导入全部对象 (Y)。


将zhanky目录下zhanky.dmp备份文件中sh和scott用户下除去sales和emp表以外的所有数据导入到zhanky库中。并将导入作业命名zhankycs_in

impdp system/manager@zhanky directory=zhanky dumpfile=zhanky.dmp schemas=sh,scott exclude=table:\"IN\(\'SALES\',\'EMP\'\)\" job_name=zhankycs_in

SCHEMAS               要导入的方案的列表。

EXCLUDE               排除特定的对象类型, 例如 EXCLUDE=TABLE:EMP。

JOB_NAME              要创建的导入作业的名称。


将zhanky目录下zhanky1.dmp、zhanky2.dmp备份文件中users和example表空间导入到zhanky库中,导入使用两个进程导入。

expdp system/manager@zhanky directory=zhanky dumpfile=zhanky1.dmp,zhanky2.dmp tablespaces=users,example reuse_datafiles=y parallel=2

TABLESPACES           标识要导入的表空间的列表。
REUSE_DATAFILES       如果表空间已存在, 则将其初始化 (N)

PARALLEL              更改当前作业的活动 worker 的数目。


将zhanky目录下zhanky.dmp备份文件中sh.selas表里cust_id列值为987的数据指定为10.2.0.4版本导入到zhanky库中,如果指定库种sh.selas表则将数据附加到表中

impdp system/manager@zhanky directory=zhanky dumpfile=zhanky.dmp tables=sh.selas QUERY=selas:"where cust_id=987" version=10.2.0.4 TABLE_EXISTS_ACTION=REPLACE

QUERY                 用于导入表的子集的谓词子句。

VERSION               要导出的对象的版本, 其中有效关键字为:

TABLES                标识要导入的表的列表。

TABLE_EXISTS_ACTION   导入对象已存在时执行的操作。 有效关键字: (SKIP)跳过, APPEND附加, REPLACE 替换和 TRUNCATE清空表后在添加。


将zhanky目录下zhanky.dmp备份文件中所有数据导入到zhanky库中,但是将users表空间中的数据导入到cs表空间中,scott用户的数据导入到zhanky用户中,sh.selas表的数据导入到system.cstable中。

impdp system/manager@zhanky directory=zhanky remap_tablespace=users:cs remap_schema=scott:zhanky remap_table=sh.selas:cstable full=y

REMAP_TABLESPACE     将表空间对象重新映射到另一个表空间。

REMAP_SCHEMA          将一个方案中的对象加载到另一个方案。

REMAP_TABLE    将表名重新映射到另一个表。例如, REMAP_TABLE=EMP.EMPNO:REMAPPKG.EMPNO。


其实数据泵的导入导出很简单,主要就是理解各个参数的用途,然后各种搭配之用。这次的内容就写到这里,如果有问题欢迎留言指出。

相关内容

热门资讯

从一座“灯塔工厂”看海辰储能的... 央广网北京5月12日消息(记者 刘家怡)在重庆市铜梁区,每天有超过10万颗储能电芯下线,发往全球市场...
东莞松山湖高新区“两创融合”催... 当科学家听懂了企业话 东莞松山湖高新区“两创融合”催生新能源新动能 问起扎根东莞松山湖的新能源企业和...
厕所内装摄像头要监控啥 澎湃新闻记者 蒋立冬 阳柳厕所内装摄像头要监控啥“中学在男厕所安装摄像头”一事引发关注。5月11日晚...
原创 港... 大家普遍认为目前的任何钢材都经不起海水的侵蚀腐蚀,但是现如今它的到来将打破这一“铁”的定律!那就是S...
会“变形”的检测机器人Haza... 近日,香港生产力促进局、中广核(深圳)运营技术与辐射监测有限公司、中山大学、西安交通大学及本末科技有...
2025年美国制造业回流追踪 创纪录的投资与关税加码之下,美国制造业在2025年依然表现不佳。但可以合理预期,已宣布的投资将在不久...
原创 风... 那天傍晚,车从草原边上开过去,天色刚压下来,远处一排排白色大风机还在慢慢转。同行的人盯着看了半天,突...
官方调查报告:司机吸食打火机气... 11日,辽阳市应急管理局发布辽阳灯塔沈营线(S101)“10·8”较大道路运输事故调查报告。2024...
赖清德窜访媚外,金门老百姓却苦... 探访厦金大桥赖清德“偷渡式”窜访,岛内民众大骂:这边民生受阻,那边你还去给外国人“跪”。反观今年4月...
特朗普访华,通用汽车和福特高层... 【文/观察者网 潘昱辰 编辑/高莘】美国总统特朗普将于5月13-15日对中国进行国事访问。据白宫披露...