导入导出工具expimpexpdpimpdp.docx

上传人:b****7 文档编号:10844844 上传时间:2023-02-23 格式:DOCX 页数:12 大小:21.67KB
下载 相关 举报
导入导出工具expimpexpdpimpdp.docx_第1页
第1页 / 共12页
导入导出工具expimpexpdpimpdp.docx_第2页
第2页 / 共12页
导入导出工具expimpexpdpimpdp.docx_第3页
第3页 / 共12页
导入导出工具expimpexpdpimpdp.docx_第4页
第4页 / 共12页
导入导出工具expimpexpdpimpdp.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

导入导出工具expimpexpdpimpdp.docx

《导入导出工具expimpexpdpimpdp.docx》由会员分享,可在线阅读,更多相关《导入导出工具expimpexpdpimpdp.docx(12页珍藏版)》请在冰豆网上搜索。

导入导出工具expimpexpdpimpdp.docx

导入导出工具expimpexpdpimpdp

导入导出工具exp、imp、expdp、impdp

exp和imp是在数据泵之前的逻辑备份工具。

一:

导出工具exp

1.$ORACLE_HOME/bin操作系统下可执行文件

导出工具将数据库中的数据压缩在一个二进制文件

三中模式:

a.表模式:

导出用户所有的表或者指定的表

b.用户模式:

导出用户下的所有内容

c.整个数据库:

导出数据库中的所有对象

c

查看帮助命令

exp help =y

练习

导出前

1)查询数据库的字符集(方法很多只用一种)

SQL> select userenv('language') from dual;

USERENV('LANGUAGE')

----------------------------------------------------

AMERICAN_AMERICA.WE8ISO8859P1

2)设置Linux操作系统的NLS_LANG环境变量

 export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1

开始导出

使用exp把scott.emp表导出来导出文件名scott.emp

exphelp=y imphelp=y 查看帮助

exp scott/oracle  TABLES=emp file=scott.emp

然后删除scott.emp表

sqlplus scott/oracle

drop table emp;

最后使用导出的文件恢复原来的emp表

imp scott/oracle  TABLES=emp file=scott.emp

检查是否成功

select count(*) from scott.emp;

例如:

表模式

exp scott/oracle tables=emp file=emp.dmp

导出多张表

exp scott/oracle tables=emp,dept file=ed.dmp

使用sys用户导出

exp tables=scott.emp file=emp1.dmp

username:

sys as sysdba

password:

 oracle

或者

exp \'sys/oracle as sysdba\'  tables=scott.emp  file=emp2.dmp

用户模式

导出用户所有的对象

exp scott/oracle owner=scott file=soctt.dmp

全库导出

exp system/oracle full=y file=full.dmp

指定导出片的大小,限制为1g

exp scott/oracle tables=emp file=emp2.dmp

filesize=1g

参数filesize指定了二进制备份文件的最大字节数

目的是解决某些操作系统下2g物理文件限制以及可以加快压缩和方便刻录光盘等

也可以远程导出到本地

exp system/oracle@orcl tables=scott.emp file=emp168.dmp

导入工具:

imp

1该工具是$ORACLE_HOME/bin下一个可执行文件

2imp将exp生成的二进制文件导入数据库中

 只有exp_full_database和dba权限的用户才能

 做整个数据库的导入

grant exp_full_database to scott;

3imp操作步骤

先createtable-->insertdata-->createindex-->createtrigger,constriants

例子

练习:

先删除scott.emp表的记录,使用备份文件恢复记录

sqlplus scott/oracle

truncate table emp;

select count(*) from emp;

imp scott/oracle tables=emp file=emp.dmp ignore=y

参数ignore=y表示直接导入数据

检查结果selectcont(*)fromemp;

将某用户的表导入到另一个用户下:

交互式

imp   tables=emp file=emp.dmp fromuser=scott touser=hr

输入用户名:

sysassysdba

输入密码:

    oracle

非交互式

imp \'sys/oracle as sysdba\'  tables=emp file=emp.dmp fromuser=scott touser=hr

约束报错,可以不需要创建约束,加入参数CONSTRAINTS=N

4导入可能出现的问题

a数据对象已经存在

解决方法:

使用参数ignore=y会把exp文件的数据内容直接导入

如果表有唯一关键字约束,不符合条件的不导入

如果表没有唯一关键字约束,将引起重复记录

b数据库对象有主外键约束

不符合主外键约束,数据导入失败

解决方法:

先导入主表,在导入从表

     或者先禁用主外键,导入完成后在启用

c权限不够

给予imp_full_database

 exp_full_database

d字符集问题

如果字符集不同,导入失败

查看oracleserver端的字符集

select userenv('language') from dual;

查看dump文件字符集

cat scott.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6

0345

select nls_charset_name(to_number('0354','xxxx')) from dual;

查看oracleclient端字符集

echo $NLS_LANG

如果检查结果发现server端和client字符集不一样,修改为同server端相同的字符集

导出的过程转换

在export过程中,源数据库字符集与export用户会话字符集不一致

会发生字符集转换,并在导出文件头部几个字节中存储export用户会话字符集ID号,在这个过程中肯可能发生数据丢失。

要正确导出源数据库数据,要求export过程的用户会话字符集应等于源数据库字符集或是源数据库字符集的超集

导入的过程字符集转换

确定导出数据库字符集环境(通过读取导出文件头获取)

确定session字符集(通过nls_lang获得)

imp读取导出的文件,读取文件集ID于导入进程所在的会话nls_lang比较

如果相同不做转换,不过不同要把数据文件字符集转为session字符集

总结:

先去检查导入文件字符集于导入session使用字符集之间的转换,如果转换不成功,则imp就不能完成

然后导入session字符集与数据库字符集之间转换

fimp,exp版本不能向上兼容

imp可以导入低版本exp生成的文件,

不能导入高版本exp生成的文件

g导入大表(大于80M),存储失败

默认的exp时,compress=y,也就是数据将压缩在一个数据块上

导入时,如果不存在连续一个大数据块,导入失败

导出80m以上大表时,将compress=n

5expimp参数

buffer=4096000(数据缓冲区代销哦啊,以字节为单位,自行调整)

对性能有很大影响

compress=y(将在导出时候合并碎片)

direct=y(以direct方式导出,告诉exp直接读取数据,速度快)

feedback(每x行显示进度)

例如:

将用户的所有内容删除后恢复用户的所有内容

1导出用户所有的对象

expscott/oracleowner=scottfile=soctt.dmp

删除用户dropuserscottcascade;

导入用户必须要先存在

createuserscottidentifiedbyoracle

defaulttablespaceusers

temporarytablespacetemp

quotaunlimitedonusers;

grantconnect,resourcetoscott;

impsystem/oraclefile=scott.dmpfromuser=scotttouser=scottignore=ybuffer=200000

使用脚本完成导出某个用户的所有表

setfeedbackoffheadingoff verifyofftrimspooloff

setpagesize0linesize200

spool/u01/table_scott.sh

select'expscott/oracletables='||table_name||'file=/u01/'||table_name||'.dmp'fromuser_tables;

spooloff

vim/u01/table_scott.sh

#!

/bin/bash

expscott/oracle tables=BTfile=/u01/BT.dmp                                                                                                                   

expscott/oracle tables=DEPTfile=/u01/DEPT.dmp                                                                                                               

expscott/oracle tables=DTfile=/u01/DT.dmp                                                                                                                   

expscott/oracle tables=EMPfile=/u01/EMP.dmp                                                                                                                 

expscott/oracle tables=MANAGERfile=/u01/MANAGER.dmp                                                                                                     

expscott/oracle tables=SALGRADEfile=/u01/SALGRADE.dmp

给予执行权限

chmodu+x/u01/table_scott.sh

-----------------------------------------------------------------------

    Oracle的导出导入是一个很常用的迁移工具。

在Oracle10g中,Oracle推出了数据泵(expdp/impdp).它可以通过使用并行,

从而在效率上要比exp/imp要高。

高速导入导出工具

逻辑备份工具---数据泵

使用专用api导入导出数据,速度快

expdp只能用于服务器端,不能用户客户端

工具目录:

$ORACLE_HOME/bin

可以功过dbms_datapump调用

可提供工具:

expdpimpdp 基于web界面

可提供数据访问方法:

直接路径外部表

作用:

oracle数据库之间导入导出

数据泵是oracledatabase10g的一个组成功能

数据泵优点:

exclude,include和content参数用于选择细粒度级对象和数据

version参数指定要移动的对象的数据库版本

parallel参数指定代表导出作业运行的活动执行服务器的最大线程数

estimate_only参数可估计导出作业占用的空间量(实际上并不执行导出)

使用网络模式可从远程数据库直接导出到转存文件集

在导入过程中,可以更改目标数据文件名、方案和表空间

此外10g还允许您指定在执行数据泵导出时,要从源数据库取样和卸载的数据百分比。

使用compression参数可以指示是否应在导出转存文件中压缩元数据,以便占用更少的磁盘空间。

使用数据泵之前必须创建目录对象,导入到处都在目录对象里

数据库泵是一个服务端工具。

--

expdp HELP=Y

--

对以SYSDBA角色登录的用户,10g数据库不支持进行导出和导入操作。

请注销,之后使用其它角色登录并重试。

1创建datapump使用的一个表

conn system/oracle

create table dp_test as select * from all_users;

select count(*) from dp_test;

2创建oracle目录

mkdir /u01/dp_dir

create directory dp_dir as '/u01/dp_dir';

grant all on directory dp_dir to public;

可以通过dba_directories查看

3使用system账户打开Dbconsole

维护---》导出到文件-->导出类型中选择表-->输入操作系统用户名和口令

4添加--选择表dp_test

5选择目录dp_dir

6完成。

expdp system/oracle dumpfile=expdp01.dmp directory=dp_dir tables=system.dp_test logfile=expdp01.log

一:

导出,导入表

先要创建目录对象

 mkdir /u01/backup

create directory dump_dir as '/u01/backup';

grant read ,write  on directory dump_dir to scott;

expdp scott/oracle tables=emp directory=dump_dir dumpfile=e1.dmp  logfile =e1.log

二导出方案

expdp scott/oracle directory=dump_dir dumpfile=scott.dmp schemas=scott

三导出表空间

expdp system/oracle directory=dump_dir dumpfile=users.dmp tablespaces=users

四导出全库

expdp system/oracle directory=dump_dir dumpfile=full.dmp full=y

五并行导出

设置parallel可以并行导出,导出每个线程创建一个单独的导出文件,因此选项应该拥有和并行线程一样多的文件

通配符%U文件格式full_%U.dmp(full_01,full_02,...)

例如:

expdpsystem/oracledirectory=dump_dirdumpfile=users_%U.dmptablespaces=usersparallel=3

导入impdp

1将emp表从scott用户导入到system用户下

 impdp system/oracle directory=dump_dir dumpfile=e1.dmp tables=emp  remap_schema=scott:

system

2将soctt方案导入到system用户下

expdp scott/oracle directory=dump_dir dumpfile=scott.dmp schemas=scott

impdp system/oracle directory=dump_dir dumpfile=scott.dmp

remap_schema=scott:

system

3并行导入

 expdp system/oracle directory=dump_dir schemas=scott

dumpfile=scott_%U.dmp parallel=3

先删除用户

drop user scott cascade;

然后导入

impdp system/oracle directory=dump_dir  schemas=scott dumpfile=scott_%U.dmp parallel=3

对与hrschema

 expdp system/oracle directory=dump_dir schemas=hr

dumpfile=hr_%U.dmp parallel=3

先删除用户

drop user scott cascade;

然后导入

impdp system/oracle directory=dump_dir  schemas=hr dumpfile=hr_%U.dmp parallel=3

---

数据泵:

可以高速移动数据与元数据的,基于服务器的设备

数据泵具有以下特点

可通过DBMS_DATAPUMP调用PL/SQL程序包调用数据泵基础结构。

因此数据泵可以构建自定义的移动数据实用程序。

可提供工具:

expdp

 impdp

           基于web界面

数据泵自动确定要使用的数据访问方法

直接路径或外部表。

如果表结构允许

实现思路:

sqlldr的会生成一个日志,日志记录所有操作,会包含创建外部表的语法

执行sqlldr必须有控制文件

借助EM帮我生成控制文件

然后通过控制文件生成日志,在日志文件找出创建外部表的语法,然后copy执行一次,外部表就创建好

效果:

可以通过建立外部表,通过sqlloader去查看外部的文件,外部文件的更新会适时的通过外部表查看。

实现过程:

首先要创建外部表,外部表的语法复杂,所以想办法复制过来

首先使用命令建立目录对象(建议手工建立)

 create directory d3 as '/u01/d3';

grant read ,write on directory d3 to public;

把文本文件拷贝到d3里

1.txt内容

1,a

2,b

c,c

4,"d"

目的建立外表去访问文本文件的内容?

sqlldr system/oracle data=a.txt control=1.ctl log=1.log bad=1.bad direct=yes

通过这个语法可以创建日志文件,在日志文件里有创建外部表的语法

这个命令需要控制文件,可以通过em来生成控制文件

data movement-->loaddatafromuserfiles-->一路下去,最后的时候选择控制文件信息保留

然后把控制文件拷贝到d3里

执行如下命令,生成日志文件d3.log

sqlldr system/oracle data=a.txt control=1.ctl log=d3.log bad=1.bad external_table =GENERATE_ONLY

查看d3.log

修改表名,这个表就是外部表

CREATE TABLE "extend1"

"A" NUMBER(38),

"B" CHAR(10)

ORGANIZATION external

TYPE oracle_loader

DEFAULT DIRECTORY D3

ACCESS PARAMETERS

RECORDS DELIMITED BY NEWLINE CHARACTERSET US7ASCII

BADFILE 'D3':

'1.bad'

LOGFILE 'd3.log_xt'

READSIZE 1048576

FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' LDRTRIM

REJECT ROWS WITH ALL NULL FIELDS

"A" CHAR(255)

TERMINATED BY "," OPTIONALLY ENCLOSED BY '"',

"B" CHAR(255)

TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'

location

'1.txt'

)REJECT LIMIT UNLIMITED

可以查看表的内容

select * from "extend1";

修改文本文件1.txt的内容,你会看到表的内容一起在变

案例:

使用外部表访问警告日志文件

对DBA来说,最常见一个例子是可以使用外部表来访问警告日志文件

alert_.log或其他跟踪文件,由于警告日志文件存储在服务器上,有时候如果不能直接访问操作系统文件,则可以通过外部表来访问警告日志文件。

1创建目录

create or replace directory bdump

as '/u01/app/oracle/admin/orcl/bdump'

select * from dba_directories;

2创建及访问外部表

create table alert_log(text varchar2(400))

organization external(

type oracle_loader

default directory bdump

access parameters

(records delimited by newline

nobadfile

nodiscardfile

nologfile

location('alert_orcl.log')

reject limit unlimited

/

然后就可以访问警告日志了

select * from alert_log where rownum<9;

也可以通过em访问日志

效果是:

在linux系统上有一个文本文件。

里面有数据

       在oracle可以查看到数据

       当文本文件的数据发生变化的时候,数据库里查看到的内容       也会相应变化。

借助文档是联机丛书

1 conn scott/oracle

create table test (c1 char(20), c2 char(20));

2生成控制文件

cd /u01/waibu

vim a.ctl

LOAD DATA

infile  a.txt

APPEND

INTO TABLE SCOTT.TEST

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'

C1    ,

C2

3执行SQL*ldr命令

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1